51Testing软件测试论坛

标题: 自动化动态测试的战略优势 [打印本页]

作者: Trinitytec    时间: 2016-8-10 16:13
标题: 自动化动态测试的战略优势
动态测试和静态测试
软件测试主要有两种基本方法,即:动态测试和静态测试。动态测试需要执行源代码;静态测试有时候也被称作静态分析,这种测试方法就是通过分析源代码,检查出编码中不一致的地方以及潜在的错误。本白皮书主要着眼于动态测试。

测试项目的需求
在对软件进行动态测试时,一般会用到两种基本测试方法。至于到底该采用哪种方法则取决于测试需求。通常情况下,测试需求又分为高层级需求和低层级需求,人们一般都是根据这两种需求来选择合适测试方法。
高层级需求通常都要通过系统测试来实现。低层级测试则要通过单元测试和集成测试来实现。但很多项目中,会把单元测试和集成测试与系统测试结合起来,以保证测试的完整性。

测试方法
人们在开发和测试软件时,会用到许多方法。以前,项目一般用的都是瀑布式开发法,这种开发方法要进行多次构建,而且每次构建后都要进行单元测试、集成测试和系统测试。此外,还有一种比较现代化的开发方法,叫敏捷开发。这种方法要求在应用代码编写完成之前就要将测试构建好。使用这种方法,最开始的时候,所有测试都会失败。但是随着应用代码不断开发完成,代码就逐渐能够通过这些测试。敏捷开发的理念就是:开发的所有代码都要通过相关的单元测试。

共同点
无论采用哪种软件开发方法(瀑布式开发、螺旋式开发、以需求为基础的开发、敏捷开发、极限编程,等),都要用到几个基础测试模块:单元测试、集成测试、系统测试。

测试术语
以下是本白皮书中其它地方用到的关键术语:
[attach]102124[/attach]

先交货!以后再测试!
不幸的是,从有计算机编程开始到现在,经常会出现测试不充分、测试质量不高的情况,因而就无法始终保持产品的高质量和高可靠性。之所以测试工作会做得不够充分,主要有4大原因:

成本
因为测试本来就是低效的劳动密集型工作,所以测试的成本会比较高(到现在也是如此)。(一般来说,进行组件测试时,要为每行待测代码编写一行测试代码。)

时间和人员方面的限制
在项目时间表中,给测试安排的时间通常都不会很充裕。而且,被安排去测试的人员可能都不太熟悉测试需求,对各种测试方法也不太了解。然而要搭建一个测试环境来测试软件的各个组件,其实并不是容易。为了保证测试的效率,测试人员一定要了解整个开发过程,并对正在开发的系统有一个全面的认识。如果工程师并不了解正在开发的系统,他们可能就会浪费很多时间原地打转,无法进行高效的测试。

维护问题
更新测试驱动和桩的工作会比较枯燥、没有成就感,而且基本也不会受到赞赏,所以如果不是非做不可的话,人们通常都不愿意积极去做这项工作。
另外,被安排到测试任务的工程师很可能并不知道怎么将独立的单元融入到整个系统中。而且因为测试驱动和桩都没有很好的(如果有的话)成文记录,每次进行测试时,为了保证该测试是一次全新的测试,都要创建和使用新的测试驱动和桩,而不会重复使用之前用过的。

没有指导方案来保证测试的一致性
通常,测试各个组件要用的方法是由组件开发人员酌情决定的,因而没有指导方案或结构来保证项目中的测试方法和报告的一致性。因而就会浪费很多宝贵的时间来追踪“ghost缺陷”,这样就很难实现重复测试了。

有意思的是,关于A/N BSY-2 战斗系统(A/N BSY-2 Combat System)项目的GAO报告指出,没有指导方案来保证测试的一致性这个问题严重阻碍了高质量软件组件的开发(《GAO/IMTEC-91-30 BSY-2开发风险和生产计划》)。

自动化成为解决良方!
下图展示了诸如VectorCAST这样的先进验证工具是如何完全自动化地创建测试环境和测试用例的。
[attach]102125[/attach]

由VectorCAST生成的可执行环境(套件)包含测试驱动、被测的源文件、用户为依赖单元指定的桩、实际依赖。测试环境是靠数据驱动的,也就是说:在执行过程中,环境要读取测试数据。利用这种方法就不需要对每个测试用例都进行编译,并将其链接到新的执行环境中了。VectorCAST可以自动生成测试环境,这就很好地解决了上面提到的所有问题。

降低成本
进行自动化测试时,不需要手动创建、维护、替换测试环境,而手动测试的费用大概要占到一半的软件项目成本,所以自动化测试可以大大降低软件开发的总成本。对于大型的复杂系统来说,自动化测试更有助于降低成本。

缓解时间和员工方面的压力
实现了自动化测试,曾经被安排去创测试环境和测试案例来检验系统的开发人员现在又可以回去开发系统了。另外,不了解正在开发的系统的测试工程师也不需要浪费宝贵的时间来做测试的工作了。

省去测试维护方面的工作
利用自动化测试就不需要再对测试代码进行维护了。每次某个被测单元经过验证之后,就会根据源代码的检验结果自动生成新的测试环境。另外,在自动化测试过程中,还会自动保存测试用例和结果,然后将其用于回归测试中。

不再需要指导方案
以前需要指导方案来保证测试方法和结果的一致性,但是现在只要靠“自动化”就能实现。

结论
自动化测试会从3个主要方面改善软件开发过程:
自动化测试会减少开发和维护测试代码和测试用例所需的工时,并提高整体的开发效率,从而帮助节约成本。实现自动化测试之后,也不会再出现因为测试代码和测试用例的复用性低而无法经常进行重复测试的情况。
通过自动化测试,能够在软件开发生命周期的早期发现问题。ISO 9000 和软件工程研究所( Software Engineering  Institute)已证明:如果在软件生命周期的早期发现问题并进行修复,那么修复的成本会降低50%。如果在向客户发布产品之前发现问题,会减少95%的修复成本。
在开发或维护单元测试方面减少手动操作,改用自动化实现,可以确保测试和报告的通用性。而且自动化测试可通过保存测试用例和测试结果,来保证测试的可重复性,进而确保通过连续测试可以发现真正的回归缺陷。








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2