测试驱动开发在系统中的设计实现及效能分析

发表于:2013-6-05 10:56

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

 作者:李瑛 彭军    来源:51Testing软件测试网采编

  摘要:介绍测试驱动开发(TDD),以某通讯系统中测试驱动开发实现为例,从理论与实践上论证了在复杂系统中测试驱动开发可提高测试的效率,在整体上确保系统的安全可靠性。

  关键词:软件测试;TDD;测试驱动开发;cMM;软件能力成熟度;自动测试脚本;

  1、简介

  为了在软件发布前发现尽量多的问题,在开发结束后进行测试,进而为了在软件开发的前期发现尽量多的问题,而在软件开发的过程中引入测试。随着软件产业的迅猛发展,尤其在通讯、航空、国防等大型复杂系统的研制中,对系统的可靠性、安全性要求尤为重要,为了提高系统的开发效率,在软件开发的概念阶段就把测试作为需求进行设计,即测试优先的理念,也就是测试驱动开发。

  2、测试是确保软件质量的重要手段

  软件工程的发展提出在软件开发的过程中、在开发的每一个阶段对软件的质量进行监控,以便生产出高质量的软件产品,测试体现在软件开发的每一个阶段中,这也就是CMM所强调的一种理念。现代的软件开发工程是将整个软件开发过程明确的划分为几个阶段,将复杂问题具体按阶段加以解决。在软件的整个开发过程中,可以对每一阶段提出若干明确的监控点,作为各阶段目标实现的检验标准,从而提高开发过程的可见度和保证开发过程的正确性。实践证明,软件的质量不仅是体现在程序的正确性上,它与编码以前所做的需求分析,软件设计密切相关。因此,为了保证软件的质量,应该着眼于整个软件生存期,特别是着眼于编码以前的各开发阶段的工作。广义的软件测试由确认、验证、测试三个方面组成:

  (1)确认:评估将要开发的软件产品是否是正确无误、可行和有价值的。包含了对用户需求满足程度的评价,确保一个待开发软件是正确无误的,是对软件开发构想的检测。

  (2)验证:是检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。验证意味着确保软件开发过程的正确无误。

  (3)测试:与普通的测试概念统一。通常经过单元测试、集成测试、系统测试三个环节。

  在整个软件生存期,确认、验证、测试相辅相成,分别有其侧重的阶段。确认无疑会产生验证和测试的标准,而验证和测试通常又会帮助完成一些确认,特别是在系统测试阶段。

  3、测试驱动开发

  3.1 测试驱动开发的提出

  测试驱动开发的理念强调把测试作为开发过程的一个主要部分,比如在软件的需求阶段,把测试作为需求的一部分,在软件开发的每一个阶段,都有一部分的设计和代码是专门为测试而服务的。这样在编码之前先设计测试方案,从测试的角度验证设计,推导设计,同时将测试方案作为编码的准绳,实时验证其正确性。

  下面具体介绍某无线网通讯系统中实现测试驱动开发的过程,以及取得的结果。

  3.2 测试驱动开发设计实现

  在需求分析阶段集合开发设计人员、测试人员讨论测试需求,然后在该项目开发的后续每一个阶段来对这些测试驱动需求进行设计,最终在编码阶段实现并在测试阶段测验其效果。

  3.2.1 需求分析阶段

  在需求分析阶段通过综合讨论与论证,确定了以下4个方面的测试需求:

  (1)可观察性需求:开发出来的软件是可观察的。比如发生故障时会以告警、调试信息等方式以供查看。

  (2)可控制性需求:开发出来的软件是可以控制的,并且不影响其正常运行。比如说当发生某一严重故障时,可以通过使用某一预留的功能开关来定位、解决。

  (3)协议测试需求:要满足该软件特定协议的规定和要求。比如要对这个协议进行测试需要一些特定的观察点,那这个软件就可以把这些观察点的值输出来以供对比、甚至可以自行比较并在最后输出一个是否符合该协议的测试结果。

  (4)业务测试驱动需求:要满足特定业务流程的规定和要求,把一些特定的阶段输出来以供对比是否符合标准流程、甚至可以自行比较并在最后输出一个是否符合该标准流程的测试结果。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号