软件测试概论

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

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

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

分享:
    2)白合测试
  相对于黑合测试,在白合测试里,我们把软件看成是个白合子,或者是个玻璃合子。软件程序结构和流程对测试来说是可见的。测试佳话是按照软件的实现细节,如程序语言、逻辑和风格,来制定的。测试用例从程序结构的分析而得来的。白合测试也叫做玻璃合测试、逻辑驱动测试或基于设计的测试。
  因为我们注意到程序的内部结构和对其相关知识的了解,棘手的问题得以缓解,所以在白合测试方面,现在有了很多可用的技术。在白合测试里,对软件的某些方面进行彻底测试的意图还是很强烈的,某种程度的穷举是可以达到的,诸如至少程序的每一行都覆盖一次(语句覆盖),遍历每一个分支程序(分支覆盖)或覆盖所有可能的“真”、“假”条件的混合(多重条件覆盖)。
  控制流测试,循环测试和数据流测试,都将相应的软件流结构映射到一个定向图上(directedgraph)。测试用例是根据条件精心选择的,所有的节点和路径都至少被覆盖(或被遍历一次)。这样做,我们可能发现一些不必要的“死”代码,即那些从来都用不到的代码,或从来没有得到执行过,在功能测试中,我们不能发现这些“死”代码。
  在突变测试中,原始的程序代码是混乱的,存在很多变异程序,每个变异程序包含一个缺陷。程序的每个缺陷版本叫做一个变异。测试数据是根据破坏变异的效力来选择的。一个测试用例杀死的变异越多,它就被认为越好。变异测试的问题在于,计算的工作量太大。黑合方法和白合方法的边界划分得不是很清楚。上面提到的很多测试策略,可能不是很有把握地划入到白合或是黑合测试里。没有在这里讨论,如事务流测试、语法测试,有限状态机测试和很多其它测试策略,也很难说它是白合还是黑合。其中一个原因是,这些测试技术需要对被测软件的规格说明有一定的了解。另一个原因是,规格说明本身也是很宽泛的—它可能含有各种需求,甚至包括了程序的结构、程序设计语言和程序风格,把他们也作为规格说明的一部分了。
  我们也许不愿意将随机测试考虑成一种测试技术。测试用例的选择简单明了:随机抽取。[Duran84]里的研究表明,随机测试对很多程序而言是比较划算的。某些小的错误可以用较小的代码发现。它也不比其它精心设计的测试技术差。人们也可以根据操作的信息(operationalprofiles),使用随机测试结果获取可靠性的估计。将随机测试和其它测试技术混合使用,还能衍生出更强大、更经济有效的测试策略。
  2.1.2 性能测试
  并不是所有的软件都有明确的性能规格说明。但是,每个系统都有隐含着的性能需求。软件不应该无限制地占用资源和时间。有时候,在讨论引起系统性能下降的软件设计问题时,我们将这些问题称之为“性能bug”。
  性能从来是个很大的关注点,驱使着计算机的升级换代。软件系统的性能评价通常包括:资源占用,吞吐量、反应时间、等待处理的任务的最大或平均队长(queuelength)。需要考虑的有代表性的资源包括:网络带宽需求、CPU周期、磁盘空间,磁盘访问操作和内存占用。性能测试的目标可以是辨认性能瓶颈、性能对比和评价,等等。性能测试的有代表性的方法是使用基准(benchmark)。基准四一个程序,被设计用来作为典型系统使用的代表。
  2.1.3 可靠性测试
  软件可靠性是指系统0失效操作的概率。它和软件的很多方面相关,包括测试过程。靠量化与之相关的因子来直接估计软件的可靠性恐是非常困难的。测试倒是个有效的方法来衡量软件的可靠性。通过操作信息(operationalprofile)的指导,软件测试(通常是黑合测试)可以用来抓获失效数据,进一步,可以使用一个估计模型分析这些数据、估计现在的可靠性、预测未来的可靠性。所以,在可靠性估计的基础上,开发者可以决定是否发布软件,用户可以决定是否购买或使用该软件。使用软件的风险也可以根据可靠性数据得到评估。[Hamlet94]提倡测试的主要目标应该是度量被测试的软件的可依赖性(dependability)。
  关于可依赖的软件,这里有一个直观的定义:它不会意外地或以灾难性的方式失效。根据这一简单的标准,鲁棒性测试和压力测试是可靠性测试的变异。
  软件模块的鲁棒性,是指软件在压力的环境里,对异常输入的正确处理的程度。鲁棒性测试区别于正确性测试,在这里,程序的正确性不在考虑之列。它只关注鲁棒性问题,如机器瘫痪、进程刮死或不正常终止。道理相对来说简单,所以鲁棒性测试相对于正确性测试来得更轻便、更具有伸缩性。这一研究近来引起越来越多的兴趣,大多数研究使用商用操作系统作为他们的研究对象。
  压力测试,或负载测试,常常被用来测试整个系统,而不是仅仅针对软件。在这样的测试里,软件或系统在、或超出规定的限制范围内运行。有代表性的压力测试包括资源耗尽、活动爆发,以及维持高负荷。
  2.1.4 安全性测试
  软件质量、可靠性和安全性是紧密相关的。软件的安全缺陷可以用入侵的方式来发现。随着互联网的发展,软件安全问题变得更为严重。
  很多关键应用软件和服务对于恶意的攻击,具有集成的安全措施。这些系统的安全性测试包括识别和消除软件中可能导致潜在安全漏洞的缺陷,确认安全措施的效力。模拟的安全攻击可以发现安全弱点漏洞。
53/5<12345>
价值129的会员专享直播免费赠送,添加微信领取听课名额哦~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号