测试用例设计

测试用例基础

1.测试用例概念(测什么?怎么测?)

  • 测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期的结果
  • 通过大量的测试用例来检验软件的运行效果(作用)
  • 它是知道测试工作进行的依据

2.测试用例示例(雪球APP)

  

3.测试用例组成要素

   用例编号、模块、测试点(测试标题)、优先级、前提条件、测试步骤、期望结果(预期结果)、实际结果

4.测试用例的优先级(测试用例根据重要性分成一定的等级)

  • P0:核心功能(冒烟测试)
  • P1:高优先级,基本功能测试,重要的错误、边界测试
  • P2:中优先级,异常测试,边界测试,中断、网络、容错性、UI测试
  • P3:低优先级,性能、兼容性、安全性、可用性等等

5.测试用例设计工具

   xmind 快捷键

    • tab:新建子主题
    • enter:新建兄弟主题(插入当前主题的后面)
    • shift + enter:新建兄弟主题(插入当前主题的前面)

6.测试用例的作用

  • 指导测试的实施
  • 规划测试数据的准备
  • 编写测试脚本的“设计规格说明书”
  • 评估测试结果的度量基准
  • 分析缺陷的标准

测试用例设计方法——黑盒测试用例设计

1.等价类划分法

  1.1 概念

  • 用户所有可能输入的数据,划分成了若干个子集,然后从每一个子集中选取少数具有代表性的数据作为测试用例,这种测试用例我们称为“等价类划分法”。
  • 等价类划分是一种重要的、常用的黑盒测试方法,不需要考虑程序的内部结构,只需要考虑程序的输入规格即可。它将不能穷尽的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。
  • 在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试结果。

  1.2 分类

  • 有效等价类:指符合《需求文档》,输入合理的数据集合
  • 无效等价类:指不符合《需求文档》,输入不合理的数据集合

  1.3  等价类设计步骤

  1. 先划分等价类:找出所有可能的分类
  2. 确定有效等价类:需求中的条件
  3. 确定无效等价类:与条件相反的情况,再找到特殊情况
  4. 从各个分类中挑选测试用例数据

         在确立了等价类之后,可按下表的形式列出所有划分出的等价类表

         

        加法计算器:计算1---100的整数之和(包含1和100)   

        示例:

            ① 通过等价类表分析有效等价类和无效等价类

                 

            ② 挑选数据完成测试用例设计

                 

2.边界值分析法

   2.1 为什么用边界值分析法?

  • 大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。
  • 边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。
  • 边界值分析法是作为对等价类划分法的补充,测试用例来自等价类的边界。

   2.2 示例

      输入的参数值必须大于等于0同时小于100的整数(0<=参数<100)

      边界值分析(前提条件:整数)

          正确代码:num>-1 或 num>=0         num<100 或 num<=99

          错误代码:num>=-1 或 num>0 或 num>=1        num<=101 或 num<101 或 num<=100

       边界值确定

  • 边界上的点(0,100)
  • 边界值两边的点(-1,0,1 )(99,100,101)

    2.3 边界值总结

  • 确定边界情况
  • 选取正好等于,刚刚好大于或刚刚好小于边界值作为测试数据
  • 确定各个值的等价类

3.错误推测法概念

   3.1 概念

  • 指利用直觉和经验猜测出出错的可能类型,有针对性的列举出程序中所有可能的错误和容易发生错误的情况
  • 列举出可能犯的错误或错误易发生的清单,然后根据清单编写测试用例
  • 这种方法很多程度是凭经验进行的

    采用错误推测法,最重要的是要思考和分析测试对象的各个方面,多参考以前发现的Bug的相关数据、总结的经验,个人多考虑异常的情况、反面的情况、特殊的输入,以一个攻击者的态度对待程序,才能够设计出比较完善的测试用例

4.因果图法

   4.1 定义

  • 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
  • 制约关系、组合关系
  • 什么样的输入组合--什么样的输出结果

    “因”——输入条件

    “果”——输出结果

   4.2 适用场景

  • 描述多种条件的组合
  • 产生多个动作

   4.3 基本符号

 

   4.4 约束条件

 

 

 

  • 互斥:原因只能有一个成立,但是可以都不成立
  • 包含:原因至少有一个成立,可以多选,但是不能不选
  • 屏蔽:对于结果的约束。当 a 成立时,要求 b 必须不成立
  • 唯一:原因有且仅有一个成立
  • 要求:如果 a 成立,要求 b 也必须成立

   4.5 基本步骤

  1. 找出所有的输入条件(因)
  2. 找出所有的输出条件(果)
  3. 明确所有输入条件之间的制约关系以及组合关系
  4. 明确所有输出条件之间的制约关系以及组合关系
  5. 找出什么样的输入条件组合会产生哪种输出结果
  6. 把因果图转换成判定表
  7. 为判定表中的每一列表示的情况设计测试用例

   4.6 示例

     交通一卡通自动充值软件系统需求:系统只接收 50 或 100 元纸币,一次只能使用一张纸币,一次充值金额只能为 50 元或 100 元

  • 若按 50 元按钮,并选择充值 50 元,完成充值后退卡,提示充值成功
  • 若按 50 元按钮,并选择充值 100 元,提示输入金额不足,并退回 50 元
  • 若按 100 元按钮,并选择充值 50 元,完成充值后退卡,提示充值成功,找零 50 元
  • 若按 100 元按钮,并选择充值 100 元,完成充值后退卡,提示充值成功
  • 若按投币按钮后在规定时间内不选择充值按钮,提示错误
  • 若选择充值按钮后不按投币按钮,提示错误

     

 

 

     

 

 

 5.判定表法

  因果图只是一种辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例。因为画因果图非常麻烦,影响做事效率,所以可以直接写判定表,进而编写测试用例。

    5.1 组成

  • 条件桩:问题的所有条件
  • 动作桩:问题的所有输出
  • 条件项:针对条件桩的取值
  • 动作项:条件项的各种取值情况下的输出结果

 

 

    5.2 设计步骤

  1. 列出所有的条件桩和动作桩
  2. 确定规则数:条件取值个数^条件数
  3. 填入条件项
  4. 填入动作项。得到初始判定表
  5. 简化判定表

    5.3 示例

      判断三角形
      输入三个正整数 a、b、c,分别作为三角形的三条边,通过程序判断三条边是否能构成三角形?
      如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形、一般三角形)。

      

 

 

 

 

                                                                                           简化为

 

                                                                                               

                   

 

例:

 

 

6.场景法

   6.1 概述

     场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程。

   6.2 用例场景定义

     基本流:按照正确的业务流程来实现的一条操作路径

     备选流:导致程序出现错误的操作流程

       

 

 

    6.2 设计步骤

  1. 根据需求规格说明,画出功能模块流程图;
  2. 根据流程图,描述出程序的基本流及备选流;
  3. 根据基本流和备选流生成不同的场景,构造场景列表;
  4. 对每一个场景生成相应的测试用例;
  5. 对生成的所有测试用例重新复审,去掉多余的测试用例;
  6. 测试用例确定后,为每一个测试用例确定测试数据值。

   6.3 示例

     淘宝网购物

   

 

 

 

     

 确定基本流和备选流

  • 基本流:进入淘宝,进行注册,浏览物品,选择物品购买,直接购买,是会员,填写验证码,付款支付宝,等待收货,确定收货
  • 备选流
    • 没有注册,填写注册信息,验证通过
    • 没有注册,填写注册信息,验证未通过
    • 加入购物车,直接购买
    • 加入购物车,继续选购
    • 不是会员,填写注册信息,通过验证
    • 不是会员,填写注册信息,未通过验证

7.正交法(不常用)

   正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率。当可能的输入数据或者输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法。

   7.1 局限性

  • 目前常见的正交排列表只有固定的几种
  • 即使是已有的正交排列表,基本都要求每个控件中取值的个数要相等,这在实际软件中很少遇到

测试方法选择

  • 需要输入数据的地方,考虑采用等价类划分法,将无限测试变成有限测试
  • 在任何情况下都必须采用边界值分析法
  • 关注它的主要功能和业务流程、业务逻辑是否正确实现,考虑使用场景法
  • 如果程序的功能说明中含有输入条件的组合情况,则一开始就应考虑选用因果图和判定表法
  • 对于参数配置类的软件,需要考虑参数之间的组合情况,考虑使用正交排列法选择较少的组合方式
  • 采用错误推断法再追加测试用例

测试用例的粒度

  • 测试用例可以写得很简单,也可以写得很复杂
  • 最简单的测试用例是测试的纲要,仅仅指出要测试的内容
  • 测试用例写得过于简单,则可能失去了测试用例的意义
  • 最复杂的测试用例会指定输入的每项数据,期待的结果即检验方法,具体到界面元素的操作步骤,指定测试的方法和工具等
  • 测试用例写得过于复杂或详细,会带来两个问题:一个是效率问题,另一个是维护成本问题。另外,测试用例设计得过于详细,留给测试执行人员的思考空间就比较少,容易限制测试人员的思维

测试用例综合设计实践

  雪球登录

  • 帐号是手机号或者邮箱
  • 手机号仅限制为国内常用的号段
  • 密码必须为 数字+英文 的形式,字段为 8-12 个字符
  • 点击登录按钮,发起登录请求
  • 请求成功,跳转到首页
  • 点击忘记密码跳转到找回密码页
  测试步骤
  1. 划分功能模块
  2. 正向功能验证
  3. 单个功能项验证
  4. 功能之间交互验证
  5. 隐形需求
  设计工具
  1. xmind 设计测试用例:重点写出测试点
  2. excel 设计测试用例:内容要全面

 

 

 

 

 

posted @ 2021-04-29 16:25  独角兽w(゚Д゚)w  阅读(436)  评论(0)    收藏  举报