自动化测试与手工测试比较

news2024/11/25 19:51:46

 既然现在有了自动化测试,甚至现在许多团队在使用人工智能的方法,逐渐让机器来取代人的测试。那么作为测试工程师的人未来会不会消失?这是一个摆在许多人面前的一个严肃的问题。去年刚刚过世的著名的天体物理学家斯蒂芬·威廉·霍金(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.coloradmin.cn/o/785123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt - macOS 安装配置

文章目录 一、关于 QT1.2 Qt的发展史1.3支持的平台1.4 Qt版本1.5 Qt 的优点1.6 成功案例 二、软件安装1、保证已 Xcode 和 Command Line Tools2、下载 QT3、下载 [qtcreator](http://download.qt.io/official_releases/qtcreator/)查看qt版本 三、创建工程Qt 常见用法 四、基础…

智能安全配电装置应用场景有哪些?

安科瑞 华楠 一、应用背景 电力作为一种清洁能源,给人们带来了舒适、便捷的电气化生活。与此同时,由于使用不当,维护不及时等原因引发的漏电触电和电气火灾事故,也给人们的生命和财产带来了巨大的威胁和损失。 为了防止低压配电…

音频转换工具怎么使用你了解吗?让我来跟你分享背后原理

相信小伙伴们平时都会听听喜欢的音乐放松心情吧,不过你是否遇到过,想在一个播放设备上放一首歌的时候,却发现不支持该格式?音频转换格式软件在我们的生活中扮演着越来越重要的角色。这些软件可以帮助我们将音频文件转换成不同的格…

炒股最好用的5个指标?_通达信公式

摘要: 炒股市场是一个充满挑战的领域,而找到可靠的指标来辅助投资决策是成功的关键之一。在众多的指标中,神奇指标网提供了五个被广泛认为是炒股最好用的指标。本文将详细介绍这五个指标,包括其原理和如何应用它们来辅助投资决策。 导言: …

蓝桥杯专题-真题版含答案-【图形排版】【包子凑数】【位反序数】【自守数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

Java进阶 —— 多进程并发

前言 在系统学完Java的面向对象编程之后,我们需要认真地来学习Java并发编程,我们在学习计算机操作系统的时候也都了解过进程、线程和协程的概念。在这篇文章中荔枝主要会梳理有关线程创建、线程生命周期、同步锁和死锁、线程通信和线程池的知识&#xff…

android app控制ros机器人一

android开发app,进而通过控制ros机器人,记录开发过程 查阅资料: rosjava使用较多,已经开发好的app也有开源的案例 rosjava GitHub https://github.com/ros-autom/RobotCA https://github.com/ROS-Mobile/ROS-Mobile-Android…

因果推断(一)合成控制法(SCM)

因果推断(一)合成控制法(SCM) 在互联网时代,产品迭代速度越来越快,营销活动也越来越多。分析师因此需要快速的量化每次迭代或每次营销的效果,探索改变与结果之间的因果关系,并将优秀…

idea如何解决导入的项目不是Maven工程(文件下面没有蓝色的方格)二

简介: Maven项目导入,idea不识别项目 解决方法: 选中pom.xml -- 右键 -- Add as Maven Project

使用Python搭建代理服务器- 爬虫代理服务器详细指南

搭建一个Python爬虫代理服务器可以让你更方便地管理和使用代理IP。下面是一个详细的教程来帮助你搭建一个简单的Python爬虫代理服务器: 1. 首先,确保你已经安装了Python。你可以在官方网站(https://www.python.org/)下载并安装最新版本的Python。 2. 安…

Spring 中简单存取 Bean 的相关注解

目录 前言存储 Bean 对象五大类注解方法注解(Bean) 获取 Bean 对象 (Autowired)属性注入多个同类型 Bean 注入怎么办? Setter 注入构造方法注入(官方推荐) 前言 之前我们存储获取 Bean 的操作很繁琐,需要将…

在职硕士|2023级中国社科院-美国杜兰大学合办双证能源管理硕士(MME)

金融硕士 在职硕士|2023级中国社科院-美国杜兰大学合办双证能源管理硕士(MME) 中国社会科学院大学与美国杜兰大学合作举办的能源管理专业硕士学位教育项目(UCASS-Tulane Master of Management in Energy,简称MME)于2…

《人工智能安全》课程总体结构

1 课程内容 人工智能安全观:人工智能安全问题、安全属性、技术体系等基本问题进行了归纳整理。人工智能安全的主要数据处理方法,即非平衡数据分类、噪声数据处理和小样本学习。人工智能技术赋能网络空间安全攻击与防御:三个典型实例及攻击图…

mybatis_配置之属性优化

概念 别名优化: 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如: 在xml文件里为SQL映射文件中定义返回值类型的属性起个别名 之后直接使用User进行使用 核心配置文件: MyBa…

常见面试题分享1

一、对JVM的了解 1.1 什么是JVM? JVM(Java Virtual Machine),俗称Java虚拟机。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。…

商城体系之产商品系统

本文主要讲解商城体系下产商品系统的设计。商城系统可以拆分成多个业务中台和多个应用服务。 1、产商品系统业务架构 产商品系统作为商城重要的基础信息组成部分,主要划分为产品信息和商品信息,产品信息保持最原始的产品基础属性和内容,商品…

下拉框可筛选可树状多选组件

实际效果图片 父页面 <el-form-item label"转发&#xff1a;" :label-width"formLabelWidth" class"formflex_item"><el-select ref"select" :clearable"true" clear"clearSelect" remove-tag"r…

day2 驱动开发 c语言

通过驱动开发给pcb板子点灯。 u-boot已经提前移植到了emmc中。 灯也是一种字符型设备。 编程流程需要先注册设备&#xff0c;然后创建结点&#xff0c;然后操作电灯相关寄存器 应用层直接调用read write来打开字符设备进行操作。 这样写会造成无法处理内核页面请求的虚拟地址…

SpringBoot中java操作excel【EasyExcel】

EasyExcel 处理Excel&#xff1b;简单记录&#xff0c;方便日后查询&#xff01; 官方文档&#xff1a; Easy Excel (alibaba.com) 一、EasyExcel概述 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存&#xff0c;poi有一套…

前端食堂技术周刊第 91 期:2023 npm 状态、TC39 会议回顾、浏览器中的 Sass、React 18 如何提高应用程序性能

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;茶椰生花 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…