测试

由于成本因素的介入,决定了工程中设计好的测试用例原则不只有“覆盖住所要测试的功能”这一条,下面是我根据自己的工作经验总结出的其它四条原则,在这里抛砖引玉,希望大家拍砖和指正。这些原则特别是针对那些需要被自动化,并且是要被经常执行的测试用例。

1. 单个用例覆盖最小化原则。

这条原则是所有这四条原则中的”老大“,也是在工程中最容易被忘记和忽略的,它或多或少的都影响到其它几条原则。下面举个例子来介绍,假如要测试一个功能 A,它有三个子功能点 A1,A2 和 A3,可以有下面两种方法来设计测试用例:

方法1 :用一个测试用例覆盖三个子功能 -Test_A1_A2_A3,

方法2 :用三个单独的用例分别来覆盖三个子功能 - Test_A1,Test_A2,Test_A3

方法1适用于规模较小的工程,但凡是稍微有点儿规模和

测试用例的覆盖边界定义更清晰

测试结果对产品问题的指向性更强

测试用例间的耦合度最低,彼此之间的干扰也就越低

上述这些优点所能带来直接好处是,测试用例的调试、分析和维护成本最低。每个测试用例应该尽可能的简单,只验证你所要验证的内容,不要“搂草打兔子”捎带着把啥啥啥啥都带进来,这样只会增加测试执行阶段的负担和风险。David Astels在他的著作《Test Driven Development:A Practical Guide》曾这样描述,最好一个测试用例只有一个Assert语句。此外,覆盖功能点简单明确的测试用例,也便于组合生成新的测试,在Visual Studio中就引入了Ordered Test的概念。

2. 测试用例替代产品文档功能原则。

通常我们会在

就没有什么东西能够一直准确地描述产品的功能了吗?答案:当然有,那就是产品代码和测试用例。产品代码实现了产品功能,它一定是准确描述了产品的当前功能,但是由于各种编程技术,如:

那么就只有测试用例了,测试也应该忠实反映了产品功能的,否则的话测试用例就会执行失败。以往大家只是就把测试用例当作测试用例而已,其实对测试用例的理解应该再上升到另一个高度,它应该是能够扮演产品描述文档的功能。这就要求我们编写的测试用例足够详细、测试用例的组织要有调理、分主次,单靠Word、Excel或者OneNote这样通用的工具是远远无法完成的,需要更多专用的

此外,对于自动化测试用例(无论是API或者UI级别的)而言,代码在编写上也应该有别产品代码编写风格,可读性和描述性应该是重点考虑的内容。在测试代码中,当然可以引入面向对象、设计模式等优秀的设计思想,但是一定要适度使用,往往面向过程的编码方式更利于组织、阅读和描述。

3. 单次投入成本和多次投入成本原则。

与其说这是一条评判测试用例的原则,不如说它是一条思考问题的思维角度和原则。成本永远是任何项目进行决策时所要考虑的首要因素,项目中的测试也是如此,对成本的考虑也应该客观和全面的体现在测试的设计、执行和维护的整个阶段中。当你在测试中遇到一些左右为难的问题需要决策时,尝试着从成本角度去分析一下,也许会对你的决策有所帮助。

测试中的成本按其时间跨度可以分为:单次投入成本和多次投入成本。例如:

之所有要引入单次和多次成本的思考,是希望能够通过区分测试中不同活动对测试成本的影响,从而进行帮助我们合理布局在不同阶段的投入和做出正确的决策,以保证在有限可负担测试成本的前提下,最大限度地有效开展测试工作。例如,当我们意识到了,测试用例的设计和自动化属于是一次性投入,而测试用例的执行则是反复多次的投入时,就应该积极思考如何能够提高需要反复投入的测试执行的效率,在一次投入和需要多次活动需要平衡时,优先考虑多次投入活动的效率,其实这里是有很多工作可以做。

例如:第一条原则-单个用例覆盖最小化原则 - 就是一个很好的例子,测试A功能的3个功能点A1,A2和A3,从表面上看用Test_A1_A2_A3这一个用例在设计和自动化实现时最简单的,但它在反复执行阶段会带来很多的问题:

首先,这样的用例的失败分析相对复杂,你需要确认到底是哪一个功能点造成了测试失败;

其次,自动化用例的调试更为复杂,如果是A3功能点的问题,你仍需要不断地走过A1和A2,然后才能到达A3,这增加了调试时间和复杂度;

第三,步骤多的

第四,(Last but not least)将不相关功能点耦合到一起,降低了尽早发现产品回归缺陷的可能性,这是测试工作的大忌。例如:如果Test_A1_A2_A3是一个

综上所述,Test_A1_A2_A3这样的设计,减少地仅是一次性设计和自动化的投入,增加地却是需要多次投入的测试执行的负担和风险,所以需要决策时(事实上这种决策是经常发生的,尤其是在设计测试用例时)选择Test_A1_A2_A3还是Test_A1、Test_A2和Test_A3,请务必要考虑投入的代价。

4. 使测试结果分析和调试最简单化原则。

这条原则是实际上是上一条- 单次投入成本和多次投入成本原则 - 针对自动化测试用例的扩展和延续。在编写自动化测试代码时,要重点考虑如何使得测试结果分析和测试调试更为简单,包括:用例日志、调试辅助信息输出等。因为测试用例的执行属于多次投入,

测试理论为测试工作指明了大的前进方向,在实际工程中还需要我们不断地“活化”这些理论,使理论和实践更好的契合在一起。在我看来,

论坛精华帖

在设计软件测试用例的原则,设计软件测试用例需要遵循的四条原则相关推荐

  1. 软件测试作业2:在敏捷宣言遵循的12条原则中挑选1条你感兴趣的原则进行风险评估

    作业2 1.在敏捷宣言遵循的12条原则中挑选1条你感兴趣的原则进行风险评估. "原则"参见Lec 6, slide 8-11; "风险"参见Lec 3, sli ...

  2. 10、同步机制遵循的原则_我要遵循的10条原则

    10.同步机制遵循的原则 by Haseeb Qureshi 由Haseeb Qureshi 我要遵循的10条原则 (10 Principles I Want to Live By) I just c ...

  3. 注释标记的原则_它关系到平台如何标记操纵的媒体。 这是设计师应遵循的12条原则。

    注释标记的原则 By Emily Saltz, Tommy Shane, Victoria Kwan, Claire Leibowicz, Claire Wardle 埃米莉·萨尔茨 ( Emily ...

  4. Mapper动态代理开发所要遵循的四个原则

    ①.接口方法名与映射文件中Mapper.xml中id名一致. ②.返回值类型与Mapper.xml文件中返回值类型一致 ③.方法的入参类型与Mapper.xml中的入参的类型一致 ④.命名空间 绑定此 ...

  5. 点赋网络:网店详情页设计中应包含哪些设计元素

    产品上线前需先明确产品定位:产品消费群体.产品质量.产品价格.根据产品的定位,确定详情页的设计风格.抓住消费者的痛点,找到消费者购买这款产品的原因.点赋网络科技希望所有卖家能通过完善的产品介绍建立消费 ...

  6. 改善简历的47条原则

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://lucida.me/blog/lean-technical-resume/ 关于 这篇文章围绕着技术简历 ...

  7. (转)精益技术简历之道——改善技术简历的47条原则

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://lucida.me/blog/lean-technical-resume/ 关于 这篇文章围绕着技术简历 ...

  8. 精益技术简历之道:改善技术简历的47条原则

    原文出处: 巩朋的博客(@peng_gong) 关于 这篇文章围绕着技术简历这个话题,从版式.个人信息.技术能力.项目经历和教育背景等方面出发,给出了编写高质量技术简历所应遵循的47条原则.它们既有益 ...

  9. 人工智能技术发展必须遵循的基本伦理原则

    人工智能在推动网络信息技术发展的同时,模糊了物理现实.数字和个人的界限,也衍生出诸多复杂的法律.伦理问题,我们所要应对的已经不单单是弱人工智能和强人工智能,还有未来的超人工智能问题. 人工智能技术发展 ...

  10. 软件设计模式-7种设计原则总结

    7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同.其中,开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭:里氏替换原则告诉我们不要破坏继承体系:依赖倒置原则告诉我们要面向接口 ...

最新文章

  1. 关于大数据的完整讲解
  2. linux vino vnc,vino-server和vncserver在教学环境中的典型应用
  3. 鲍尔默说:你的东西再大 微软也装得下
  4. php多图片上传程序,php多文件上传 多图片上传程序代码
  5. 华为的Java虚拟机_华为方舟编译器解析:提升安卓运行效率
  6. GitHub推出云端IDE,可在浏览器里使用VS Code了
  7. 11.24 《阿猫阿狗2》精美包装艳丽登场
  8. mysql数据库批量修改
  9. hdfs-大数据Week6-DAY2-2-hdfs
  10. FFMPEG结构体分析:AVCodec
  11. python学习日记(OOP——静态方法和类方法)
  12. Atitit 缓存实施遇到的问题与解决 s420 attilax 艾提拉总结 Atitit 缓存增加最佳实践与实施流程 1. 业务准确性问题正确性问题 1 1.1. 缓存key正确性问题 1
  13. 良心国产 PDF 软件!永久免费!不流氓
  14. 【编程题】【Scratch二级】2020.12 森林聚会
  15. 网络编程学习路线计划
  16. win7系统电脑蓝屏怎么解决,如何解决win7电脑蓝屏
  17. 一位营销总监的辞职信
  18. 产品分型面、插靠破、潜水进胶注意事项!
  19. 人工智能在电力系统中的应用值得思考的问题
  20. 解锁“不可能”:苏门答腊犀牛让我开始重新思考AI

热门文章

  1. 编曲软件FL Studio 20.99中文版2023最新免费下载
  2. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(11):一些图片
  3. IO第二天 低级流 缓冲流BOS 对象流OOS
  4. Struts2-boobooke-概述
  5. teraterm linux环境,linux ssh telnet TeraTerm终端中文显示乱码解决方法
  6. ssm框架体检管理系统源码+文档
  7. 怎样用计算机命令提高网速,老司机教你电脑网速慢怎么办
  8. layabox 位移动画旋转动画
  9. 苹果ipad邮箱找不到服务器,ipad怎么设置qq邮箱?苹果ipad qq邮箱设置教程
  10. centos php ioncube_如何在CentOS 7中安装ionCube Loader