一、边界值设计方法
A、定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,边界值分析将一定程度的异常测试加入;通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
B、什么情况下用:属于基本测试设计方法,经验表明,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。
C、具体方法:最大数、最小数、比最大数多1、比最小数少1、中间数做为测试数据;
常见的边界值
1、对16-bit 的整数而言 32767 和 -32768 是边界
2、屏幕上光标在最左上、最右下位置
3、报表的第一行和最后一行
4、数组元素的第一个和最后一个
5、循环的第 0 次、第 1 次和倒数第 2 次、最后一次
6、边界类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、 空/满等
外部边界值 | 数据边界值 | 连接大小、超时时间、重量、大小、速度、尺寸等 |
字符边界值 | 名称、描述、字符、位置、方位、空间等 | |
内部边界值 | 长度边界值 | 针对URL有分析和处理时,需覆盖URL长度最大值测试 |
尝试次数边界值 | ||
基本方 | 边界基本方 | 最小值、最小值-1、中间值、最大值、最大值+1;包括最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等 |
二、容量类设计方法
A、定义:重点关注数据量,容量类设计方法其实应该是边界值的一种:最大值,但还是有一些区别,比如引用、组合等,另外由于产品线容量类出现的问题较多,所有把容量类单独梳理出来,形成一种设计方法;
B、什么情况下用:容量类型需分析,包括内部、外部、组合、合并后容量;
C、具体方法:基本的测试设计方法,数据量情况验证最后一条、中间某一条的业务访问;
容量方式 | 最大容量 | 单个项的最大容量,IP组的最大个数为200个;每个IP组中的IP个数最大为200个 |
单一容量 | IP组的最大个数为200个;单一IP组中的IP个数最大为200个 | |
引用容量 | 最大IP组中最大的IP个数为: 最大IP组数200个*每组最大IP个数200个=40000 | |
组合容量 | 名称、描述、规则、参数、各个选项都满配的情况 | |
容量类型 | 外部容量 | 可以从页面看到的容量测试:比如规则、配置项等 |
内部容量 | 主要从内部程序和逻辑实现来看:比如哈希、连接数、超时时间、尝试次数等;如:IP组配置满配时,首先进行相交IP合并,最终下发到驱动中的不是真正的满配 | |
基本方 | 容量基本方 | 要验证最后一条、中间某一条的业务访问; |
二、等价类设计方法
A、定义:把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一个子集中选取少数具有代表性的数据,也可以叫做域分析法;输出域分析法在逻辑法中体现。所以分为有效等价类、无效等价类,因为软件不仅要能接收合理的数据,也要能经受意外的考验。
B、什么情况下用:数据等价、输入等价、类型等价,协议等价等等;
专科、本科、硕士、博士算有效等价,成教算无效等价类;
C、具体方法:划分为互不相交的一组子集,而子集合并是整个集合;子集互不相交:保证无冗余性;
划分依据 | 基于类型划分 | 基于不同类型的划分,如:TCP、UDP、ICMP、ALL;不同的兼容性覆盖、浏览器覆盖 |
基于输入内容 | 输入内容的不同进行划分,如:文字、字母、数字 | |
有效等价类(支持类) | 例子:用户名范围为1-95字节的英文字母,有效等价类为1-95间的英文大小写字母; | |
无效等价类(非支持类) | 例子:无效等价类为直接提交、大于95字节的英文字母;处于1-95字节的非英文字母,如:汉字、数字等 |
四、错误推测方法
A、定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法,类似我们的设计经验库;
B、什么情况下用:通过方法设计用例,通过经验补充用例;
C、具体方法:用等价分类法和边界值分析法设计过测试用例的基础上,用猜错法补充一些测试用例,例如:
文件上传和下载要覆盖4G和4G以上文件; |
针对规则页面要做容量限制,并给出提示信息; |
涉及到下发规则、客户端操作,必须各个选项和小功能满配下发最大规则容量测试;同时需考虑页面和后台的效率; |
当上传和下载文件时要检查MD5。 |
验证页面各选项默认显示和提示信息时,检查前需删除IE缓存进行检查:语言描述准确,无错别字、提示提示与实际事实一致; |
模块的配置文件、调试日志、临时生成文件的存放位置需做检查,比如:配置文件要入到/etc目录下; |
各模块在测试过程中要关注服务日志和管理日志要需满足日志规范,且日志显示正确,并有用例覆盖; |
下载和上传数据一段时间后,查看数据传输过程中是否会出现抖动,比如流控、上网加速、单边加速等模块; |
排序要覆盖单列、多列排序,排序后结果要检查某一个行数据准确性,保证排序后数据准确性不受影响; |
五、正交设计方法
A、定义:正交设计方法:主要解决多个变化因子,多个变化参数的测试设计方法,科学的提高用例覆盖率和效率。就是从大量的实验中选择住有代表性的、适量的点,合理的安排实验,正交试验法是一种用来测试组合的方法,所谓正交试验法,就是从大量的试验点中挑选出适量的,有代表性的点,合理的安排试验。对任意多个因素取值组合实施“等概率”覆盖,以便我们得到的实验样本均匀的分布在样本空间。有时因子和参数比较多时,可以给因子和参数定权重,使最后生成的测试用例集缩减到我们可以接受的范围;
组合设计方法:就是确保每一个参数的每一个值只需要和其他参数至少配对一次;组合分析利于快速的生成测试用例,不需要对测试对象有深刻的了解,每个参数的重要性、权重等。
尤其对规则类、覆盖类(多样性覆盖)、配置类、选项类效果最好;
B、什么情况下用:规则内参数、配置参数、设置参数、数据查询等;
C、具体方法:
例子:假设一个web站点,有大量的服务器和操作系统,并支持多种浏览器,如下所示,纵向是Web站点所有因子,横向是每一个因子的状态;比如单边加速;正常覆盖要用3*2*3*3=54个用例覆盖;
因子 | 因子的状态 | ||
Web浏览器 | IE8.0 | FireFox3.6 | Opera10 |
插件 | ReadPlayer | MediaPlayer | |
应用服务器 | IIS | Apache | Weblogic |
操作系统 | Windows2000 | Windows NT | Linux |
从上面标个可以看出,各个因子的不同状态之间存在着组合的关系,上面的表格是4因子,三状态,因此使用4因子3状态正交表:
可以看到,在上面的正交表中,不同因子的每一个状态有组合了两次,且没有任何重复,这就是正交表的数学算法,在一定程度上节省了测试用例的数量。
Web浏览器 | 插件 | 应用服务器 | 操作系统 |
FireFox3.6 | ReadPlayer | Weblogic | Windows2000 |
Opera10 | MediaPlayer | IIS | Windows NT |
Opera10 | ReadPlayer | Apache | Windows2000 |
IE8.0 | MediaPlayer | Weblogic | Linux |
IE8.0 | ReadPlayer | Apache | Windows NT |
FireFox3.6 | MediaPlayer | Weblogic | Windows NT |
FireFox3.6 | ReadPlayer | IIS | Linux |
FireFox3.6 | MediaPlayer | Apache | Linux |
Opera10 | MediaPlayer | Weblogic | Linux |
IE8.0 | MediaPlayer | IIS | Windows2000 |
Allpairs 组合:
Web浏览器 | 插件 | 应用服务器 | 操作系统 |
IE8.0 | ReadPlayer | IIS | Windows2000 |
IE8.0 | MediaPlayer | Apache | Windows NT |
IE8.0 | 无 | Weblogic | Linux |
FireFox3.6 | ReadPlayer | Linux | Linux |
FireFox3.6 | MediaPlayer | IIS | Windows2000 |
FireFox3.6 | 无 | IIS | Windows NT |
Opera10 | ReadPlayer | Weblogic | Windows NT |
Opera10 | MediaPlayer | IIS | Linux |
Opera10 | 无 | Apache | Windows2000 |
FireFox3.6 | MediaPlayer | Weblogic | Windows2000 |
AP防火墙ACL模块:
源和目的 | 用户发起 | 用户接收 | ||
服务 | 服务组 | 自定义服务 | 预定义服务 | Any |
时间组 | Always | 时间组 | ||
动作 | 允许 | 拒绝 | 丢包 | |
流量优先级 | 高 | 中 | 低 |
组合法:得到14个用例;
源和目的 | 服务 | 时间组 | 动作 | 流量优先级 |
用户发起 | Any | Always | 允许 | 中 |
用户接收 | 服务组 | 时间组 | 丢包 | 高 |
用户接收 | 自定义服务 | Always | 拒绝 | 高 |
用户发起 | Any | 时间组 | 拒绝 | 低 |
用户接收 | 服务组 | Always | 允许 | 低 |
用户发起 | Any | Always | 丢包 | 高 |
用户发起 | 预定义服务 | 时间组 | 允许 | 高 |
用户接收 | 预定义服务 | Always | 拒绝 | 中 |
用户发起 | 自定义服务 | 时间组 | 丢包 | 低 |
用户发起 | 预定义服务 | 时间组 | 丢包 | 中 |
用户发起 | 服务组 | 时间组 | 拒绝 | 中 |
用户接收 | 预定义服务 | Always | 允许 | 低 |
用户发起 | 自定义服务 | 时间组 | 允许 | 中 |
用户接收 | Any | Always | 拒绝 | 低 |
正交表:L16_4_5正交表, 得到如下:
二点法:采用相邻两两组合的方式进行覆盖,要确保所有线路全覆盖,也可以有效减少用例数量,各位也可以试用。
六、匹配方法
A、定义:用正交和组合设计方法可以覆盖各种参数,但不能覆盖规则与规则的匹配测试,匹配出现的问题比较多,匹配方法重点是多规则的匹配和配合。
B、什么情况下用:涉及到规则测试的模块
C、具体方法:首先要分析规则下发逻辑,是单独下发,还是合并下发,找到关键切入点,匹配方法采用空间数据处理而来。
同时要关注多规则的匹配,因为从用户场景收集来看,客户的规则和策略配置很复杂,针对不同的IP,不同的组,不同的应用,等都配置了,而我们内部的测试往往覆盖一条或容量测试是不够的;
七、其他设计方法
其他设计方法是做为以上基本方法补充,每种方法的使用不一。
逻辑性设计:逻辑设计方法是针对测试项进行的逻辑测试设计,与逻辑分析方法不一样,逻辑的分析方法往往分析出来的逻辑项或测试点,不能全部覆盖,比如需求。
输入输出 | 覆盖输入类型,输出类型;包括数据类型、操作方式等,可用等价类覆盖;通过输出反推输入;比如获取服务器测试,获取服务器测试结果有成功,失败,有哪些情况会导致这样的结果; |
方向性 | 覆盖不同的数据流方向,比如LAN-WAN、本地数据、WAN-LAN、VPN-LAN、LAN-DMZ等 |
协议一致性 | 测试协议的实现是否符合协议规范,包含各个字段,真实环境,分片,组包等 |
关联类设计:关联性分析是针对逻辑进行分析,往往会导致需求的关联遗漏;
内关联(内部分析) | 配置文件关联 | 对配置文件的各个字段进行覆盖,也需明确模块的默认配置项 |
调试方式关联 | 对模块内相关调试方法、数据查看接口、调试开关接口、日志输出等方式进行覆盖 | |
定时执行关联 | 对模块涉及定制执行的操作、定时执行的脚本进行覆盖 | |
外关联 | 与模块的关联 | 与各业务逻辑处理模块的关联,比如邮件告警、短信告警、内置库升级、数据中心 |
与系统的关联 | 与系统和网络配置中各功能的关联,比如双机、服务日志、管理日志、用户权限 | |
与硬件的关联 | 硬件平台的不同,配置和相关参数定义会不同,比如内存,网口,网口类型; |
恢复类设计:是针对异常情况下设备能正常处理业务,不影响客户的业务;
硬件类 | 设备重启 | 针对模块而言:业务正常的情况下重启和断电设备,恢复后验证业务的正确性 |
网络中断 | 针对模块而言:业务正常的情况下中断网络,网络恢复后验证业务的正确性 | |
服务类 | 服务重启 | 针对模块而言:业务正常的情况下重启服务,恢复后验证业务的正确性 |
杀死程序 | 针对模块而言:业务正常的情况下杀死程序,程序拉起后验证业务的正确性 |
多样类设计:针对输入的多样性覆盖,经验出问题的地方;
非法字符多样性 | 特殊字符输入测试需要覆盖靠键盘无法输入的非法字符,特别关注名称、描述、导出、导入、复制、查询等,需进行功能验证;比如:o.php蕲撅蕲撅蕲撅、ㄨ闂殑SSL VPN绯荤粺姝彈鍒颁腑闂翠汉鏀诲嚮。 |
空格多样性 | 可输入的地方:字符前后、中间、首尾包括一个或多个连续空格,如:“ 知道”、“知 道”、“知道 ” |
特殊字符多样性 | 所有涉及特殊字符的测试都必须要覆盖键盘上所有可输入的特殊字符,包括中文全角/半角、英文全角/半角、空值;用户输入错误信息,比如特殊字符时,不能引起程序,设备资源等异常,页面回显要正确,特别是><的输入需要特别留意。例子:URL测试时覆盖键盘上所有可输入的特殊字符,比如%、/、?、&、_、=、#、+; |
正反类设计:针对结果进行对比结果,以保持结果的正确性。
对比依据 | 开和关对比 | 开关上网加速功能,观察对外网带宽占用的影响 |
启用和禁用对比 | 功能启用和禁用的对比 | |
匹配和不匹配对比 | 规则的匹配和不匹配对比 | |
数据一致性对比 | 例子:将DC的IM日志导出到xls文件中,对比页面直接查询到的日志条数与文件导出后的日志条数是否相等 | |
支持与不支持对比 | 除了要覆盖支持的内容,也要覆盖不支持的内容,验证目的是不会出现其他异常;比如:升级支持哪些版本,不支持哪些版本,不支持要限制 | |
效果对比 | 加速效果对比 | 例子:开关上网加速对外网带宽的影响,开启加速,在有缓存的情况下,内网用户得到页面的速度更快,关闭加速,内网用户得到页面的速度比开启加速要慢 |
用户体验对比 | 例子:开关流控对用户流量的影响;直接访问服务器与过设备访问服务器的比较 | |
与第三方对比 | 例子:设备上显示的数据与第三方显示的数据对比 |