基于Rational 的B/S 架构软件自动化测试研究[2] 软件测试
1 软件测试及其自动化测试技术
1.1 软件缺陷代价
软件缺陷,通常称之为Bug,是软件质量的对立面:即存在着不符合质量需求或违背软件用户、客户、企业意愿的一系列问题。软件测试的目的在于尽快尽早地发现更多的缺陷,并监督和帮助开发人员修正缺陷。
缺陷发现得越晚,修复缺陷所付出的代价就高。缺陷代价与软件生命周期各阶段的关系曲线图,在软件工程中,越到工程项目后期,发现单位Bug并修复其所花的成本代价越大。例如IBM 每年都要花费2.5 亿美元来修复和改正1.3 万个客户反馈的缺陷,平均每个缺陷约合2000 美元。
总之,软件测试越早介入对整个工程越有利,对后期损失也越小。
1.2 传统手工测试和软件自动化测试
软件测试工作量很大,一般大型应用软件用于测试的时间占整个工程的50%以上,用于高可靠性高稳定性软件的测试时间则更多。由于手工测试存在着很多局限性:首先,它无法做到全代码路径覆盖,且对于一些简单功能性、机械性、重复性的测试工作量过大,它很难捕捉许多与时序、死锁、资源冲突等相关的错误,
无法模拟大量数据或大量并发用户下的性能测试场合,对于一些模拟较长年限工作的系统稳定性工作也无法展开,想在短时间内完成成千上万个测试用例的测试工作不现实,更不用说做大量的回归测试和性能测试。软件自动化测试技术将弥补手工测试的以上不足并合理解决问题,利用自动化测试工具,
编写脚本程序并自动执行模拟用户对计算机的操作过程行为,可以大大提高测试的工作效率。实施自动化测试和手工测试的效率。通常,除了在制定计划制度阶段没有明显改善效率外,在其它各个阶段,软件自动化测试技术都大大提升了软件测试的效率,并将测试工作总量减少75%。虽然自动化测试在测试第一次执行时,
修改性较差,开支也比较大,但是运行很多次后,却比手工测试经济得多。可以用Keviat 图来说明软件测试的4 个质量特性。由Keviat 模型可知,测试的每个特性的每个坐标点越大,连线组成的封闭区域越大,测试效率也就越高。
1.3 自动化回归测试
所谓回归测试,就是指在软件新一轮的Build(即软件最新且未经测试的版本) 出来后,对原软件代码有修改的部分,不论是修改错误还是新增功能或提高性能,必须重新测试现有的功能,以便确定修改是否达到了预期目的,是否损害了原有的正常功能,以保证对代码修改的正确性,
且不会对其余部分带来负面影响。由于回归测试要频繁重复地运行,工作量很大,是使用自动化测试技术的最佳时期,自动化测试技术可以使软件回归测试以非常高效的方式进行。