软件测试概论

发表于:2010-7-28 12:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  3)可靠性估计
  软件可靠性和软件的很多方面都有着重要的联系,包括结构和测试的数量。基于运行的资料(不同输入的相对使用频率),测试可以作为统计样本方法,获得失效数据,作为可靠性估计的依据。
  软件测试还不成熟。到目前还是个艺术,因为我们还不能把它变成一门科学。我们还在使用20-30年前同样的技术,其中的一些技术中,工艺和启发式的成分多于工程化的思想方法。软件测试是昂贵的,但是不测试,其代价更加昂贵,特别是在那些人命关天的重要系统中。解决软件测试问题不比解决Turinghalting容易。我们从来不能保证一个软件是正确的。不存在这样一个验证系统,它能够验证每个正确的程序。我们甚至不能确定那个验证系统本身是否正确!
二、关键概念
 2.1 分类
  测试方法和测试技术,在生命周期的不同阶段有不同的目的。按照目的分类,软件测试可以分成:正确性测试、性能测试、可靠性测试和安全测试。按照阶段划分成:需求阶段测试、设计阶段测试、编程阶段测试、评价测试结果,安装阶段测试、接受测试和维护测试。按照范围划分:单元测试,模块测试、集成测试和系统测试。
  2.1.1 正确性测试
  正确性是软件的最低需求了,也是测试的最本质的目的。正确性测试需要一些圣贤,告诉哪些行为是正确的。测试者本人可能或不能知道被测软件内部的详细情况,如控制流和数据流。所以,白合观点和黑合观点都可以用来测试软件。我们必须注意到,白合和黑合的点子不仅仅局限在正确性测试上。
  1)黑盒测试
  在黑合测试中,测试数据来自于功能需求的描述,而不是程序结构。也称做数据驱动、输入/输出驱动,或基于需求的测试。因为仅关心软件模块的功能,黑合测试也叫做功能测试—一种强调功能执行、检查输入/输出数据的测试方法。测试者将被测软件看成是个黑合—仅输入、输出和规格说明是可见的,功能是从什么样的输入产生什么样的输出来确定的。在测试中,输入不同的数据,根据规格说明比较不同的输出值,来确认软件的正确性。所有的测试用例都是从规格说明中分析出来的。不考虑代码的实现细节。
  很明显,我们覆盖输入空间越大,我们发现的问题越多,我们对软件质量的信心也随之越大。理想的情况是,我们彻底覆盖所有的输入空间。但是正如我们刚才所说的,考虑无效的输入、时间、次序和可用的资源,彻底的测试各种输入的组合对绝大多数程序来说是不可能的。爆炸式增长的组合是功能测试的障碍。让问题变得更糟的是,我们甚至不知道规格说明本身是否正确和完整。由于规格说明使用的语言(一般是自然语言),二义性和模糊是不可避免的。即使我们使用了正式的或受限的语言,我们还是不可能在规格说明中写出所有的情况。有时侯,规格说明本身就是一个难以解决的问题:不可能有有限的语言精确地描述每一个可能遇到的情形。人们很少能清楚地描述他们想要什么—他们通常会告诉一个原形是或不是他们所想要的。规格说明的问题引起的bug占到整个软件bug数量的30%左右。
  黑合测试的研究主要集中在如何用最小的代价(通常是指测试用例)达到最大的效果。穷尽输入用例是不可能的,但完全测试一个输入空间的子集还是有可能的。分割(Partitioning)是常用的技术之一。如果我们对输入空间进行分割,并且假设所有的分区内的输入值都是等价的,那么我们就只需测试那些在区内有代表性的值,就足够覆盖全输入空间。域测试(Domaintesting)将输入域(domain)分成区(region),考虑每个域中的输入值是个等价类。通过在每个域中选择一个或多个值来做测试,就可以穷尽每个域。边界自得其是特殊的兴趣点。经验表明,探寻边界条件的测试用例常常有较高的回报。边界值分析需要一个或多个边界值被选择来作为代表性的测试用例。域测试的困难在于规格说明中不正确的域定义不能被有效发现。
  好的分区需要对软件结构的了解。好的测试计划不仅包含黑合测试,也包含白合途径,以及两者的混合使用。

52/5<12345>
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号