专栏首页用户6517667的专栏自动化软件测试与人工测试比较

自动化软件测试与人工测试比较

来源:http://www.51testing.com

 既然现在有了自动化测试,甚至现在许多团队在使用人工智能的方法,逐渐让机器来取代人的测试。那么作为测试工程师的人未来会不会消失?这是一个摆在许多人面前的一个严肃的问题。去年刚刚过世的著名的天体物理学家斯蒂芬·威廉·霍金(Stephen William Hawking)先生曾经警告世人:未来人工智能也许会是人类的终结者!是否会有这么严重吗?在回答这个问题前,先来看一下自动化测试优势和劣势。

  (1)自动化测试的优势

  ● 自动化测试可以执行手工测试相当困难或根本做不到的测试

  对于软件性能测试中的并发测试、疲劳性测试和强度测试,如果单纯使用人工测试是不可能完成的。记得在作者刚刚从事软件测试那个时候(2002年左右),国内软件性能测试工具少之又少,但是在工作中客户又提出了性能需求,经理竟然让五个工程师打开同一个产品的商品模糊查询界面,输入查询内容,然后经理喊口号:“1、2、3、点”,接下来五个工程师点击【查询】按钮,试图来进行性能并发测试。现在想起来真是觉得可笑。

  还有一种手工测试相当困难的测试是Jams Batch在他的著名的《探索式软件测试》一书中提到的“强迫症测试法”。如果执行用户登录-登出的操作1000次,试图发现程序会不会出现空指针异常或者内存泄漏的问题。如果让一个工程师采用人工的方法来完成,其难度可想而知。

  ● 自动化测试具有一致性和可重复性

  在手工测试的时候,往往会出现测试人员在测试时候发现了缺陷,可是由于时间过得太长,或者缺陷报告中操作步骤描述不清楚,或者其他因素,在给开发人员定位问题的时候不能重现。在排除一些偶发性问题的情况下,采用自动化测试可以有效地防止此类问题的发生。

  ● 自动化脚本完全可复用

  初期采用录制回放的工具进行自动化测试,比如早起的QTP、基于Firefox的Selenium1插件。最主要的原因是由于这些工具对于一些公用的模块难于复用。比如对于登录才可以使用的功能每次开始的时候都要执行登录操作,测试完毕为了让其他测试用例可以继续执行必须执行登出操作。由于早期的工具不具有复用性,相同的操作集中在各个不同的地方,这给软件测试脚本的维护带来的麻烦,而现在的自动化测试脚本均采用类似JAVA、Python这些面向对象的语言来完成,代码的复用发生了很大的改善。目前面向页面的封装、面向业务流的封装成为了自动化测试脚本的“宠儿”。

  ● 自动化测试使软件更有信任度

  由于自动化测试具有一致性和可重复性,所以自动化测试一旦发现问题,在排除测试代码、测试数据、对需求误解的错误外,其结果还是可以信任的,因为它里面没有人的主观意识的参与。

  ● 自动化测试适合做兼容性测试

  如果没有自动化测试,比如做基于WEB软件兼容性测试往往采用每个测试工程师的机器上安装不同的操作系统浏览器,运行同一版本。这样操作,如果测试工程师比较多的情况下可能还可行,但是一旦测试工程师比较少的情况下可能就将成为问题。如果有了自动化测试,只要把测试环境搭建起来,使用同一脚本在不同环境下自动运行,就可以做到有效的兼容性测试了。

  ● 自动化测试使回归测试更方便、可靠

  天下武功,唯快不破。现在移动互联网时代,讲究的一个字“快”。国内外许多大型的互联网公司平均一天发布的软件发布版本的次数高达2到4次。特别现在兴起的Agile、DevOps中特别关注自动化测试。因为自动化测试使回归测试变得更方便、更可靠。

  接下来谈谈自动化测试的劣势。

  (2)自动化测试的劣势

  ● 手工发现的缺陷远远比自动化测试得多

  在目前如果不采用基于AI的自动化测试下,有机构做过统计,估计80%的缺陷是由人工测试发现的,自动化测试发现的缺陷仅占20%。在ISTQB初级大纲中,软件测试目的被概括为四点,其两点为“发现程序缺陷”和“对程序树立质量信心”。所以手工测试主要针对于新开发出来的特性,其目的主要在于“发现程序缺陷”;而自动化测试化测试主要在于对老特性的回归测试,其目的主要在于“对程序树立质量信心”。在作者提出的纯软件测试理念中,把软件测试分为“测”与“试”两部分:“测”即验证软件是否满足用户提出的需求,主要通过自动化测试来实现;而“试”即试图找出软件中存在的缺陷,主要通过手工测试来实现。所以自动化测试与手工测试缺一不可,互为补充。见下图

  ● 自动化测试对测试人员的技术要求较高

  自动化测试工程师首先要会使用自动化测试工具,其次由于现在基于脚本开发的自动化测试越来越受到了青睐,所以要求自动化测试工程师需要掌握至少一门编程语言,且对应这门语言的测试架构框架、对数据库操作能力等有一定的要求。所以采用自动化测试技术对人的要求是非常高的。这也使进入软件测试的门槛变高了。

  ● 自动化测试成本投入高、风险大

  使用自动化测试工具是否可以提高研发本产品的质量?现有的工程师是否具有使用自动化测试的能力?公司是否有能力去购买一些商用的自动化工具?培养工程师学习自动化是否可行?是否被培养起来的工程师存在离职,另求高薪的可能?这些问题都是作为决策层应该考虑的问题。事实也很多次得证明,自动化测试是个好东西,但不是银弹,关键看企业的产品是否适用以及企业如何去使用。

  ● 自动化测试是死的,不具有情感

  计算机毕竟是机器,不具有人的抽象能力、想象能力等情感,所以类似于一些UI/UX、需要具有发散式思维的测试是不能完全依赖自动化测试。即使是同一份基于文字的自动化测试用例,让多个人去执行,或者让同一个人在不同时刻去执行,往往会发现不同的缺陷。另外在自动化测试优势中提到的兼容性测试,对于产品的分辨率适应性,文字会不会超出控件等问题,自动化测试可能也是无能为力的。

  ● 自动化测试完全不可能取代手工测试

  如上所述,自动化测试完全不可能取代手工测试。现在有些书籍、论坛、社群把自动化测试谈得神乎其神,无所不能、无所不可,这是对自动化测试的曲解,是一种不负责任的表现。正如敏捷、DevOps一样,是否适用,要根据自身产品特性、组织架构能力等各个方面来考虑。“世界上没有银弹!!!”

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:软件测试培训

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试Leader应该做哪些事?

    2.根据需求,概要设计和开发计划编写项目总体测试计划,详细测试计划,测试大纲和测试文档结构表(测试计划 a.已上线产品维护以及需求变更 b.后期新项目的开发);

    小老鼠
  • web测试的基本流程

      1)参与一个web新项目的测试前,先搜集测试相关的资料,包括原型图、各种需求文档、业务相关等需求相关材料

    小老鼠
  • 如何构建Web服务自动化测试系统?

      构建自动化测试系统中,需要根据项目大小和对错误的容忍程度,酌情补充不同类型和级别的用例。

    小老鼠
  • 软件测试员一定需要懂编程代码吗?

    软件测试人员需要懂代码吗?如果软件测试人员会代码,那还有软件开发人员的事吗?既能测试又能敲代码的人是不是很牛?

    新梦想IT职业教育
  • 测试工程师成长-笔记

    软件测试是需要投入各类资源: 人力, 物力, 财力, 时间等, 每家公司都会通过投入测试资源核算投入与产出比,以此考核测试绩效.

    louiezhou001
  • 自动化测试与手工测试对比

    一直以来,软件的测试主要是以手工测试为主,但是随着现代软件的复杂程度的加深,人们对使用手工方式来完成软件测试感到的越来越力不从心,同时因为在软件测试中存在着大量...

    软测小生
  • 1.前端自动化测试 之 视觉测试

    前端测试主要分五大方向测试,而这五大方向也分很多小方向测试,首先简单的介绍每个方向的概念

    前端博客 : alili.tech
  • 软件测试分类

    软件测试是指使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于检验是否满足规定的需求或者弄清预期的结果与实际结果的区别。本文主要...

    wencheng
  • 什么是数据驱动测试?学习创建框架

    数据驱动测试是一种软件测试方法,其中测试数据以表或电子表格格式存储。数据驱动的测试允许测试人员输入单个测试脚本,该脚本可以对表中的所有测试数据执行测试,并期望测...

    用户7466307
  • 测试测试测试测试测试测试测试测试测试测试测试测试

    奥特曼打小怪兽2222555

扫码关注云+社区

领取腾讯云代金券