测试用例的设计方法

  categories:资料  tags:  author:

来源:互联网

等价类划分方法:

一.方法简介
1.定义
是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类:
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
1)有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准:
1)完备测试、避免冗余;
2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
3)并是整个集合:完备性;
4)子集互不相交:保证一种形式的无冗余性;
5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到”相同的执行路径”。

4.划分等价类的方法
1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;

wps_clip_image-28567[3][1]

2)在输入条件规定了输入值的集合或者规定了”必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类;
3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
6)在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
5.设计测试用例
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:
1)为每一个等价类规定一个唯一的编号;
2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
二.实战演习
1.某程序规定:”输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … … 阅读全文

企鹅王国

  categories:儿童作品  author:

image

天气多好啊! 今天正是上学上班的好天气。开会啦, 开会啦!大家都那里开会,哎呀我的宝宝不见了,企鹅呜呜的哭了, 企鹅宝宝也呜呜的哭了,咦妈妈,妈妈,他疯狂的跑了过去, 找到了妈妈。… 阅读全文

A/B测试:实现方法

  categories:资料  tags:  author:

来源:http://www.aliued.cn/2010/09/27/ab-testing-realization-method.html

A/B Testing 实现方法

上文介绍了 A/B 测试的基本概念,接下来我们继续探讨如何实现 A/B 测试。

我们先来看一个图:

A/B testing 部署概念图

(注:感谢Algo提供本图。)

上图展示了 A/B 测试的实现原理。从左到右,四条较粗的竖线代表了 A/B 测试中的四个关键角色:客户端(Client)、服务器(Server)、数据层(Data)、数据仓库(Data Warehouse)。从上到下代表了三种访问形式:无 A/B 测试的普通访问流程(Non AB test)、基于后端的 A/B 测试访问流程(Back-end AB test)、基于前端的 A/B 测试访问流程(Front-end AB test)。

一般情况下,用户在一次浏览中,会从客户端(Client)发起一个请求,这个请求被传到了服务器(Server),服务器的后台程序根据计算,得出要给用户返回什么内容(Data),同时向数据仓库(Data Warehouse)添加一条打点信息,记录本次访问的相关信息。这个过程也就是图上横向的流程。数据仓库收集到足够的数据之后,就可以开始进行分析(Analytics)了,这也即是图中右上角的部分。

A/B 测试需要将多个不同的版本展现给不同的用户,即需要一个“分流”的环节。从上图中我们可以看到,分流可以在客户端做,也可以在服务器端做。传统的 A/B 测试一般是在服务端分流的,即基于后端的 A/B 测试(Back-end AB test),当用户的请求到达服务器时,服务器根据一定的规则,给不同的用户返回不同的版本,同时记录数据的工作也在服务端完成。

基于后端的 A/B 测试技术实现上稍微简单一些,不过缺点是需要技术部工程资源介入,另外收集到的数据通常是比较宏观的PV(Page … 阅读全文

HAProxy的安装和部署

  categories:资料  tags:  author:

考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统,HAProxy的配置和使用还是比较简单的。
下面是自己安装和部署haproxy的记录,比较重要的一点是解决了haproxy + syslog-ng的日志输出问题。
PS: 这个问题费了我好大神:-|

PLATFORM: SUSE Linux Enterprise Server 11 (x86_64)

1. haproxy的编译安装

获取haproxy的源代码
官方地址:http://haproxy.1wt.eu/
目前最新的版本:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz

命令:

wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz

考虑到版本的更新,具体的安装属性可能会稍有改变,建议在安装前可以大致浏览下haproxy目录下的README和Makefile两个文件。
编译haproxy
进入解压后的haproxy的目录,用下列命令进行编译:

make TARGET=os ARCH=arch CPU=cpu USE_xxx=1 …

这里着重说明几个常用的选项。

TARGET
指定对目标操作系统在编译的时候进行优化,可选择如下值之一:
Generic, linux22, linux24, linux24e, linux26, solaris, freebsd, … 阅读全文

linux下利用Haproxy和keepalived实现简单负载均衡

  categories:linux资料  tags:  author:

架构拓扑图如下:
wps_clip_image-2439[3][1]
haproxy
VIP:  192.168.1.150
Master:192.168.1.10
Slave: 192.168.1.11
之间用keepalived实现HA
webserver1:192.168.1.101
webserver2:192.168.1.102
webserver3:192.168.1.103
webserver4:192.168.1.104
1.下载:

#wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.4.tar.gz

2.解压安装

#tar  –zxvf  haproxy-1.3.14.4.tar.gz
#tar zxvf haproxy-1.3.14.4..tar.gz
#mv  haproxy-1.3.14.4  haproxy
#cd haproxy
#make TARGET=linux26

(2.4内核版本 make TARGET=linux24
freebsd  make  TARGET=freebsd
solaris系统  make TARGET=solaris CPU=ultrasparc REGEX=static-pcre)… 阅读全文

ngx_http_spdy_module模块基本指令整理

  categories:资料  author:

原创文章,转载请指明出处并保留原文url地址

本文主要针对nginx的ngx_http_spdy_module模块做简单介绍,本文具体包括如下指令:spdy_headers_comp

 

ngx_http_spdy_module模块对SPDY协议提供了实验支持。当前,SPDY协议的草案2被实现。

这个模块不是内建模块,需要通过–with-http_spdy_module指令制定编译选项。

已知错误

该模块是实验目的,后果自负。

当前版本支持SPDY协议未实现“服务器推送”。

SPDY的连接请求不能速率限制。

Example Configuration

    server {

        listen 443 ssl spdy;

        ssl_certificate server.crt;

        ssl_certificate_key server.key;

        …

    }

注意为了再相同端口同时支持https及spdy协议,OpenSSL库应该支持“Next Protocol Negotiation” TLS扩展功能, 这个功能在OpenSSL以后开始支持。

Nginx原文:

The ngx_http_spdy_module module provides experimental … 阅读全文

commview使用教程

  categories:资料  author:

来源:互联网

1报文捕获解析

1.1 捕获面板

报文捕获功能可以在报文捕获面板中进行完成,如下是捕获面板的功能图:图中显示的是处于开始状态的面板

wps_clip_image-10878[3][1]

IP地址别名:

wps_clip_image-11239[3][1]

wps_clip_image-3050[3][1]

wps_clip_image-24151[3][1]

right-click on the IP address in question and select SmartWhois: 

wps_clip_image-29215[3][1]

1.2 捕获报文查看

软件提供了强大的分析能力和解码功能。如下图所示,对于捕获的报文提供了一个Expert专家分析系统进行分析,还有解码选项及图形和表格的统计信息。

解码分析

下图是对捕获报文进行解码的显示,通常分为三部分,目前大部分此类软件结构都采用这种结构显示。对于解码主要要求分析人员对协议比较熟悉,这样才能看懂解析出来的报文。使用该软件是很简单的事情,要能够利用软件解码分析来解决问题关键是要对各种层次的协议了解的比较透彻。工具软件只是提供一个辅助的手段。

对于MAC地址,软件进行了头部的替换,如00e0fc开头的就替换成Huawei,这样有利于了解网络上各种相关设备的制造厂商信息。

功能是按照过滤器设置的过滤规则进行数据的捕获或显示。

过滤器可以根据物理地址或IP地址和协议选择进行组合筛选。

HTTP捕获:

wps_clip_image-11851[3][1]

POP3及登陆信息捕获:

wps_clip_image-2345[3][1]

捕获TCP任务重建:

wps_clip_image-10394[3][1]

wps_clip_image-24472[3][1]

HTML解析:

wps_clip_image-19038[3][1]

统计分析

对于Matrix,Host Table,Portocol Dist. Statistics等提供了丰富的按照地址,协议等内容做了丰富的组合统计,比较简单。

wps_clip_image-11196[3][1]

wps_clip_image-28607[3][1]

wps_clip_image-17362[3][1]

1.3 设置捕获条件

基本的捕获条件有两种:

1、链路层捕获,按源MAC和目的MAC地址进行捕获,输入方式为十六进制连续输入,如:00E0FC123456。

2、IP层捕获,按源IP和目的IP进行捕获。输入方式为点间隔方式,如:10.107.1.1。如果选择IP层捕获条件则ARP等报文将被过滤掉。

wps_clip_image-7664[3][1]

2 数据报文解码详解

阅读全文

数据平台前端缓存技术方案(M/R)

  categories:资料  tags:  author:

1 缓存Memcached(M)

1.1 M的概念

M是高性能的分布式内存缓存服务器,协议简单。通过缓存数据库的查询结果,减少数据库访问次数,提高动态Web应用的速度和扩展性。

M支持下述语言

wps_clip_image-29334[3][1]

1.2 M的设计

1.2.1 M的机制

守护进程机制:UNIX Daemon;Socket事件处理机制:非阻塞、Libevent异步事件处理、Epoll/Kqueue;内存管理机制:Slab内存分配、LRU对象清除、Hash快速检索Item。

内存管理中,Slab中分成小单位Chunk,Chunk中存有实际数据Item。下述是M的Slab内存结构图和分配实例图。

wps_clip_image-10708[3][1]

Slab内存结构图

wps_clip_image-16413[3][1]

Slab内存分配实例图

wps_clip_image-26154[3][1]

Slab计算占用内存图

wps_clip_image-8825[3][1]

Item数据存储格式图

1.2.2 M的架构设计

M的设计遵从原则是,首次访问从RDBMS中取得数据,按一定规则保存到M后,第二次访问从M中取得数据显示到浏览器页面中。

wps_clip_image-26264[3][1]

M架构层次图

M的服务端并没有分布式功能,各个服务器之间没有互相通信以共享信息。M的分布式完全取决于客户端的实现,如下图所示。

wps_clip_image-25027[3][1]

M使用说明图

如需要在M中保存键名为“tokyo”的数据时,通过客户端应用程序的算法,根据Key来决定选择哪个服务器节点进行存储。服务器选定之后,命令其保存键名“tokyo”和键值“data”。

wps_clip_image-16791[3][1]

Set实例图

如需要在M中获取键名为“tokyo”的数据时。把键名“tokyo”传给客户端函数库,通过和数据保存相同的算法,根据Key选择服务器节点。只要算法一致,就能选对服务器,发送命令取得键值“data”。

wps_clip_image-30287[3][1]

Get实例图

1.3 M的客户端算法

1.3.1 余数分散

根据服务器台数的余数进行分散,求得Key的整数Hash值H,除以服务器的台数N,由余数指向选中服务器,即H%N。

算法的数据分散性比较优秀,但不足的是当添加/移除服务器时(包括服务器Down机事件),缓存重组的代价相当大。因为添加/移除服务器后,余数必定发生改变,客户端在获取数据时,就无法通过算法获取和保存时相同的服务器,严重影响了缓存的命中率。大部分负载会在事件发生的同时,增大数据库的压力。

1.3.2 一致性哈希

一致性哈希算法,Consistent Hashing是一种分布式算法,常用于负载均衡。M 客户端选择这种算法,解决将Key-Value均匀分配到众多M 服务器上的问题。它可以取代传统的取模操作,解决了上述取模操作无法应对增删M 服务器所遇到的问题。… 阅读全文

利用LVS+Keepalived 实现高性能高可用负载均衡

  categories:linux资料  author:

来源:互联网

背景:

        随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。

一. LVS+Keepalived 介绍

1. LVS

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);

八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

2. Keepalvied

Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现

二. 网站负载均衡拓朴图

 

image[2][1]

 

三、配置IP

LVS(master)增加一片网卡:

eth0:172.24.100.6

eth1:202.168.128.101

LVS(backup)增加一片网卡:

eh0:172.24.100.7

eh1:202.168.128.111

对外虚拟IP:202.168.128.202

对内虚拟IP:172.24.100.70

四. 安装LVS和Keepalvied软件包

     #lsmod | rep ip_vs

#uname -r … 阅读全文

ngx_http_userid_module模块基本指令整理

  categories:nginx  author:

原创文章,转载请指明出处并保留原文url地址

本文主要针对nginx的ngx_http_userid_module模块做简单介绍,本文具体包括如下指令:userid,userid_domain,userid_expires,userid_mark,userid_name,userid_p3p,userid_path,userid_service

ngx_http_userid_module模块为标示客户端设置合适的cookies。接受和设置的cookies能通过内嵌$uid_got 和 $uid_set变量获取,并记录到日志中。这个模块同apache的 mod_uid 模块不兼容。

Example Configuration

    userid         on;

    userid_name    uid;

    userid_domain  example.com;

    userid_path    /;

    userid_expires 365d;

    userid_p3p     ‘policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"';

Nginx原文:

The ngx_http_userid_module module sets cookies suitable … 阅读全文



快乐成长 每天进步一点点