自动化测试与手工测试对比
一直以来,软件的测试主要是以手工测试为主,但是随着现代软件的复杂程度的加深,人们对使用手工方式来完成软件测试感到的越来越力不从心,同时因为在软件测试中存在着大量的重复性工作,而这种工作是比较适合机器而不是人类来完成的。
因此,自动化测试成为最佳的解决方案;而所谓自动化测试,实际上是将大量的重复性的测试工作交给计算机去完成,一个优秀的自动化测试方案,不但可以满足科学测试的基本要求,而且可以节约大量的时间、成本、人员和资源,这样不仅会大大减少软件工作人员的工作强度,而且会极大的提高企业效益。由于自动化测试在我国开展的时间还不是很长,所以容易有人对它产生误解。特别是有些软件企业的领导,有些人认为自动化测试代价太高,很难实施;而有些人却认为自动化测试可以容纳一切,可以很容易的替换手工测试。其实这些看法都是很片面的。
本文通过对软件测试活动的实施过程的各个步骤的展开的顺序来对手工测试和自动化测试做一个简单的比较,以达到澄清测试误区目的,为我们在软件测试项目中对测试方法的选择做一点参考。
软件测试的实施过程
对于软件测试活动本身而言,也是一个工程化的过程,要经历测试项目立项,测试计划的编制,测试的设计,测试的实施,测试的执行,测试的评估几个阶段。这一过程对手工测试也好,自动化测试也好都是一样。软件测试活动实施过程图如下所示:
图片来自pointer_y的博客
手工测试和自动化测试的特点及各自适用场合
手工测试特点:
● 测试人员要负责大量文档、报表的制订和整理工作,会变得力不从心。
● 受软件分发日期、开发成本及人员、资源等诸多方面因素的限制,难以进行全面的测试。
● 如果修正缺陷所需时间稍长,那么想将手工测试应用于回归测试将变得异常困难。这是因为需要测试的测试用例太多。
● 对测试过程中发现的大量缺陷缺乏科学、有效的管理手段,责任变得含混不清,没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率。这样往往会导致最后的汇总报表数据不准确。
● 反复测试带来的倦怠情绪及其他人为因素使得测试标准前后不一,测试花费的时间越长,测试的严格性也就越低。
● 难以对不可视对象或对象的不可视属性进行测试。
自动化测试的特点:
● 可以运行更多更频繁的测试用例。
● 可以执行一些手工测试困难或者不可能做的测试。如对不可视对象的测试,利用面向对象的自动化测试脚本就很容易实现。
● 可以更好的利用资源。在夜间执行自动测试用例。
● 测试具有移植性和可重复性。好的测试脚本往往具有较好的平台移植性。
● 可以更快地将软件推向市场。因为自动测试节省了大量的时间。
但是自动化测试要求的先期投入比较大,而且要求人员必须经过严格的培训。所以手工测试和自动化测试各自适用的场合如下:
● 测试很少执行的项目中。当测试用例执行频度太小时(一年一次),我们可以直接使用手工测试就可以了。
● 软件运行仍然不稳定时,适合使用手工测试。
● 测试结果很容易通过人验证的测试项目适合手工测试。
● 测试项目中涉及物理交互比较多的时候适合手工测试。如需要经常查看打印机,绘图仪的输出时。
● 软件维护时使用的回归测试适合自动化测试。
● 执行负载、压力测试时适合自动化测试;例如测试服务器的最大访问上限等。
● 配置和兼容性测试等项目适合自动化测试。
自动化测试其实就是通过自动化工具执行定制好的测试脚本,可以节省人力和时间成本,提高测试效率。但自动化测试不是并不能完全代替人工测试。自动化测试能解决很多问题,同时也带来很多问题。下面是我对自动化与手工测试的一个对比,算是一点心得。
(1)覆盖率
优势:在同等时间内,启动自动化测试能够覆盖更多的功能。
劣势:只适合回归测试,开发中的功能不划算。对于开发中功能,需求或者实现的更改,都会导致自动化脚本的变更,维护脚本的工作量和开发这个功能不相上下,实在是不划算。
(2)测试效率
优势:完成同等数目的测试,启动自动化速度更快。
劣势:脚本开发比用例开发耗时长,包括编写脚本、调试脚本、维护脚本,而手工测试也要对测试哦用例进行撰写、评审、修订。由于用例编写更多为自然语言,时间上肯定会少。这里也引申一个另外的一种观点,直接用自动化脚本替代测试用例,也不乏是很好的做法。
(3)执行可靠性
优势:可靠的按脚本执行,后续定位、复现有明确的配置路径可循。
劣势:程序是死的,人是活的。目前而言,最智慧的还是人。可以说是成也萧何败也萧何,自动化的稳定来源于其死板,而人的智慧体现在思维的跳跃,跳跃的思维也会导致后期不易定位。
(4)资源利用率
优势:设备、仪表资源能够7*24小时利用。
劣势:无。这点上,自动化完胜。
(5)人力上限
优势:可进行压力、负载、并发、重复等人力不易完成的任务。
劣势:无。这点,自动化完胜。
(6)人员培养
优势:提升测试人员能力,提高与开发沟通的效率。
劣势:培养一名自动化测试人员耗费资源更多,不但是功利的说自动化工程师更贵,同时在团队中推广自动化配套的培训、测试管理、产品开发环节都要跟上。增加的环节从某种意义上讲,就是浪费,因为如果不弄自动化,都可以省了。
往期推荐:
自动化测试与手工测试对比
Annotation:Part of the content reference to PriticeEveryday's & joshuah's blog(****)