测试基础系列之测试方法 第5讲

、等价类划分法(常用)

1、应用场合(能测什么情况)

   在程序中,有输入数据的地方,可以使用等价类划分法测试,将大量数据划分成若干范围,挑选少量代表数据进行测试。(避免穷举,尽量抽样测试)

2、等价类划分法的测试思想

   将大量数据划分成若干范围(等价类),再从每个范围中挑选少量代表数据进行测试。这样就可以实现从无限的数据中挑选有限数据进行测试,避免穷举,提高测试效率。

3、两个概念:有效等价类 和无效等价类

   有效等价类:对程序来说,正确的、合理的输入数据集合。--验证功能是否正确实现--正向测试

   无效等价类:对程序来说,错误的,不合理的输入数据集合。 --验证健壮性(异常处理能力如何)--反向测试

4、测试步骤(如何测?)

  案例:两位整数加法计算器

      需求:第一个数和第二个数的输入数据都要求是:-99--99之间的整数(大于等于-99并且小于等于99的整数),不能为空。

    

    步骤1:分析需求,初步划分等价类。

     依据:需求。

      信息:

         (1)不能为空

         (2)数据类型:整数

         (3)范围:-99--99之间

     分析结果:

       有效等价类:-99--99之间的整数

       无效等价类:为空、非整数、>99的整数、<-99的整数

 

   步骤2:细化等价类

   依据:不再是需求,而是数据存储的类型或格式。

    (1)细化1:非整数

        小数、字母、特殊字符、中文字符

      

    (2)细化2:-99--99之间的整数(有效)

      细化为:-99--(-1)之间的整数

              0--99之间的整数

 

   原因(了解):由于整数类型在存储时应用“补码”,但是正负整数的补码算法不同,所以正、负整数要分别测试。

 

 提示:无效数据由于通常不需存储,所以一般没有必要分成正、负整数分别测试,但是如果测试者不放心,纠结,那么分别测也无妨。(当成补充测试了)

 

步骤3:将分析的等价类填入《等价类表》--记录测试点

 

步骤4:编写测试用例。

     要求:每个等价类范围至少要挑选一个代表数据进行测试。(要求每个等价类范围都被覆盖,并且每个等价类范围可以挑选多个代表数据测试,不是只能挑1个)

   

    测试方案(思路):每个控件单独测--这个方案比较适合初学者(简单),后续会有优化。

    首先--先测第一个数(有效、无效),此时第二个数填入正确数据

    接下来:再测第二个数,此时第一个数填入正确数据

总结等价类划分法案例

问题1:无效数据的组合情况没有测试

       (1)多个控件无效数据组合的情况

         例如:两个文本框都为空

       (2)一个控件多种无效数据组合的情况

        例如:120.44元 (超范围+小数+中文 多种无效数据组合)

       通常会在最后,适当的对无效数据组合情况进行补充测试。(例如:不放心的,用户常错误操作的,开发之前出过错的,如果时间允许还可以随机挑选组合情况)

问题2:有效数据的测试用例存在冗余(重复)--优化

问题3:如果补充测试发现bug如何解决?

       要审核后提bug,将用例补充到用例集。(用例集是可维护的,逐渐优化。)

二、边界值法

一、说明:在程序开发时,数据的边界是非常容易出错的,所以使用边界值法对容易出错的边界进行重点补充测试。边界值法通常被作为等价类划分法的有力补充。

 二、边界值法的应用场合

    程序中有数据输入的地方,可以使用边界值法,边界值法常常与等价类划分法一起使用,从而形成一套较为完善的测试方案。

    提示:等价类划分法经常与边界值法一起使用,但是也有例外情况,

   例如: 性别 有效:男、女

               无效:男、女以外的其他字符

   此时,只需要等价类划分,不需要边界值法补充

 三、如何划分边界

     1、边界值(最大值-max、最小值-min):

   就是有效等价类和无效等价类的分界点。

 

     2、次边界值(4个)

     就是边界值相邻两边的点。

       有效最小次边界--min+

       无效最小次边界--min-

       有效最大次边界--max-

       无效最大次边界--max+

 

扩展:边界值的常见面试题

     Q1:如果测试时间紧张,应优先测试哪些边界值点?

         如果测试时间紧张应优先测试最小值(min)和最大值(max)

  提示:如果题目中提到优先(或重点)测试“健壮性”,指的是两个无效次边界(min-,max+)

   Q2:是不是所有数据的边界值,在需求文档中都是开始就确定好的?

   不是所有数据的边界值在需求中开始就能确定好,有的边界可以开始就确定,也有的数据边界需要在设计、研发过程中逐渐确定。  

Q3:用边界值法分析以下数据

      (1)年龄:18-60岁

      min:18

      max:60

      min+:19

      max-:59

      min-:17

      max+:61       

 

      (2)地址:1-30个字符    

      min:1个

      max:30个

      min+:2个

      max-:29个

      min-:0个(为空)

      max+:31个

-------------------------------------------------------------        

三、因果图或判定表(决策表)法

   一、应用场合

    界面中有多个控件,不同控件之间存在组合或限制关系,不同的输入组合会对应不同的输出结果。为了理清输入和输出结果之间的对应关系,可以使用因果图或判定表法。

 注意:因果图或判定表法适合测试组合数量较少的情况。

  

二、因果图

      1、因果图法

        因(原因):输入条件

        果(结果):输出结果

       因果图法:就是用画图的方式表示输入条件(因)和输出结果(果)之间的关系。

      2、因果图中的图形符号

      逻辑结果:真(1或true ),假(0,或false)

       (1)基本图形符号(因--果之间的关系)

        1)恒等(相等)--1个输入条件

        如果a=1,那么 b=1

        如果a=0,那么 b=0

         

        2)与 (至少要两个输入条件)

     含义:全1为1,有0为0

        

        

        3)或(至少要两个输入条件)

     含义:全0为0,有1为1

       

        4)非(一个输入条件)--取反(相反)

        如果a=1,那么b=0;

        如果a=0,那么b=1。

          

    (2)限制图像符号(要么因之间,要么果之间) 

       1)互斥(E-exclude)

      含义:如果选只能选择1个,可以不选。

    :单选按钮

         

       2)唯一(O-only)

      含义:只能选1个(不能不选,不能多选)--有且只有一个

      唯一和互斥的区别:互斥可以不选,而唯一必须要选1个。

       

       3)包含(I-include)--多选

          含义:至少选择1个(可以多选,不能不选)

       

       4)要求(R-require)

     含义:如果a=1,那么要求b必须=1;

      如果a=0,那么b的值无所谓(1或0都可以)

         

       5)屏蔽(M-masked)

    含义:如果a=1,那么b必须=0

          如果a=0,那么b的值可以是1也可以是0.

          

 

二、测试步骤

    案例:一卡通充值模拟系统

    步骤:1、分析需求,列出输入条件(因)

       投币:50元、100元

       充值金额:50元、100元

 

          2、列出输出结果(果)

             1)充值成功

             2)退卡

             3)找零

             4)给出错误提示

 

         3、分析输入条件中存在哪些组合和限制情况。

    

      组合:按投币50

            投币100

            充值50

            充值100

            投50+充50

            投50+充100

            投100+充50

            投100+充100

 

      限制:投50+投100

            充50+充100

 

   4、 分析每组组合对应的输出结果,画因果图或填判定表记录。

     真:1或true  假:0或false

     例1:投50元+充50元

         分析后的输出结果:

                充值成功+退卡

     例2:投币50元

         分析后的输出结果:

         错误提示+退卡+找零  

 

   总结:

     判定表的缺点:判定表很容易表示控件之间的组合情况,但是并不容易实现对限制关系(例如:互斥、唯一等)的表示。

    解决方法:在判定表外添加备注,通过文字描述来说明输入条件之间的限制关系。

 

   5、编写测试用例

    每1列代表一种组合情况(测试点)。

    

总结因果图判定表

    1、因果图/判定表法通常用来测试控件之间的组合情况,常会涉及到的控件有单选按钮,复选框,下拉列表(选项较少),按钮等。

   2、因果图/判定表法常常用来测试组合数量较少的情况,如果组合数量较多,要考虑到测试效率问题,就适合选择正交排列法。

   3、判定(决策)表的特点:

       (1)判定表的输入条件顺序无关紧要;

       (2)输出结果的顺序也是无关紧要的;

       (3)先测哪个组合后测哪个组合无关紧要;

       (4)每个组合都是相互独立的,所以先测哪个组合后测哪个组合无关紧要;

   4、判定表(决策表)的组成(了解)

   

四、正交排列法

一、正交表

    

     L:Line   行

     n:行数--正交表的行数(不需要测试人员计算,算好的拿来用即可)

     m:代表每列的最大取值。

     k:代表正交表的列数。

      例:L4(23)

          L8(4×24)

二、正交排列法

   1、应用场合

      界面中有多个控件,每个控件有不同取值,不同控件取值之间存在组合关系,但是组合数量较大(成百上千),此时不应测试所有组合,而应使用正交排列法,挑选最优、最少的组合进行测试。(正交排列法借助正交表筛选最优、最少的组合测试,是一种非常优化的测试方法)

   问题:判定表法和正交排列法的异同?

      (1)判定表法和正交排列法都可以测试控件之间的组合情况。

      (2)判定表法比较适合测试组合数量较少的情况。(测试覆盖全面,但是效率较低)

     (3)正交排列法比较适合测试组合数量较多的情况。(测试效率高,挑选最优、最少的组合测试)

     (4)(了解)正交排列法测试时只需考虑组合情况,而判定表法要考虑组合和限制情况。

   2、正交排列法的测试步骤

      步骤:1、分析需求,列出参与组合的控件和控件的取值。(准备工作)

        列在Excel中

      步骤 :2、 挑选合适的正交表

      挑选正交表的过程,其实就是确定m值和k值的过程。

      m值:测试时,m值由每个控件的取值个数决定。

           m=3

      k值:测试时,k值由参与组合的控件个数决定。

           k=4

   所以:要挑选的正交表是:3的4次幂

  

  步骤3: 应用正交表(映射)

      1) 控件名称--正交表的因子(正交表列标题)替换

      2) 控件取值--正交表对应列的状态(每列的数值:1,2,3)替换

    Excel的查找和替换功能:Ctrl+h

 步骤4:编写测试用例

   每行是一种组合情况,编写用例测试。

3、正交表小结

    (1)正交表挑选最优、最少的组合进行测试。但是没有测试所有组合,存在遗漏bug的风险,所以如果时间允许,应该适当进行补充测试。(提示:不要再减少组合,已经是最少了,再减少会导致覆盖不全,测试不均匀)

    (2)正交表的局限

       1)正交表的个数有限(9个),有时没有正合适的正交表。

       2)正交表要求控件的取值个数相同,但是实际应用中,很多时候控件的取值个数不同。

    (3)正交表的特征(平均/均匀)--了解

       1)每列的数值出现次数均等

       2)任意两列,同一行会形成有序数对,有序数对出现的次数均等。

  

三、正交表的强化--如果没有合适的正交表,如何解决?

    1、k值不合适

       解决:挑选k值最接近的,并且大一点的,用不到的列可以删除。

   2、m值不合适

m值:代表每个控件的取值个数,但是每个控件的取值不同,m值该如何确定??

     (1)方式1:少数服从多数

       m:谁多听谁的

       例如:m=3的控件有2个,个数最多,最终m=3。

     (2)方式2:最大值

     m:谁的m值最大听谁的

      例如:m=4 ,最大,最终m=4

 建议:使用最大值方案

      1)最大值方案不需要修改表结构。操作更简单。

      2)相对来说最大值方案测试质量更好。

 方法总结:

   1)如果有用不到的列,可以删除。

   2)首先将能替换的尽量替换。

   3)有多出的测试机会(空),应“尽量均匀”的分配给该列的取值。

   4)最后检查是否有完全相同的行,如果有要做出处理(删、改)

  5)提示:最优先选择正合适的正交表,如果没有正好合适的,再想其他方法解决。

  补充:正交排列法的常见应用有:属性设置(例如:字符属性设置、打印属性设置等)还有兼容性测试等。

  •  测试大纲(提纲)法

一、应用场合

   程序中有多个窗口,每个窗口中有不同操作,不同窗口操作之间存在关系,为了理清窗口之间的关系,可以使用测试大纲法。测试大纲法经常用来测试:窗口之间的跳转关系,软件的安装或删除程序,或者用来理清需求之间的层级关系等。

二、测试步骤

     步骤1:分析需求,列出大纲。

     列大纲:将窗口和窗口中的操作一一列出。注意:按照窗口出现的顺序列(按窗口层级关系列)

     例:

       主窗口

         选择专卖店类型

         地图

         帮助

           上一页

           主菜单

 

注意:列大纲的方式多种多样,写文字,画图等都可以。

        

     步骤2:根据大纲,分析窗口之间的关系,编写测试用例

    说明:1、测试顺序,一般由易到难

     例如:帮助→地图→专卖店

     2、每条用例要测到“叶子节点”(最后一级)结束

     3、如果在当前的测试路线中(跳转路线),没有未测测试点(所有的测试点都在之前的用例中覆盖过),那么该测试用例可以省略,时间允许可以补充测试。

     4、在测试列表框或下拉列表控件时,一般会至少测试3项:第1项(最小值),中间某项(有效等价类的代表数据),最后1项(最大值)

      应用了等价类划分+边界值的测试方法

 

   提示:通常测试3项,但是特殊情况可能会测试超过3项。

     例1:月份

       最大值(12月)、最小值(1月)、

       大月(12月或1月)、小月(4月)、闰月(2月)

       如果有为空的情况还需要分析

   

 三、上机练习

     被测程序:snagit软件的“安装程序”   

     测试准备:如果计算机中已经安装了snagit软件,需要卸载掉,再去测试安装程序。

     1、软件安装程序测试的特点:

      (1)软件的安装程序,虽然窗口较多,但是窗口之间的关系较为简单,主要就是“上一页”和“下一页”。

      (2)软件的安装程序用例通常写在word文档中即可,可以简洁的将窗口功能点的测试过程(用例)写在文档中。

第9讲   场景法(重点)

一、应用场合

      1、场景法是最常用的测试方法之一,通常用来测试软件的业务流程或业务逻辑。

      2、场景法是基于“软件业务”的测试方法。

     (1)测试者对于所测软件的业务要非常熟悉。(越熟悉,场景覆盖越全,遗漏bug越少)

      (2)测试者设计用例时也是要根据软件的业务流程和逻辑去设计。

     3、场景法测试中,测试者将自己想象成最终用户,模拟用户使用软件的各种情景,主要模拟两类情景:

     (1)软件业务正确实现的场景。--验证功能是否正确实现--正向测试

     (2)软件业务出现错误操作的场景。--验证软件的健壮性(异常处理能力)--反向测试

补充:场景法的应用思路

    在拿到软件的测试任务时,通常会先使用场景法将软件的整体业务流程,逻辑进行测试,当核心业务,流程没有问题后,再使用等价类,边界值,判定表等方法对细节展开全面测试。(先整体后细节)

      例:冒烟测试

二、场景法测试的两个层面

     1、业务层面(更为重要):

     要求测试者对所测软件的业务熟悉,甚至能成为该行业,业务方面的“专家”。

     2、技术层面:

        (1)基本流

          也叫有效流或正确流,模拟正确的业务实现过程。

        (2)备选流

           也叫无效流或错误流,模拟错误的业务实现情景。

   三、测试步骤

   说明:业务越复杂,越陌生,场景法的测试难度越大。

  案例:ATM取款功能

步骤1:熟悉需求,整理业务,列出基本流和备选流。

  基本流( 取款成功的过程):

   插有效银行卡,验证通过→输入正确密码→选择取款功能→选择有效的取款金额→出钞,更新余额,提示,打印凭条

  备选流(取款失败的各种情景):

   (1) 插入无效卡,验证失败

   (2) 密码输入错误(3次以下)

   (3) 密码输入错误(3次)--锁卡,吞卡

   (4)账户余额不足

   (5)超出当次取款上限(5000)

   (6)超出当日取款上限(20000)

   (7)ATM机余额不足

 说明:以上无效场景并不全面,仅是列出了比较常见的无效场景。(例如:取款金额要是100的倍数,卡资金冻结等都没有列出)

 

   步骤2:生成场景,填写《场景表》

 

   步骤3:根据场景,编写测试用例

 说明:场景和用例不一定是1:1

   有可能一个场景需要编写多条用例测试

   也有可能1条用例可以测试多个场景

  

四、上机练习

   练习1:五子棋游戏

    步骤:1、分析需求(规则,被测系统),整理业务,列出基本流、备选流

     1、玩家先(玩家黑棋)--考虑禁手

        玩家胜

        玩家负

        和棋

        禁手位(避开; 没有避开-判负)

     2、电脑先(电脑黑棋)     

        电脑胜

        电脑负

        和棋

        禁手位--电脑作为黑棋,必须避开,否则就是bug(禁手算法漏洞)

  步骤2:生成场景,填写场景表

  步骤3:游戏测试中,有些场景无法编写常规用例,所以经常以场景描述做为用例测试执行,测试执行后,保留证迹和实际结果描述。

     截取证迹注意事项:

       (1)如果有消息提示弹出,应调整位置,避免遮挡有效信息。

       (2)不要只截取局部界面,应尽量截取整个界面。能够提供更多有效信息

六、  场景法

  一、场景法上机练习2

        1、被测系统:美萍酒店管理系统

           功能模块:系统设置-房间设置 -房间类型删除功能模块

         

        2 、 测试准备

             (1)安装被测系统

             (2)测试数据准备

        3、测试设计

           步骤1:分析需求,整理业务,列出基本流、备选流

              

                需求:删除房间类型与房态和服务生两个因素有关  

 

                  (1)需求分析:

                     单独分析房态:

                         能删:房间类型中所有房间都没有人住

                         不能删:房间类型中如果有房间有人住就不能删(哪怕有1间房有人住也不能删)

 

                    单独分析服务生:

                       能删:没有分配服务生

                       不能删:分配有服务生的类型

 

                 (2)整理业务:综合房态和服务生两个因素

                     能删:

                        没人住+没分配服务生

 

                     不能删:

                        没人住+有服务生

                        有人住+没服务生

                        有人住+有服务生

 

          补充:没人住--可供、停用、清理

                有人住--占用、长包房、预订

 

            步骤2:生成场景,填场景表

            步骤3:根据场景,编写测试用例

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

謹言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值