zoukankan      html  css  js  c++  java
  • 深入了解软件测试基础02

    本篇博客

    一、边界值
    二、因果图
    三、因果图中的符号
    四、判定表
    五、场景法
    六、流程分析法
    七、错误推断法

    不能穷举的时候用等价类比法 
    条件和条件 有制约关系 的时候 用 因果图 制作 判定表的方法

    一、边界值

    什么是边界?

    边界是指对于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。

    边界值分析法也是一种常用的黑盒测试方法。

    我们在测试过程中,一定要小心边界值(极值),因为在程序中这些边界最容易出问题

    具体测试用例书写思路:找到边界值和它两端的值,分别进行测试;

    总结:边界值思想应该是选到边界和刚超过的值,来进行测试,也要根据实际情况来选择边界值和等价类是相辅相成的关系,配合使用的。

    如何解决这类问题

    找到测试数据的边界点,也就是有效等价类和无效等价类的边界点,对边界点数据专门进行测试。

    一般情况下,需要对边界值(0和100)以及边界值两边的数(-1和1以及101和99)分别进行测试。

    题目:输入的参数值必须大于等于0同时小于等于100的整数

    正确代码:

    num>-1或num>=0 num<101或num<=100

    错误代码:

    num>=-1或num>0或num>=1 num<=101或num<100或num<=99

    选中了-1 选中了1 选中了101 选中了99

    边界值小案例:

    之前的等价类的案例: 

     

    加入边界值的案例:

    3的边界:2,3,4

    19的边界:18,19,20

    上点:就是边界上的点,不管是开区间还是闭区间

    内点:就是在域范围内的任意一点

    离点:就是离上点最近的一个点,如果边界是封闭的,那么离点就是域范围外离上点最近的点,

            如果边界是开放的,那么离点就是域范围内离上点最近的点。

    (边界值测试法中主要是选取离点和上点进行测试。这是网上找的)

    如果是闭区间,例如[1,10]。

    上点:1、10      内点:5      离点:0、11

    如果是开区间,例如(1,10)。
    上点:1、10 内点:5 离点:2、9

    如果是半开半闭区间,例如(1,10]。
    上点:1、10 内点:5 离点:2、11

    练习2:输入一个学生成绩n,判断是否及格(0到100整数);

    (1)画流程图Axure(产品经理用来制作流程图的); http://www.zcool.com.cn/work/ZMTUxMjE1OTI=.html

    (2)确定有效区域和无效区域;

    (3)临界点:0、60、100;

    (4)取值:-1、0、1、59、60、61、99、100、101;

    (5)具体测试用例

    注意:对于成绩而言-1和101是不可能的。但是题目是用户输入。所以要考虑进去。而且加了无效等价了小于0,大于100,特殊字符。

    练习3:修改手机银行登录密码:
        密码必须由字母与数字组合
       密码长度在8~24之间(包含8和24)

    边界值的方法小结

    1、如果输入条件规定了值得范围,则应取刚到到这个范围的边界值,以及刚刚超越这个范围边界的值作为输入数据。

    如果是0-100,需要测试的就是-1,0,1   99,100,101

    2、输入条件规定了值得个数

    姓名要求1—20个字符,需要测试0、1、2个字符和19、20、21个字符

    某商品信息查询系统,每页最多显示10条商品信息,我们就应该准备商品信息,使能够查询出9、10条、11条、1条、0条商品记录

    边界值和等价类区别:边界值分析不是从某等价类中随便挑一个作为代表,而是这个等价类的每个边界都要作为测试条件

    常见边界值:

    文本框接收字符个数,比如用户名长度,密码长度等;

    报表的第1行和最后1行;

    数值元素的第1个和最后1个;

    循环的第1次、2次和倒数第1次、2次。

    二、因果图

    因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入,所谓的结果就是输出。

    因:输入条件

    果:输出条件、出结果

    适用于输入条件之间有相互制约、相互依赖的情况;

    因果图法要注意考虑:

    所有输入/输出条件的相互制约关系以及组合关系

    输出结果对输入条件的依赖关系,也就是什么样的输入组合会产生怎样的输出结果,即“因果关系”

    三、因果图中的符号

    1、  恒等—有因就有果,没有因就没有果

    2、  非—有因没有果,没有因有果

     

    3、  或—条件有一个是真,结果就是真,条件都是假,结果才是假

    4、  且(与)--条件都为真,结果才是真,一个条件为假,结果就是假

     

    因果图中的约束条件(了解即可)

    因果图法基本步骤(因果图可以不画)

    利用因果图导出测试用例需要经过以下几个步骤:
    ① 找出所有的原因,原因即输入条件或输入条件的等价类。
    ② 找出所有的结果,结果即输出条件。
    ③ 明确所有输入条件之间的制约关系以及组合关系。
    哪些条件不能组合到一起,哪些条件可以组合到一起
    ④ 明确所有输出条件之间的制约关系以及组合关系。
    哪些输出结果不能同时输出,哪些输出结果可以同时输出
    ⑤ 找出什么样的输入条件组合会产生哪种输出结果
    ⑥ 把因果图转换成判定表/决策表。
    ⑦ 为判定表/决策表中的每一列表示的情况设计测试用例。

    案例:交通一卡通自动充值软件系统需求

    系统只接收50或100元纸币,一次只能使用一张纸币,一次充值金额只能为50元或100元。

    若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;

    若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元;

    若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元;

    若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;

    若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,并提示错误;

    若选择充值按钮后不输入纸币,提示错误

     步骤:

    1、找到所有输入条件编号
    2、找到所有输出条件编号
    3、找出所有输入、输出的制约关系

     

    因果图:(工作中可以不画因果图,因为这只是个过程。直接写下面的表格。)

    注意:一个图中标识出一个测试用例的情况,因为画在一起根本无法分辨。

    这里的表格,输入和输出条件的组合关系简单明了。是下面介绍判定表的雏形。修改一下就是判定表了。

    四、判定表

    根据因果图来制作判定表(因果图可以不画

    组成部分:

    1、  条件桩:所有条件

    2、  动作桩:所有结果

    3、  条件项:针对条件桩的取值

    4、  动作项:针对动作桩的取值

    书写步骤:

    1、  列出所有条件和动作桩

    2、  填写条件和动作桩中的项目

    3、  简化判定表

    注意:如果出现“-“代表此选项不影响最终结果。(一般我们不用,测试的时候。会丢失东西。)

    小案例:判断好坏学生

    怎样称为一个好学生?遵纪守法的前提下,学习成绩好是一个好学生、品德高尚也是一个好学生;(只要违法乱纪就绝对不是一个好学生;成绩和品德有一项,再加遵纪守法也是好学生)

     这里小的思路:全都是1,1个0,2个0,3个0的情况。

    五、场景法

     场景法就是模拟用户操作软件时的场景,主要用来测试业务流程;分为基本流(正确流程)和备选流(错误流程)

    注意:还要补充一些异常情况;

    冒烟测试主要采用场景法来测试

    当获取测试任务后先关注什么后关注什么?

    当拿到一个测试任务后,先关注它的主要功能和业务流程是否正确实现,这就需要使用场景法来完成测试。当业务流程或者说该软件的主要功能没有问题时,我们再重点从边界值、等价类等方面对控件进行更加细致、完整的测试。

    概念
      基本流:通过业务流程输入都为正确的,能够最终达到目标的流程,如atm机取款,插入银行卡-输入正确的密码-输入正确的金额-取钱-取卡

      备选流:通过实现业务流程时,因错误操作或异常输入,导致流程存在反复,但最终能够达到预期的操作流程,如atm机取款,插入银行卡-输入错误的密码-重新输入正确的密码-输入金额-取钱-取卡
      

      异常流:通过实现业务流程时,因错误操作或异常输入,导致没有完成业务流程,如atm机取款,插入银行卡,输入三次错误的密码,吞卡

    用例场景:

    用例场景是用来描述流经用例路径的过程,这个过程从开始到结束遍历用例中所有基本流和备选流。

    在使用场景设计测试用例时, 需要覆盖系统用例中的主成功场景(正确的测试用例)和扩展场景(细节), 并且需要适当补充各种正反面的测试用例和考虑出异常场景的情形

    当使用场景法测试程序没有问题时,可以再使用边界值、等价类方法对账号、密码进行更加细致、完整的测试。

    用例场景产生的背景 

    现在的软件几乎都是由事件触发来控制流程的,事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。

    将这种在软件设计方面的思想引入到软件测试中,生动的描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时测试用例也更容易的得到理解和执行。

    小案例:qq登陆(产品经理会给我们类似下面的业务需求。)

    使用场景法测试QQ登录功能。

    输入正确的账号和密码后点击“登录”按钮,程序能正常登录

    输入正确的账号,错误的密码后点击“登录”按钮,程序应给出错误提示

    输入正确的账号,不输入密码,点击“登录”按钮,程序应给出错误提示

    不输入账号和密码,直接点击“登录”按钮,程序给出错误提示“请您输入账号后登陆”;

    不输入账号,输入正确的密码,点击“登录”按钮,程序应给出错误提示

    输入错误的账号,正确的密码,点击“登录”按钮,程序应给出错误提示

    (更多……)

     使用场景法的测试用例:只要把上面的业务需求一条条的填入进去即可。

     总结

             使用场景: 冒烟测试, 系统测试
             根据产品的需求, 列出正确的和错误的软件流程, 每一个流程就是一条测试用例, 测试用例还需要把边界值的测试加进去,才能保证测试用例的完整。

    六、流程分析法

    流程分析法是场景法的子项,是从白盒测试设计方法中的路径覆盖分析法借鉴过来的一种方法。

    在白盒测试中,路径就是指函数代码的某个分支组合,路径覆盖法需要构造足够的用例覆盖函数的所有代码路径。路径覆盖法: 把所有测试条件写成测试用例,白盒是根据代码分支分析写测试用例

    在黑盒测试中,若将软件系统的某个流程看成路径的话,则可以针对该路径使用路径分析的方法设计测试用例。黑盒测试是看文档来写测试用例,不需要看代码

    优点:

    降低了测试用例的设计难度,只要搞清楚各种流程,就可以设计出搞质量的测试用例来,而不需要太多测试方面的经验,在测试时间较紧迫的情况下,赶紧跑一下流程(功能)然后有时间的话再测那些细节

    流程分析法的步骤:
                          第一步:详细了解需求;
                          第二步:根据需求说明或界面原型,找出业务流程的各个页面以及各页面之间的流转关系;
                          第三步:画出业务流程;
                          第四步:写用例,覆盖所有的路径分支。

    流程分析法使用场景:

          适用于有先后顺序的测试;常用于业务流程、安装流程等等。每个流程就是一条测试用例,它只是在测试整体流程是否正确,细节还需要使用等价类、边界值等方法进行完善;

    小案例:

    依据业务流程图确定测试路径,即需要测试的业务流程。其主要包含三个方面

               a)正常流程,取款成功(基本流程):对应一次性取款成功;
               b)异常流程,取款失败(分支流程):对应取款失败,包括退卡、吞卡;
               c)异常流程,取款成功(循环流程):对应取款中间出现意外,比如密码输入错误,但是最终成功取钱的情况。 

     

    把上图的情况从开始到结束走一遍是一条测试用例。写用例,覆盖所有的路径分支。

    流程分析法和场景分析法是一个意思
           分析产品经理的文档, 根据产品经理提供的文档或者原型图实现出来测试用例就是流程分析法

    流程分析法总结:

    流程分析法适用于有先后顺序的测试。常用于业务流程测试、安装流程测试等。

    流程分析法重点在于测试流程。因此,一般每个流程用一个测试用例验证。

    注意:   流程测试没有问题并不能说明系统功能没有问题,还需要针对每步功能进行测试。对于包含复杂流程的系统,只有功能点和处理流程都进行测试覆盖,才算是比较充分的测试。

    七、错误推断法

    凭着直觉经验来设计测试用例,它是根据之前项目相关的bug数据总结来的;

    适用:

    01.测试高手

    02.时间紧张

    错误推断法是根据个人经验来进行测试:例如前端页面经验如下

    1. 看html源代码第一行是否有<!DOCTYPE html>,如果没有,提bug(没有此行代码ie低版本会有兼容性问题)
    2. meta标签如果没有或者不是utf-8,提bug(应该使用utf-8国际编码,否则页面文字会出现乱码)
    3. Title标签一定要有  (没有title标签,浏览器没有提示文字 )
    4. 标签语义化(代码截图,描述应该使用什么标签更合理)
    5. 如果产品需求中明确要求图片悬停的时候需要有提示文字,而没有提示,提bug(鼠标悬停没有文字提示)
    6. Img标签没有alt属性,网页阅读器无法读取;小心:不是所有图片都要添加alt属性,一些重要的图片应该添加
    7. 注释代码在上线之前,一定要删,不删就提bug
    8. 超链接如果要求新页面跳转而没有跳,要提bug(产品要求新页面跳转)
    9. 空链接如果是一个或两个井号,提bug(应该使用三个井号 实现空链接)
    10. 文本框的提示文字(如果设计师不用默认的灰色,我们应该与其讨论,找到最好的解决方法)
    11. 单、多选按钮,应该让描述文字也可以点击切换
    12. 多行文本框(文本域)的大小应该在所有浏览器中都一样
    13. 刷新页面的时候,应该把光标定在第一个输入框身上,复合用户体验。
    14. 单选、多选、下拉菜单如果有默认选中状态一定要跟需求一致。
    15. 提交、重置、普通按钮的默认提示文字,一定要自己设置,否则浏览器显示不同。
    16. 内嵌css一定要用在电商网站的首页中。
    17. 带缩略图的banner,小图和大图不能混用!
    18. Html5新标签用在手机网页的书写,优化搜索引擎。注意:这个问题要在项目会(还没写代码时候的那个会议)的时候就提出,如果放在最后阶段,没有意义。
  • 相关阅读:
    一个简易的MySQL性能查询脚本
    pt-osc原理、限制、及与原生online-ddl比较
    Netstat Commands for Linux Network Management
    MySQL 资源大全中文版
    自增表死锁问题分析及处理
    MySQL自带的性能压力测试工具mysqlslap
    iOS in-app purchase详解
    iOS 将Excel导入到SQLite3的过程
    iOS iTuns Connect官方配置教程
    OpenGL 知识二
  • 原文地址:https://www.cnblogs.com/zhangyangcheng/p/12261855.html
Copyright © 2011-2022 走看看