软件测试的艺术学习笔记

1. 三角形测试用例,至少有如下一些测试用例:

  • 正常的不规则三角形,如3,4,6
  • 有效的等边三角形,如3,3,3
  • 有效的等腰三角形,至少三种:3,3,4;3,4,3;4,3,3
  • 某边的值等于0至少三种:4,5,0;4,0,5;0,5,4
  • 输入边数小于3或大于3
  • 输入的数全为0
  • 输入的数中有小数
  • 两边之和等于第三边的三种用例:2,3,5;2,5,3;5,2,3
  • 两边之和小于第三边的三种用例
  • 输入的边长为负数
  • 测试用例是否定义的预期输出?
  • 很大的整数,以致越界错误
  • 其中一个输入为字母
  • ……

2. 测试的目的是尽量找出程序的错误与承受极限等。增强程序的可靠性与稳定性。而不是为了证明程序能完成正确输入时的工作!不只为证明其功能的正确性,而是为“为发现错误而执行程序的过程”。

3. 成功的测试在于将所有可能出现错误的路径都考试到并执行了。并非必须找到bug。不成功的测试用例会使程序输出正确结果,却不能发现任何错误。一个成功的测试用例能够发现某个尚未发现的错误。

4. 黑盒测试穷举法不现实,设计具有代表性的测试用例很重要;白盒测试穷举路径也不切实际。

5. 软件测试十条重要原则:

  • 预定义每个测试用例的输出
  • 程序员避免测试自己写的程序
  • 编写软件的组织不应测试自己编写的软件
  • 应彻底检查每个软件测试的结果
  • 测试用例不仅应当根据有效的和预料到的输入设计,而且应根据无效的和未预料到的输入情况
  • 除检查其是否做了该做的事,同时应检查其是否做了不该做的事
  • 测试用例避免用后即弃,除非被测软件是一次性软件
  • 计划测试工作时,不应假定不会发生错误
  • 错误的出现有集中性
  • 软件测试是一项极富创造性,极具智力挑战性的工作

6.  错误被发现得越早,改进成本越低

7. 代码走查与检查是小组三四个人对某人写的代码进行审核,参加者只有一人是程序编写者。这通常能发现30-70%的错误,而且可以成批地发现错误,因此,它与机器自动化测试是互补的。过程可以是程序员向大家朗读自己的代码,并讲述逻辑结构。大家提问以发现错误,每小时50行代码左右。也可以每个人想若干测试用例来参加会议讨论。

8. 同级评分有助于提高代码质量。

9. 代码检查的错误列表包括以下几个大类:

  • 数据引用错误
  • 数据声明错误
  • 运算错误
  • 比较错误
  • 控制流程错误
  • 输入/出错误
  • 接口错误
  • 其它错误

10. 编写测试用例一般先用黑盒测试方法来编写测试用例,然后视情况需要使用白盒方法来补充用例。

11. Alpha测试是用户在开发者的场所进行测试。在开发者的指导下进行,是受控环境中的测试。Beta测试由软件的最终用户在真实环境中应用,并定期将错误报告给开发者。

12. 白盒测试有:

  • 语句覆盖
  • 判定覆盖(每个if分支会走到,但并不要求组合各种可能,只要有每有走到即可)
  • 条件覆盖(每个判定表达式各子式真假值均取到,不要求组合各种可能)
  • 判定条件覆盖
  • 条件组合覆盖(每个判定表达式各子式的真假值互相组合,全部取到)
  • 另还有点覆盖、边覆盖、路径覆盖。这均是把程序流程图有向图当作有向图而言的。

13. 等价类划分是黑盒测试中的基本技术,用来设计合法有效的测试用例,同时还有边界值分析。

14. 测试中用到的桩模块,即是对真实功能进行模拟的模块。

15. 执行模块测试的过程中,有增量测试和非增量测试两种。非增量测试用到其它模块时,用桩代替。因此各模块间可并行测试。增量测试则能更充分地测试到各个模块之间的关系,因组装带来的新问题等,使测试更充分。增量测试分为自顶向下和自底向上两种。

16. 自顶向下增量测试:先测顶,其下需调用的模块用桩代替,然后逐渐将真实模块替换桩模块,因此需要N-1个桩模块和一个控制模块。虽向下选下一个测试模块没有固定规律,但有两个原则:(1)尽早测试关键模块(2)尽早测试I/O模块。自顶向下的优点是:(1)可以使我们发现人为因素的错误和问题(2)可给用户演示(3)证明程序结构合理性(4)起到精神鼓舞作用。缺点是:由于只一个控制模块,难以控制到下面各个模块的输入粗细到每条路径覆盖等。

17. 向底向上增量测试:所有模块被测试时,其下用到的模块均已测试。故需n个控制模块,不需要桩模块。其优缺点与自顶向下相对,并且只有最后一个模块加入进行,程序才算完整。与自顶向下比较易于发现顶层错误相比,自底向上异于发现底层错误。

18. 程序员不应该测试自己开发的模块,最佳测试人员是模块的调用者。

19. 测试一般分为:模块测试、集成测试(增量式)、功能测试、系统测试、验收测试、安装测试。

20. 功能测试的用例设计依赖于程序外部规格说明。以证明软件各功能与程序外部规格说明一致。系统测试目的是发现程序外部规格说明的错误,因此其测试用例只能通过用户文档或书面材料获得。验收测试由最终用户执行。

21. 程序调试是软件开发过程中最不受程序员欢迎的部分之一,常用的暴力调试方法有:(1)打印变量(2)使用断点等。但缺点在于忽略了思考。打印变量则更可能改变源代码甚至程序结构。

22. 调试时最先应该是分析测试数据与结果,然后推断错误的原因,根据症状进行思考,很多错误可以不需要调试便能准确定位,思考推断常有归纳与演绎两种方法。

23. 实际调试不家回溯法(从出错处往前查找)、测试法(运行测试用例,与原用例类似的用例)。

24. 调试几个原则:

动脑筋

如遇到僵局,便留到稍后解决(思维可能焕然一新)

如遇到困境,可描述给他人听

仅将调试工具用作第二手段

避免使用试验法——仅将其作为最后手段(尝试修改源代码)

25. 判定覆盖要求每个if语句真假值均有以到,各个if语句之间并不无关;

条件覆盖要求每个if中的表达式各分量均取到不同的值,但各子表达式及各if之间并不无关;

这两种覆盖并不一定比另一覆盖更强,判定/条件覆盖同时满足以上二条件,但未必更强;

条件组合覆盖则if表达式子式的值至少组合一回,n个子式有2^n种组合。


转载于:http://blog.csdn.net/zhangren07/article/details/5453818

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值