软件测试的艺术(读书笔记1)

最近一直在看《软件测试的艺术》,以下是我关于本书框架划分

第一部分 软件测试经济和心理学问题及测试原则

  包括第1章和第2章

第二部分 软件测试基础

  包括第4章 测试用例的设计;第5章 单元(模块)测试;第6章 更高级别的测试。

第三部分 软件测试中的人工测试方法

  包括第3章 代码检查、走查与评审;第7章 用户体验测试

第四部分 开发中的调试和测试思想

  第8章 调试;第9章 极限测试思想

第五部分 软件测试运用场景

  包括第10章 互联网应用测试;第11章的移动应用测试。

 下面先对第一部分进行简要介绍

第一部分 软件测试经济和心理学问题及测试原则

  首先,作者让读者做一个小测验,通过测试一个简单的程序,来设计测试用例,进而说明测试不是一件容易的事;然后,作者分别从软件测试的心理学和经济学方面对软件测试进行探讨;最后,作者归纳出一系列重要的测试指导原则。

  因为设计测试用例和进行软件测试并不是一件容易的事情,所以需要在心理学和经济学上进行进行考虑。在心理上,测试人员需要有正确的态度,在某些情况下,测试人员的态度可能比实际的测试过程本身还要重要;在经济上,对复杂的应用程序进行完全的测试,将耗费大量的时间和人力资源,这在经济上时不可行的。

  1、软件测试的心理学

  软件测试不是证明不存在错误的过程;软件测试不是证明软件能够正确完成其预定的功能;软件测试不是建立“软件做了其应该做的”信心的过程。

  软件测试是为发现错误而执行程序的过程。要假设程序中隐藏着错误(对所有的程序都成立),然后测试程序,发现尽可能多的错误。

  要通过测试程序增加程序的价值,而增加程序的价值是指提高了程序的可靠性或质量。提高了程序的可靠性,是指找出并最终修改了程序的错误。

  人类的行为总是倾向于具有高度目标性,确立一个目标有重要心理学影响。如果我们的目的是证明程序中不存在错误,就会倾向于选择较少导致程序失效的测试数据;如果我们的目标在于证明程序中存在错误,我们设计的测试数据就有可能更多的发现问题。

  一次成功的测试可以从两方面进行确定:1)能够发现程序中隐藏的错误;2)能够最终确定没有可以查出的错误;

  软件测试应该建立某种程度的信心:软件做了其应该做的,未做其不应该做的。

  2、软件测试的经济学

  因为软件测试不可能发现所有的错误,所以需要在测试前建立某些策略,应对测试的经济学挑战。策略包括:黑盒测试和白盒测试。

  1)黑盒测试:将程序看做一个黑盒子进行测试,而不需要了解程序内部逻辑。

  测试数据来源于软件规范,比如需求说明,需求分析,软件说明等。因为黑盒测试可以将所有的输入条件作为测试用例,但穷举所有的输入条件是无法实现的,所以就需要通过设计有限的测试用例,最大程度地提高发现问题的数量,以取得最好的测试效果。常见黑盒测试用例设计方法:等价类划分方法,边界值分析方法,错误猜测法等。

  2)白盒测试:通过对程序逻辑结构进行检查,从中获取测试数据。

  将程序中每条语句至少执行一次,也称为穷举路径测试。白盒测试也不完善,会出现三个问题:1.不能保证程序符合设计规范;2.不能发现程序缺少那些路径;3.不会暴露数据敏感错误。

  常用白盒测试用例设计方法:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,多重条件覆盖。

  综上,需要将黑盒测试和白盒测试结合起来,形成一个合理但不十分完美的测试策略,才能尽可能的发现程序中的问题。

  3、软件测试的原则

  1)测试用例中需对预期输出或结果进行定义

    用例设计中,只有对预期输出进行实现定义,才能引导测试人员对输出进行检查,如果没有对输出进行定义,你就不知道你测试的结果到底正确不正确。最好定义两个部分:a) 输入数据的描述;b) 在输入数据下输出结果的精确描述;

  2)程序员应当避免测试自己编写的程序

    程序员对于自己编写的代码都有谜一般的自信,同时他们也可能会错误地理解软件规范和定义,所以让其他人来测试程序更有效。(注意和“调试”不能混为一谈,调试是修正已知的错误)

  3)编写软件的组织不应当测试自己编写的软件

    例如某个公司编写的软件应该交由第三方测试机构进行测试。

  4)应当彻底检查每个测试的执行结果

    认真核对每个测试结果,同定义的预期结果到底符合不符合。

  5)测试用例的编写需要考虑有效和预期输入情况,同时也应考虑无效和未预料到的输入情况

    有效输入和无效输入同时进行验证,更能发现程序中问题。

  6)检查程序应包括其应该做的,同时也要检查其做了不应该做的

  7)测试用例使用完后应保留下来,方便下次使用

    保留测试用例,目的是当程序其他模块改动后,可以进行回归测试。

  8)编写测试计划时不应假定不会发现错误

    测试,是为了发现错误而执行程序的过程。

  9)程序中某部分存在错误的可能性,与该部分已发现错误的数量成正比

    某个程序由两个模块组成,模块A发现了5个错误,模块B发现了1个错误,那么模块A相比模块B,存在更多错误的可能性。另一个说法是,错误总是聚集存在。这种现象告诉我们,为了使测试获得更大的成效,最好对这些容易存在错误的部分进行额外的测试。

    软件测试的艺术(读书笔记1)_第1张图片

  10)软件测试时一项极富创造性、极具挑战性的工作

  

转载于:https://www.cnblogs.com/chengabc/p/11215552.html

你可能感兴趣的:(测试)