三级信息管理技术分章节考试要点:软件工程(软件测试之测试的基本概念)
软件测试
在软件开发的一列活动中,为了保证软件的可靠性,人们研究并使用了很多方法进行分析、设计及编码实现。但是由于软件产品本身无形态,它是复杂的、知识高度密集的逻辑产品,其中不可能没有错误。物理产品在出厂前都要进行严格的检验,软件产品也不例外。软件开发总伴随着软件质量保证的活动,而软件测试是主要活动之一。软件测试代表了需求分析、设计、编码的最终复审。
测试是一项很艰苦的工作,其工作量约占软件开发总工作量的40%以上,特别对一些关系到人的生命安全的软件,共测试成本可能相当于开发阶段总成本的3~5倍。
(一)测试的基本概念
1.测试的目的
软件测试的目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。
明确测试的目的是一件非常重要的事,因为在现实世界中对测试工作存在着许多模糊或者错误的看法,这些看法严重影响着测试工作的顺利进行。
有人认为测试是为了证明程序是正确的,也就是说程序不再有错误,事实证明这是不现实的。因为要通过测试来发现程序中的所有错误就要穷举所有可能的输入数据,检查它们是否产生正确的结果。例如,一个需要3个16位字长的整型输入数据的程序,输入数据的所有组合情况大约有3×10 14 种,若每组数据的测试时间为1ms,那么即使一年365天,每天24小时地测试,也大约需要1万年的时间。
2.测试用例
要进行测试,除了要有测试数据(或称输入数据)外,还应同时给出该组测试数据应该得以怎样的输出结果,我们称它为预期结果。在测试时将实际的输出结果与预期结果比较,若不同则表示发现了错误,因此测试用例是由测试数据和预期结果构成的。
为了发现程序中的错误,应竭力设计能暴露错误的测试用例。一个好的测试用例是极有可能发现迄今为止尚未发现的错误的测试用例。一次成功的测试是发现了至今为止尚未发现的错误的测试。
3.测试的原则
基于上述测试目的,我们可以考虑以下有关测试的原则:
(1)确定预期输出结果是测试用例必不可少的一部分。如果只有测试数据而无预期结果,那么就不易判断测试结果是否正确。
(2)程序员应避免测试自己的程序,程序设计机构不应测试自己的程序。这是因为程序中的错误往往是由于程序员对问题说明的误解,由他来测试自己的程序就不易找出因这种误解而产生的错误。此外,开发程序是一项建设性的工作,而测试则是一项破坏性的工作(证明程序有错),这对开发人员或机构来说在心理上是难以容忍的。为了证明自己的程序没有错误或错误很少,他们往往不去选择容易发现错误的测试用例,而选择容易通过的测试用例。当然,这并不意味着程序员都不能测试自己的程序,如单元测试通常就是由程序员自己测试的。
(3)彻底检查每个测试结果。如果不仔细检查测试结果,有些已经测试出来的错误也可能被遗漏掉。
(4)对非法的非预期的输入数据也要像合法的和预期的输入数据一样编写测试用例。
(5)检查程序是否做了应做的事是成功的一半,另一半是看程序是否做了不该做的事。
(6)除了真正没有用的程序外,一定不要扔掉测试用例。因为在改正错误或程序维护后还要进行重新测试。
(7)在规划测试时不要设想程序中不会查出错误。
(8)程序模块经测试后,残存的错误数目往往与已发现的错误数目成比例。实践证明,程序中的大量错误仅与少量的程序模块有关,因此当A模块找出的错误比B模块多得多时,很可能A模块残存的错误仍比B模块残存的错误多多。
4.白盒测试和黑盒测试
测试的关键是测试用例的设计,其方法可分成两类:白盒测试和黑盒测试。
白盒测试是把程序看成装在一只透明的白盒子里,测试者完全了解程序结构和处理过程。它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。黑盒测试是把程序看成一只黑盒子,测试者完全不了解(或不考虑)程序的结构和处理过程。它根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |