功能测试转自动化测试好不好转型?

news2024/7/6 17:45:08

手工测试做了好多年,点点点···成了每天必须做的事情。但是随着自动化测试趋势的日渐明显,以及受到薪资、技能的双重考验,掌握自动化测试成为了必备技能。

手工转自动化测试,不是一蹴而就的。“预先善其事,必先利其器”,凡事之前都需要一个良好的准备,自动化测试何尝不是呢?

在测试行业,一个一直被讨论的问题就是:手工测试没有前途,自动化测试会取代手工测试?

如今随着软件需求的变化比以往任何时候都快,越来越多的企业正在采用敏捷方法来缩短开发周期并加快上市时间 (TTM)。

在这个瞬息万变的技术环境中,应用程序质量比以往任何时候都更重要,手动测试似乎既耗时又重复,并且容易出现人为错误。

从手动测试转向自动化测试似乎非常适合快速变化的技术业务环境。与手动测试相比,移动(或迁移)在很大程度上可以归因于更好的测试覆盖范围和早期检测、解决问题的灵活性。

尽管手动测试必须与强大的自动化测试相结合,但它永远不会消失。起初,从手动测试转向自动化的想法似乎令人生畏。你可能会被诸如如何开始以及从哪里开始之类的问题所困扰。

结论:手工测试是由人一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一种。

优点:自动化测试无法代替探索性测试、发散思维类无既定结果的测试。

缺点:执行效率慢,量大易错。

不管是自动化测试还是手工测试都是测试,只不过测试的方式不一样,就像走路去上班和做车去上班,你目的都是去上班,这不过一个是走路,一个是坐车。那么现在问题来了,是不是有车子就不用走路啦?

当然,有车子还是要走路,有自动化测试还是要有手工测试,而且手工测试是必不可少的,自动化测试一般在回归测试的会使用的比较多,前期都是使用手工测试。

自动化测试不会取代手工测试,这完全是两个维度的事情。还是那句话机会是留给有准备的人?多个技能多条路,我们要学习新的知识才能扩宽我们的道路。人生是一个逆水行舟的过程,不进则退。

在本文中,我将重点介绍在你决定从手动测试转向自动化测试之前要牢记的一些关键注意事项。

一、什么是自动化测试?

自动化测试,顾名思义,自动完成测试工作。

通过一些自动化测试工具或自己造轮子实现模拟之前人工点点/写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动化测试。

因为每一个自动化测试的case都是从手工测试做起的, 所以自动化测试的基础是手工测试 。

二、为什么要进行自动化测试

(1)自动化测试节约成本(根据项目)

(2)有些测试项目手工很难实现(手工成本较高)

(3)项目质量流程需要

三、自动化测试的优势及劣势

优势: 回归测试更方便可靠;可运行更多,更繁琐的测试,且快速高效;可执行一些手工测试执行相当困难或者做不到的测试,如大量的用户并发;更好的利用资源,具有一致性和可重复性的特点,自动化测试脚本完全可复用;提升了软件的可信度;多环境下测试等。

劣势: 维护成本相对比较高

系统开发时间不一定能缩短

还是得依赖手工测试,很多问题无法发现

四、自动化测试分类

按测试目的分类大致可划分为:功能自动化测试,性能自动化测试

按测试对象可以划分为:Web应用测试,APP测试,接口测试,单元测试等

功能自动化

测试目的是发现软件中实现功能是否符合用户需求规格,实践证明,往往我们实施UI自动化测试的目的不是去发现软件系统中的缺陷,更多的是为了验证系统是否可以正常运行。

除了可以基于UI进行自动化测试,我们还可以基于网络服务接口提供者进行测试,基于接口进行功能测试较为常见,也是非常有效的手段。

另外还可以基于系统基础代码进行测试,比如单元测试,集成测试阶段,这一阶段的测试也称白盒测试,我们可以直接对DAO,Service服务进行测试,这里常用的测试技术包括Junit, TestNG, Mock, Stub等 。

性能自动化

性能自动化测试是通过测试工具模拟高并发负载进行压力测试,以发现软件系统在高负载情况下运行瓶颈, 包括 应用程序本身的性能瓶颈,网络瓶颈,服务器硬件资源瓶颈,数据存储服务器等,通常唯有借助自动化测试工具来完成,常见的性能测试工具包括,Loadrunner, Jmeter, Ngrinder, Gatling等,不管哪一款测试工具,基本有三大部分组成:测试脚本管理,测试场景配置,监控结果。

与功能自动化类似的是,性能测试工作对象也可以面向用户UI层,或者服务接口提供方,甚至可以直接面向底层基础业务逻辑层,绝大多数通过用户层进行性能测试模拟的是最接近真实用户场景的测试,也是性能测试必然实施的阶段 。

五、 自动化测试的流程

1. 制定测试计划

 在开始自动化测试之前,最好的办法是做个测试计划,明确测试对象、测试目的、测试的项目内容、测试方法以及测试的进度要求等,确保测试所需的各种资源都准备充分。

2. 分析测试需求

  用例设计者根据测试计划和需求说明书,分析测试需求,设计测试需求树,使用例设计时能够覆盖所有的需求点。

3. 设计测试用例

通过分析测试需求,设计出能够覆盖所有需求点的测试用例,形成专门的测试用例文档。因为不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例。有时候,还需要将系统的用户、密码、产品、客户等参数信息独立出来形成测试数据,便于脚本开发。

4. 搭建测试环境

  自动化软件测试流程在进行用例设计时就可以开始搭建测试环境。自动化测试的脚本编写需要录制页面控件,添加对象。测试环境的搭建,包括被测系统的部署、测试硬件的调用、测试工具的安装和设置以及网络环境的布置等。

5. 编写测试脚本

一般先通过录制的方式获取测试所需的页面控件,然后再用结构化语句控制脚本的执行,插入检查点和异常判定反馈语句,将公共普遍的功能独立成共享脚本,必要时对数据进行参数化。还可以用其他高级功能编辑脚本。脚本编写好了之后,需要反复执行,不断调试,直到运行正常为止。脚本的编写和命名要符合管理规范,以便统一管理和维护。

6. 分析测试结果、记录测试问题

及时分析自动化测试结果,对自动化测试结果进行分析,以便尽早地发现缺陷。如果采用开源自动化测试工具,建议对其进行二次开发,以便与测试部门选定的缺陷管理工具紧密结合。如果是系统缺陷就提交开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。

7. 跟踪测试BUG

测试记录的BUG要记录到缺陷管理工具中去,以便定期跟踪处理。开发人员修复后,需要对此问题执行回归测试,就是重复执行一次该问题对应的较薄,执行通过则关闭,否则继续修改。如果问题的修改方案与客户达成一致,但与原来的需求有所偏离,那么在回归测试前,还需要对脚本进行必要的修改和调试。

六、 自动化测试常用工具

七、总结 

我有一个核心观点:软件测试的核心是效率。而不是什么设计方法,也不是什么测试思路。不管你有没有方法,有没有思路,只要时间花下去,总能找到bug。这也是为什么很多时候,测试人员累死累活测了半天的应用。来一个外行的xx总监,随便点开来就能发现一两个测试人员漏掉的bug。久而久之总监们就会质疑,测试人员到底有什么用,这么明显的问题发现不了。然而事实上,发现一个问题不难,发现一百个问题也不难,难的是在有限的时间里发现足够多的问题。也就是说,外行也能找到bug,但外行不可能在有限的时间内找到足够多的反映软件质量问题的信息。

”是雇十个应届生点点点来测,还是雇三个资深测试来做系统化的测试?“、”是买商业工具做自动化,还是自己研发测试工具自己搞一套?“软件测试一切的一切都是围绕着效率这个点来思考的。也正是为了提高效率,测试必须要引入自动化的手段。注意,不是替代不替代手工测试的问题,而是必须引入自动化才能进一步提高效率。手工测试仍然在,只要他在一些领域上效率高于自动化,就仍然会继续存在下去。自动化测试,并不是QTP,不是selenium,不是任何一种工具。

自动化测试,并不是回归测试,不是冒烟测试,不是任何一种测试阶段或类型。

自动化是一种提高效率的方法和理念。自动化测试,仅仅是自动化的一种应用。

从自动化测试开始,自动化部署,自动化发布,自动化日志收集,自动化环境管理,等等,越来越多的东西都在被自动化。这些自动化的东西我把他们划分到一起,他们的学习方法都是一样的,理念都是类似的。用到的开发语言也都是通用的。可能这些领域以后真的会融合成为一个技术领域

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510093.html

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

相关文章

C++中的RAII原则和资源管理如何提高程序效率和安全性?

文章目录 C中的RAII(Resource Acquisition Is Initialization)原则是一种编程范式,它确保资源在其生命周期内的有效管理。RAII的核心思想是在对象创建时(初始化阶段)获取资源,并在对象销毁时(析…

C# 8.0+版本项目 string不可为空

1.在某一次新建项目的时候发现,新建的项目,写的测试接口,接口的入参有string的参数, 但是调用接口的时候string的参数没有传报了400,很奇怪,也没有语法错误之类的。 2.解决办法 在项目上右键->属性->…

HTML静态网页成品作业(HTML+CSS)——家乡漳州介绍设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

Flink技术简介与入门实践

架构简介 Flink 是一个分布式流处理和批处理计算框架,具有高性能、容错性和灵活性。下面是 Flink 的架构概述: JobManager:JobManager 是 Flink 集群的主节点,负责接收和处理用户提交的作业。JobManager 的主要职责包括&#xff1…

NASA数据集——亚马逊盆地与其大气边界层之间各种气溶胶和气体交换率的估计值数据

简介 Pre-LBA ABLE-2A and ABLE-2B Expedition Data ABLE 2A 和 2B(大气边界层实验)数据包括亚马逊盆地与其大气边界层之间各种气溶胶和气体交换率的估计值,以及这些气溶胶和气体在边界层和自由对流层之间的移动过程。前言 – 人工智能教程…

HTML静态网页成品作业(HTML+CSS)——非遗昆曲介绍设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

如何查找、恢复误清空的 Android 回收站?

“我的回收站里有一些照片。当我点击“恢复”时,没有任何反应。我可以将我的 Android 手机插入我的电脑。这样我就可以手动恢复它们。但我在 Android 上找不到 bin 文件夹。我还可以做些什么?” 随着 Android 手机上的文件数量不断增加,了解…

SimplifyRODataLoads - 优化阅读笔记

// 只支持 X86 static cl::opt<bool> SimplifyRODataLoads("simplify-rodata-loads",cl::desc("通过用相应节中找到的常数替换内存操作数&#xff0c;简化来自只读节的加载"),cl::cat(BoltOptCategory));测试用例&#xff1a; ./build4/bin/llvm-li…

【汇编】#3 8086与数据有关的寻址方式

文章目录 操作码与操作数1. 8086处理器的与数据有关的寻址方式1.1 立即数寻址方式1.2 寄存器寻址方式 2. 有效&#xff08;偏移&#xff09;地址&#xff08;effective address&#xff0c;EA&#xff09;与缺省段寄存器选择tips:段跨越前缀2.1 直接寻址tips:直接寻址与立即寻址…

什么是农业气象站?——气象科普

农业气象站&#xff0c;也被称为田间气象站或农业小气候仪&#xff0c;是一款综合的物联网农业气象参数观测系统。它能够实时、准确、有针对性地监测农田区域内的多种气象参数&#xff0c;包括温湿度、光照、二氧化碳浓度、大气压、雨量、土壤温湿度、风速风向等。 农业气象站…

【MATLAB 】 EMD信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 EMD信号分解算法 EMD 分解又叫经验模态分解&#xff0c;英文全称为 Empirical Mode Decomposition。 EMD 是一种信号分解方法&#xff0c;它将一个信号分解成有限个本质模态函数 (EMD) 的和&#xff0c…

【Linux】文件缓冲区|理解文件系统

目录 预备知识 观察现象 第一&#xff1a;携带\n&#xff0c;不使用fork()&#xff0c;打印到显示器 第二&#xff1a;携带\n&#xff0c;使用fork()&#xff0c;打印到显示器 第三&#xff1a;携带\n&#xff0c;使用fork()&#xff0c;打印到文件里 第四&#xff1a;不携…

【R语言实战】——金融时序分布拟合

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

常见的限流算法- python版本

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 个人IP&#xff1a;shigen 在系统的稳定性设计中&#xff0c;需要考虑到的就是限流&#xff0c;避免高并发…

DC/DC高压模块直流升压可调稳压输出升压变换器5V12V24V48V转50V110V150V130V200V250V300V450V500V600V800V

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、…

容量治理三板斧:扩容、限流与降级

前言 随着现代软件系统日益复杂和用户规模的不断增长&#xff0c;分布式架构成为了保持系统高可用性与高性能的标准解决方案。然而&#xff0c;随之而来的是对系统容量治理的新挑战。在这样的背景下&#xff0c;容量治理成为了分布式系统设计和运维中不可或缺的一环。要确保系…

【PyTorch][chapter 22][李宏毅深度学习]【无监督学习][ WGAN]【理论一】

简介&#xff1a; 2014年Ian Goodfellow提出以来&#xff0c;GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。从那时起&#xff0c;很多论文都在尝试解决&#xff0c;但是效果不尽人意&#xff0c;比如最有名的一个改进DCGAN依靠的是对…

AI毕业设计生成器(基于AI大模型技术开发)支持Java和Python

这是一个辅助生成计算机毕业设计的工具&#xff0c;可以自动完成毕业设计的源码。它基于几百个github上面开源的java和python项目&#xff0c;运用tengsorflow技术&#xff0c;训练出了AI大模型。基本实现了计算机毕业设计生成器&#xff0c;能够初步生成Java或python基本源码。…

嵌入式驱动学习第三周——container_of()宏

前言 Linux内核编程中&#xff0c;会经常看见一个宏函数container_of&#xff0c;那么这究竟是什么呢&#xff0c;本篇博客记录学习container_of的过程。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可…

1688平台最关键的接口接入实例|获得1688商品详情| 按关键字搜索商品| 按图搜索1688商品(拍立淘)| 获得淘口令真实url

参数说明 通用参数说明 version:API版本key:调用key,测试key:test_api_keyapi_name:API类型[item_get,item_search]cache:[yes,no]默认yes&#xff0c;将调用缓存的数据&#xff0c;速度比较快result_type:[json,xml,serialize,var_export]返回数据格式&#xff0c;默认为jsonl…