软件测试的心里学和经济学

来源:互联网 发布:电脑画流程图软件 编辑:程序博客网 时间:2024/06/11 21:51

##########软件测试的艺术#############

1 测试是为发现错误而执行程序的过程

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

2 黑盒测试

     黑盒测试又称为驱动的测试或输入/输出驱动测试。使用这种测试方法,将程序视为一个盒子。测试目标与程序的内部结构完全无关,而是将重点放在程序不按其规范运行的环境条件。

      测试数据完全来源于软件规范,为了确保能够发现所有这样的错误,不仅得用所有有效的输入,而且还得用所有可能的输入进行测试。对一个c++编译器进行黑盒测试,不仅要创建代表所有有效C++程序的测试用例,还需要创建代表所有无效C++测试用例。如果程序使用到数据存储,如果操作系统或数据库运行程序,这个问题会变得尤为严重。

3白盒测试

     白盒测试或称为逻辑驱动的测试,允许我们检查程序内部结构。所谓穷举路径测试,即如果使用测试用例执行了程序中所有可能的控制流路径。程序中不同逻辑路径数量可能达到天文数字。虽然我们可以测试到程序中的所有路径,但程序可能仍然存在着错误。(即使穷举路径测试也不能保证程序合其设计规范,升序排序程序编程降序;程序因缺少某些路径存在问题;穷举路径测试不会暴露敏感错误)

4软件测试的重要原则

   测试用例中一个必须的部分是对预期输出输出或结果的定义,一个测试用例包括对程序的数据数据描述;对程序在上述输入数据下的正确输出结果的精确描述。

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

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

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

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

   检查程序是否“未做其应该做的”仅是测试的一般,测试的另一半是检查程序是否“做了其不应该做的”

   赢避免测试用例用后即弃,除非软件本身就是一个一次性的软件。(保留测试用例,当程序其他部件发生更新后重新执行,这就是我们所谓的“回归测试”)

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

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

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


0 0
原创粉丝点击