• 如何编写有效的测试用例?


    <如何编写有效测试用例>这本书里面有很多概念很不错,每读一遍都有收获.下面从what how讲一下这本书关于编写测试用例的那些好的观点

    什么是好的测试用例?(what)

    一、 多写海平面以上的用例

    海平面以上的用例,是指多从用户的意图出发去编写用例,而不是拘泥于某个用户操作界面。这里书中写了个小技巧:每次编写用例可以多问自己,执行者执行完此用例可以达到什么目的。判断的标准可以是以下

    1、执行者执行完一次用例可以愉快离开

    2、 执行者(雇员)多次执行这一用例可以加薪

    3 、一个人在一个地方执行2-20分钟的操作

    二、 有考虑项目相关人员的利益

    什么是项目相关人员?常见的有客户,操作这个系统的主要执行者(雇员) ,还有经常漏掉的雇员的老板。其实老板的权限应该比雇员高,不仅能有雇员的操作权限,还有更高一级。只有老板才能解锁的权限。常见的项目相关人员及利益有以下:

    1 、公司的利益:保证主执行者不能免费得到某些利益,或得为他所得付费

    2 、管理部门利益:确保公司能够遵循一定的准则,然后保存某种类型的数据

    3 、项目相关人员的典型利益:从事务失败恢复机制收益,需要更多记录。

    三、.用例的合理划分

    用例长度:一般用例的长度一般在59个步骤比较合适,如果长度过短就要考虑用例的层次是否过低,那就要多问自己用户的意图,以此来获得更高层次的用例。如果用例过长就要考虑是否步骤划分太细小,这个时候就可以考虑将一些步骤进行合并。

    用例的扩展:一般把失败的步骤都写在这里,方便维护

     基用例和子用例:适当使用基用例和子用例可以让文档更精简和清晰,可以使用超链接链接起来

    如用户寻找一件失物,这里可以链接到子用例.

      

    四、 关于条形裤

    用例无论有多少场景,总共有只有两种结局:成功和失败,而走向成功和失败有很多场景和路径,殊途同归,就像条形裤一样。

    五、 良好的用例编写格式

    好的用例编写语言习惯:

    1 使用简单语法(不要遗漏了主语):

      +++前置短语   eg: 系统...从用户余额中扣除...一定数量

    2 明确写出谁控制球

      在同一个场景使用相同的结构,执行者就像球员,是主语,而球是执行者和执行者传递的信息或数据。

    3、从俯视的角度来编写用例

    为了避免出现从系统内部去看待世界这种思维定式,可以学会用俯视角度来编写用例,像编剧描写一部剧一样。

    比如

       用户:插入ATM卡并输入PIN

       系统:从用户金额扣除一定数量

    4、显示过程向前推移

        可以将一些由同个执行者执行又处于同个方向操作步骤小的操作(靛青色的用例)进行合并,避免用例文档过长的情况

    5、显示执行者的意图而不是动作

    6、包含合理的活动集

    7确认而不是检查是否

    确认这个动词比检查是否更能体现过程更进一步的过程和系统的意图。

    8、可选择地提及时间限制

    大多数的用户步骤都是紧跟上一步,但是有时候也会这么写

    在步骤3和步骤5的任何时候,用户将......

    9 习惯用语用户让系统A和系统B交互

    笨拙的写法:用户通知系统B获取数据

                         系统B从系统获取数据

    好的写法:用户命令系统B从系统获取数据(体现了谁控制球)

    10 习惯用语:循环执行步骤X到步骤Y,直到条件满足

    为了让场景容易阅读,可以把循环重复步骤放在步骤的后面

    eg  1、顾客提供账号名字或地址

          2、系统查出用户的爱好

          3、用户选择一个商品,并做一个购买标记

          4、系统把用户选购的商品放入购物车

           顾客 重复步骤3~4,直到顾客选购完所有的商品

          5   顾客购买完购物车的商品

    、关于用例的扩展

    扩展条件就是在一些条件下系统会完成不同的动作,之所以用扩展,是因为有失败和成功两种情况。

    检测到什么来编写条件,不要写什么顾客忘记密码,系统是不可能发现顾客忘记密码,系统只能检测到等待时间超出了限制,应该这样写,系统检测到用户输入密码等待时间超出限制。

    如果使用编号,可以在编号后面加上字母,像2a 2b什么的

    我们可以采用一个简单简短的主成功场景和一个扩展列表,为了避免列表过长,可以采用以下方法

    1、删除多余的条件,按照以下两个标准,判断哪些不符合以下标准的条件便可以删除。

       a 系统能检测到条件

       b 系统必须完成的检测的条件

    2、可以合并对系统来说等价的条件,可以合并一些低层次的失败用例。

    3、扩展用例常见的有调用子用例和基用例的扩展。

    判断是用子用例还是基用例的扩展可以采用以下标准判定。

    如果触发条件包括了基用例应负责的事件:即基用例知道什么时候/在什么地方调用第二个用例,应该采用调用子用例的方式    

    如果触发条件包括了第二个用例应负责的事件:即第二个用例知道什么时候/在什么地方调用第二个用例,采用扩展基用例的方式

    4、尽量不要用扩展用例,后期维护比较麻烦。

    下面是关于如何编写有效测试用例的一些干货(how)

    1 、 每个用例都是一篇散文

    2 、使用用例易于阅读,可以按照以下一些技巧来达到这个目的

    a 让用例短小,切题

    b 从头开始,以一条主线贯穿始终,顶部是对全局有重要意义的用例,并分离出用户用例和最终子用例

    c  用动词短语来编写用例,这些动词表明了这些用例想要达到的目的

    d 从触发条件开始一直继续,直到目标被实现或取消,并且系统完成与这次事务处理相关的记录的保存

    e 用完整的主动语态语句来描述所要完成的子目标

    f 确保每一步执行者及其意图是可见的

    g 突出失败条件,使失败恢复动作可读,最好不必为每个步骤编号,人们可以清楚知道下一步要做什么

    h 将可选的行为放在扩展部分而不是放在用例条件的主体语句中

    i  只有在非常必要的情况下扩展用例

    3 仅用一种句型,主用例和扩展可以用不同语法格式用于区分

    主用例格式: a 现在时态语句

                          b  在主动语态用主动动词

                          c  描述执行者成功到达某个目标,这个目标推动了整个过程的前进

    扩展格式:    a 采用过去时态

                          b  采用句子片段而不是完整句子

                          c  用冒号结束而不是句号结束

    4、 包含子用例

    5 、谁控制球

    6  、正确得到目标层(更高层次、海平面以上)

    7 、不考虑GUI界面(避免写死后后面一旦更改给维护带来负担)

    8  、两个结果:成功和失败

    9 、项目相关人员需要的保证(利益、最小成功保证)

    10 、前置条件

    11 、对用例的通过和失败进行测试

    关于<编写有效测试用例>这本书的一些表也值得推荐,在文中的P9711

    输入输出表

    系统设计范围表

    用户目标级别表

    书里还介绍的一种很特别的方法,对于前期写用例能够更好地提供思路:写故事

    给自己的用户写几个故事,往往会有意想不到的效果。

    最后是日常工作的时候,我领悟到的一些方法

    1 前期梳理业务:思维导图

    所需要的工具非常简单:一只笔,一张白纸。

    可以按照主成功场景,写执行者执行步骤,.画一个路径图,注明下一步的出发条件,开启分支则注明分支条件,对于前期梳理业务非常有帮助。

    2 编写文档时,可以先写主成功场景,写完后,在扩展这一下失败场景,不容易乱

    前期以主成功的业务场景为主,不要把自己过多陷入各种失败场景中,只会把自己绕晕。最好的方式是先把业务关系梳理清楚再去扩展失败的场景丰富用例。

    3、多写海平面以上的例子,这也是书中一直强调,这有个好处,就是既可以精简用例,又可以在阅读用例的时候留下想象的空间,更好地去提问,去发现问题,而底层用例不仅用例多而且不利于思考。

    4、借鉴文中的编写格式,可以更好维护测试文档。尤其在需求变更很快的情况下,可以更好地应对。

  • 相关阅读:
    Spring Boot Test(转)
    volatile的可见性和有序性是什么(转)
    消息队列漫谈:如何使用消息队列实现分布式事务?(转)
    idea IntelliJ修改代码后自动重启(转)
    Spring Boot自动配置实现原理(转)
    Java注解(Annotation)原理详解(转)
    Spring中@Import注解的作用和使用(转)
    i春秋六周年庆丨欢乐相聚,暖心同行,未来可期!
    王者之战,志在巅峰丨2021互联网安全城市巡回赛•北京站圆满收官!
    2021互联网安全城市巡回赛——风起云涌,再战京城!
  • 原文地址:https://www.cnblogs.com/meowding/p/7148511.html
Copyright © 2020-2023  润新知