软件测试的原则

上一篇 / 下一篇  2013-06-24 22:01:36 / 个人分类:测试理论

 

软件测试的艺术》读书笔记,软件测试的几条原则:


1.测试用例中一个必需部分是对预期输出或结果进行定义;

A necessary part of a test case is a definition of expected output or result.


有期望的输出或结果才更有力的说明存在问题,判断是不是bug不能凭感觉,必须要有依据。一个测试用例必须包括两个部分:对程序输入数据的描述;对程序在上述输入数据下的正确输出结果的精确描述。需求规格说明书就应该能让我们找到正确输出结果的精确描述。需求规格说明书一定要详细且精准,它是测试的指导书。


2.程序员应避免测试自己编写的程序;

A programmer should avoid attempting to test his or her own program.


当程序员建设性地设计和编写完程序之后,他的思维已经固定,很难让他改变视角以一种破坏性的眼光来审查程序。思维方式的改变是很难的,这是其中一个原因。另外,如果程序员错误地理解了疑难定义或规范,导致程序中存在错误,那么他可能会带着同样的误解来测试自己的程序,所以也就很难发现问题。当然,程序员测试自己的程序也不是不可能,但是让其他人来测试会更加有效,也会更容易测试成功。


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

A programming organization should not test its own programs.


编写软件的组织也是由个体程序员来组成,同样存在第2条中提到的心理难度。而且,通常编写软件的组织主要依据其在给定时间、特定成本范围内开发软件的能力来衡量编程组织。测试成员会从更多角度考虑软件的可靠性、实用性、易用性等等,把关注重点放在软件质量而不是完成进度。所以,编程组织很难客观地测试自己的软件。


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

Thoroughly ispect the results of each test.


测试来不得马虎,也不容放过眼皮底下的很明显的bug,彻底检查执行结果也是为了避免测试遗漏。当然,测试是不可能发现所有的bug的,但是一些测试用例中涉及到的测试点应当避免遗漏。


5.测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况;

The case must be written for input conditions that are invalid and unexpected, as well as for that valid and expected.


测试用例设计中有一种经典方法:边界值。当我们用合理范围内的数据测试时,往往问题很难发现,这个范围内的值开发人员肯定也考虑到了。当我们用合理范围外或者处于边界值上的数据测试时,往往有很多问题出现。软件必须有一定的容错性,虽然它有自己的处理范围,但对于不能处理的范围也应该给出可接受的处理方案。


6.检查程序是否“未做其应该做的”只是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”;

Examming a program to see if it does not do what it is supposed to do is only half the battle;the other halt is seeing whether the program does what if is not supposed to do.


软件应该严格按照需求说明书上的定义来实现该有的功能,如果实现了不应该做的,不是锦上添花,往往是画蛇添足。比如,某个打印机支持单面打印,而打印机软件上不仅给出单面打印的格式设置,也给出了双面打印的格式设置,这显然是不对的。


7.应避免测试用例用后即弃,除非软件本身就是一个一次性的软件;

Avoid throwaway test cases unless the program is truly a throwaway program.


    现在我们测试的软件几乎都不是一次性的软件,所以测试用例一定要保留,而不应该丢弃。当我们的bug被修改后,在做回归测试时,多数情况下都只检查了bug是否发生,而很少对相关功能重新测试。修改bug带来的程序变动,很可能产生其他问题,所以十分有必要对程序重新测试。如果重新测试时重新设计测试用例,显然很浪费时间。除此之外,保留测试用例还可以给以后的项目做参考。


8.计划测试工作时不应默许假定不会发现错误;

Do not plan a testing effort under the tacit assumption that no errors will be found.


我么需要牢记测试的定义,测试是未发现错误而执行程序的过程,测试不是一个证明程序正确运行的过程。心态会决定我们的做事态度,也会得到不同的产物。


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

The probability of the existence of more errors in a section of a program is proportional to the number of errors already found in that section.


错误总是倾向与聚集存在,我们还有一个二八原则,80%bug往往存在于20%的模块上。如果一个程序的某个部分发现了较多的bug,也应该适当调节资源分配,对容易出现错误的部分额外增加测试。


10.软件测试是一项极富创造性,极具智力的挑战性的工作.

Testing is an extremely creative and intellectually challenging task.


软件测试不是一件很容易的事,往往很多人还没有理解这一点。国内一些企业仍然很难重视测试这一部分。这也说明了我们的测试还需要更加努力,有价值体现才会得到认可。


TAG: 软件测试的原则

引用 删除 kingkingking   /   2013-06-25 23:21:28
学到测试的思想,是我想要的。
引用 删除 kingkingking   /   2013-06-25 23:20:50
5
icestick8586的个人空间 引用 删除 icestick8586   /   2013-06-25 20:03:48
icestick8586的个人空间 引用 删除 icestick8586   /   2013-06-25 20:03:36
3
 

评分:0

我来说两句

日历

« 2024-05-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 12655
  • 日志数: 9
  • 建立时间: 2013-03-18
  • 更新时间: 2013-12-12

RSS订阅

Open Toolbar