软件测试用例设计方法(二)

测试用例设计之正交试验法

一、正交试验法定义

正交实验法:使用已经造好的正交表来安排试验和分析数据的方式。该方法简单易行且计算表格化,应用性较好。

二、正交试验法设计步骤

  • 提取功能说明中的所有因子及明确因子状态

因子:每个能影响实验结果的元素称为因子,该元素的取值称为因子的状态。

  • 对因子加权筛选,生成因素分析表
  • 利用正交表构造测试数据集

三、实例演示

实例之web站点配置
假设有个WEB站点,该站点有大量的服务器和操作系统,并且有很多具有各种插件的浏览器浏览:
Web浏览器:netscape6.2、IE6.0、opera4.0
插件:无、RealPlayer、MediaPlayer
应用服务器:IIS、Apache、Netscape Enterprise
操作系统:Windows 2000、Windows NT、Linux
分析:
因子1:web浏览器
因子状态:①netscape6.2②IE6.0③opera4.0
因子2:插件
因子状态:①无②RealPlayer③MediaPlayer
因子3:应用服务器
因子状态:①IIS②Apache③Netscape Enterprise
因子4:操作系统
因子状态:①Windows 2000②Windows NT③Linux
以上4因子3状态,要套用L9正交表,强度S=2

用例编号 Web浏览器 插件 应用服务器 操作系统
1 ①netscape6.2 ①无 ①IIS ①Windows 2000
2 ①netscape6.2 ②RealPlayer ②Apache ②Windows NT
3 ①netscape6.2 ③MediaPlayer ③Netscape Enterprise ③Linux
4 ②IE6.0 ①无 ②Apache ③Linux
5 ②IE6.0 ②RealPlayer ③Netscape Enterprise ①Windows 2000
6 ②IE6.0 ③MediaPlayer ①IIS ②Windows NT
7 ③opera4.0 ①无 ③Netscape Enterprise
8 ③opera4.0 ②RealPlayer ①IIS ③Linux
9 ③opera4.0 ③MediaPlayer ②Apache ①Windows 2000

注:因为正交表网上可以找,然后把实例中的因子和因子状态代入就行了。如果是混合型正交表,网上找不到,可以自己写。

四、正交试验法的优点和不足

  1. 生成的用例条数有限且可控,节约了测试工时(如上面例题中,如果用一般测试方法,将会生成3的4次方,也就是81条测试用例,达到全面覆盖,而用正交试验法,只生成了9条测试用例,具有代表性)
  2. 测试用例有一定的覆盖率。
    不足:实用性受限,在实际测试中出现的多因子多状态很可能用到各种各样的混合型正交表,而我们可能找不到这些正交表去套用(会写的话可以自己写)

注:怎么写正交表,会另外写一章来总结。

测试用例设计之功能图法

一、功能图法的定义

功能图适用于具有多种状态,且各个状态具有复杂转换关系的测试目标。
功能图模型由状态迁移图(描述状态转换的图)和逻辑功能模型(描述状态转换的逻辑)构成。
规则:定义了顺序、选择、重复三种规则。

二、从功能图生成测试用例的方法

(1)生成局部测试用例:在每个状态中由因果图生成局部测试用例,局部测试用例由输入数据组合和输出数据构成。
(2)生成测试路径:利用上面的三种规则生成从初始状态到最终状态的测试路径。
(3)生成测试用例:采用条件构造树合成测试路径和局部测试用例,形成从初始状态到最终状态以及每个状态的输入数据组合和输出数据组合的最终用例。

三、状态迁移图的步骤

(1)画出状态迁移图
(2)列出状态-事件表
(3)得到状态转换树
(4)推出测试路径
(5)根据测试路径编写测试用例

四、实例之MP3播放功能

手机中的MP3播放功能如下描述:没有选择MP3曲目时不能按任何键;MP3播放在起点时不能按R键;MP3播放在终点时不能按P键和F键;MP3只有在暂停状态下才可以录音。请用功能图法设计测试用例。
R键倒退,P键播放,F键快进,RC键录音,idle键暂停。
在这里插入图片描述

  1. 建立状态转换图,如图所示
  2. 建立状态事件表,如图所示
    在这里插入图片描述
  3. 建立状态转换树
    在这里插入图片描述
  4. 每条路径都对应一个测试用例,根据状态树编写测试用例
用例编号 测试标题 重要级别 预置条件 操作步骤 预期输出
MOBILE_ST_MP3_PLAY_001 在暂停状态时,先录音后暂停 已选定MP3曲目且在暂停状态 1.按RC键
2.按idle键
先正常录音后暂停
MOBILE_ST_MP3_PLAY_002 在暂停状态时,先播放后快进 已选定MP3曲目且在暂停状态不在终点 1.按P键
2.按F键
曲目先播放后快进
MOBILE_ST_MP3_PLAY_003 在暂停状态时,先播放后倒退 已选定MP3曲目且在暂停状态不在终点 1.按P键
2.按R键
曲目先播放后倒退
MOBILE_ST_MP3_PLAY_004 在暂停状态时,先播放后暂停 已选定MP3曲目且在暂停状态不在终点 1.按P键
2.按idle键
曲目先播放后暂停
MOBILE_ST_MP3_PLAY_005 在暂停状态时,先快进后播放 已选定MP3曲目且在暂停状态不在终点 1.按F键
2.按P键
曲目先快进后播放
MOBILE_ST_MP3_PLAY_006 在暂停状态时,先快进后倒退 已选定MP3曲目且在暂停状态不在终点 1.按F键
2.按R键
曲目先快进后倒退
MOBILE_ST_MP3_PLAY_007 在暂停状态时,先快进后暂停 已选定MP3曲目且在暂停状态不在终点 1.按F键
2.按idle键
曲目先快进后暂停
MOBILE_ST_MP3_PLAY_008 在暂停状态时,先倒退后快进 已选定MP3曲目且在暂停状态不在起点 1.按R键
2.按F键
曲目先倒退后快进
MOBILE_ST_MP3_PLAY_009 在暂停状态时,先倒退后播放 已选定MP3曲目且在暂停状态不在起点 1.按R键
2.按P键
曲目先倒退后播放
MOBILE_ST_MP3_PLAY_010 在暂停状态时,先倒退后暂停 已选定MP3曲目且在暂停状态不在起点 1.按R键
2.按idle键
曲目先倒退后暂停

测试用例设计之场景法

一、场景法的定义

场景法通过场景来对程序的功能和业务流程进行描述。通过遍历所有的基本流和备选流来遍历整个场景。
场景=基本流+备选流
场景:由一系列相关活动组成,且场景中的活动还能由一系列相关场景组成。
基本流:经过用例的最简单的路径,无任何差错,程序直接从开始执行到结束。
备选流:从基本流或备选流开始,在特定情况下发生,中间走了其他可能性,然后重新回到基本流(如下图中的备选流1和备选流3),或者直接结束用例。(如下图中的备选流4)

二、从基本流和备选流图生成用例

如图所示:
在这里插入图片描述

场景1 基本流→结束用例
场景2 基本流→备选流1→结束用例
场景3 基本流→备选流1→备选流2→结束用例
场景4 基本流→备选流3→结束用例
场景5 基本流→备选流3→备选流1→结束用例
场景6 基本流→备选流3→备选流1→备选流2→结束用例
场景7 基本流→备选流3→备选流4→结束用例
场景8 基本流→备选流4→结束用例

三、场景法设计步骤

  • 根据需求画出基本流和备选流图
  • 根据基本流和备选流图写出所有场景
  • 根据场景写出用例
  • 审核用例,去掉冗余项,并在用例中填上测试数据

四、实例之在线购物系统

实例:用户进入一在线购物网站购物,选购商品后进行购买,这时需要使用账号登录,登录成功后在线支付,生成订单,完成整个购物流程。请用场景法设计测试用例。

基本流 选购商品,登录成功,在线支付,生成订单
备选流1 账号不存在
备选流2 账号密码错误
备选流3 余额不足
备选流4 账户金额为0
由基本流和备选流生成场景
场景1—成功购物 基本流
场景2—账号不存在 基本流→备选流1
场景3—账号密码错误 基本流→备选流2
场景4—账户余额不足 基本流→备选流3
场景5—账户金额为0 基本流→备选流4

设计用例==(V:有效;I:无效;n/a:不适合该用例)==

用例ID 场景 账号 密码 余额 预期结果
1 场景1—成功购物 V V V 成功购物
2 场景2—账号不存在 I n/a n/a 提示账号不存在
3 场景3—账号密码错误(账号正确,密码错误) V I n/a 提示账号或密码错误,重新登录
4 场景3—账号密码错误(账号错误,密码正确) I V n/a 提示账号或密码错误,重新登录
5 场景4—账户余额不足 V V I 提示余额不足,请充值
6 场景5—账户金额为0 V V I 提示余额不足,请充值

审核用例,去掉冗余,并填入测试数据(场景4和场景5进行了合并)

用例ID 场景 账号 密码 余额 预期结果
1 场景1—成功购物 Amy 123456 2000 成功购物
2 场景2—账号不存在 Jone n/a n/a 提示账号不存在
3 场景3—账号密码错误(账号正确,密码错误) Amy 111111 n/a 提示账号或密码错误,重新登录
4 场景3—账号密码错误(账号错误,密码正确) Amys 123456 n/a 提示账号或密码错误,重新登录
5 场景4—账户余额不足 Amy 123456 0 提示余额不足,请充值

五、场景法适用场景

场景法适用用于解决业务流程清晰的系统或功能。

猜你喜欢

转载自blog.csdn.net/u011090984/article/details/91388145