自动化测试流程(超详细总结)

今天就通过这篇文章给大家深度解析一下自动化测试的流程。

自动化测试的流程和功能测试其实挺相似的,整个流程也是按照需求分析及测试计划阶段、测试设计阶段、测试执行和测试总结阶段,总结下来就是下面一张图,ppt中纯手绘,效果不好,大家见谅:

一、测试需求分析及计划阶段

自动化测试是要在手工测试之后进行的,也就是回归测试阶段,这时候其实是已经具备完善的功能测试用例啦,并且经过前期功能测试,系统版本也已经比较稳定啦,这就具备了自动化测试的必要条件,下面需要完成几个小任务:

1、抽样分析项目自动化测试的可行性

在进行项目自动化测试之前,第一步就是要确认其可行性,是否可以实行测试自动化。如果项目时间紧迫、项目周期短、项目需求变幻无常则建议和上级领导商议,不要开展自动化测试。想要开展自动化测试,还是应该遵循以下几个前提条件:

  • 软件需求变动不频繁
  • 项目周期足够长
  • 自动化测试脚本可重复使用

通过可行性分析后,接下来需要做一个demo ,使用选定的框架尝试识别页面元素,运行简易脚本,如果没问题,即可采用该框架对该项目进行自动化测试,常见的需要的验证的环境有:

  • WEB端的自动化测试采用python+selenium+unittest框架是否可行?
  • App端自动化测试采用Java+Appium+Junit框架是否可行?

2、测试需求分析

对系统的功能需求进行再次梳理,划分出可以进行自动化测试的需求,划分的标准一般是简单、重复性高、业务复杂度低的需求,这样便于我们快速地实现一个版本,从而建立推进自动化的信心。相反,选择了业务复杂的需求,则会花费大量的时间在脚本制作上,并且各种异常情况的处理,会严重打击我们推进自动化测试的积极性和信心,最后也就丧失了我们做自动化的初衷(自动化测试是不需要也没有必要做到 100%覆盖率的)。所以,在测试需求分析这个阶段,确定测试覆盖率以及自动化测试粒度、测试用例上的筛选等都是重点工作。

3、制定测试计划

理想情况下,测试始于测试目标和测试策略的建立,测试策略应满足测试目标的要求。管理层的测试计划包括评估完成所有测试活动的时间,测试活动安排及资源分配,控制测试过程以及跟踪整个测试过程所需采取的活动,这些高层次活动应该在项目开始前就实施,并贯穿项目的整个开发过程。

测试计划是测试过程中最重要的活动,包括如下活动:

  • 准入准出原则,确定什么时候可以开展自动化,达到什么标准,自动化项目可以结束
  • 测试范围,鉴别和确定测试需求的优先级
  • 进度安排,在什么时间交付什么成果
  • 人员安排,根据团队成员情况,技术好的复杂脚本实现;业务能力强的进行功能步骤拆解等
  • 风险评估,对项目过程中的风险进行预估

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

二、测试设计、开发阶段

本阶段主要的工作是测试用例的设计及脚本开发,一般情况下,我们是先进行测试用例的设计,在通过评定之后,保证测试用例已经覆盖了需求之后,再进行测试脚本的开发,这种方式是经过实践验证的,最为理想的做法。

1、测试用例设计

前面已经提到过,自动化测试用例不必从0开始,是完全可以从功能测试用例,通过筛选、简单修改就可以直接拿来用的,主要步骤为:

  • 筛选功能测试用例
  • 将其转化为自动化用例模板
  • 补充、修改不适于自动化的用例
  • 持续维护和优化自动化用例

筛选功能测试用例的标准参考如下:

  • 不是所有的手工测试用例都要转为自动化测试用例
  • 考虑到脚本开发的成本,不要选择流程太复杂的用例
  • 选择的用例最好可以构建成场景
  • 选取的用例可以是你认为是重复执行,很繁琐的部分
  • 选取的用例可以是主体流程,这部分适用于冒烟测试

在设计(补充、修改)自动化测试用例过程需要遵循的原则:

  • 一个用例为一个完整的场景,从用户登录系统到最终退出并关闭浏览器
  • 一个用例只验证一个功能点,不要试图在用户登录后把所有的功能都验证一遍
  • 尽可能少的编写逆向测试用例。
  • 用例和用例之间尽量避免产生依赖
  • 一条用例完成测试之后需要对测试场景进行还原,以免影响其它用例的执行

2、测试脚本开发

测试脚本开发包括创建具有可维护性、可重用性、简单性、健壮性的测试程序。同时要注意确保自动测试开发的结构化和一致性。根据已经开发好的测试用例,编写各个功能点的自动化测试脚本,并添加检查点,进行参数化。该过程还需要编写数据文件处理脚本、日志文件处理脚本、数据库处理脚本、公共检查点处理脚本等。

在脚本开发中,常见的模型有:

  • 线性模型:是我们开发脚本的基础
  • 模块化驱动测试:需要将一些功能模块独立出来,便于维护和调用
  • 数据驱动测试
  • 关键字驱动测试

为了更好地团队合作进行自动化测试,我们需要对项目进行分层管理,可以根据需要划分公共模块部分、测试用例、测试数据、测试报告、测试日志等,并提供执行主模块。

其中公共模块可以包括:日志模块,邮件发送模块,公共登录、退出模块、数据库操作模块等,主要是便于测试用例中调用。

执行主模块主要负责所有测试用例调度的,可以参考如下代码:

import unittest
import time
from HTMLTestRunner import HTMLTestRunner
from public.mailsend1 import mailsend
from public.Loginmodel import verylogin,veryLogout
 
import os
if __name__=='__main__':
    path1 = os.path.dirname(__file__)+r"/test_cases/"
    path2 = os.path.dirname(__file__)+r"/test_report/"
    send = mailsend()
    discover = unittest.defaultTestLoader.discover(path1,pattern='veryReg*.py')
    filename1 = time.strftime("%Y-%m-%d-%H-%M-%S")
    filename2 = filename1+r'.html'
    filename = path2+filename2
    with open(filename,'wb') as f:
        runner = HTMLTestRunner(stream=f,title='测试结果',description='第一轮测试结果')
        runner.run(discover)
 
    time.sleep(3)
    send.sendFujian(filename1)

最后为了生产一个可视化报告,我们可以选择二次开发的HTML格式报告

三、测试执行阶段

随着测试计划的建立和测试环境的搭建完毕,按照测试程序进度安排执行测试,可以通过手动或自动或半手动半自动方式执行,它们各自可以发现不同类型的错误。测试执行结束后,需要对测试结果进行比较、分析以及结果验证,得出测试报告(包括总结性报告和详细报告)。

如果脚本已经稳定,可以采用Jenkins工具进行持续集成,最终实现无人值守测试,集成方式

四、测试总结阶段

对测试结果文件中报告错误的记录进行分析,如果确实是由于被测系统的缺陷导致,则提交缺陷报告。对自动化测试的结果进行总结,分析系统存在的问题,并提交《测试报告》。

五、总结一下

1、自动化测试的局限性

对于自动化测试来说,不同的层次有不同的效率,项目中需要慎重考虑选择,按照测试金字塔模型以及投入/产出比,越向下,回报率越高。

  • 单元自动化测试(数据处理层):指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如java的Junit、TestNG,python的unittest、pytest;
  • 接口自动化测试(业务逻辑层):主要检查验证模块间的调用返回以及不同系统、服务间的数据交换,常见的接口测试工具有postman、jmeter、loadrunner等;
  • UI自动化测试(GUI界面层):UI层是用户使用产品的入口,所有功能通过这一层提供给用户,测试工作大多集中在这一层,常见的测试工具有UFT、Robot Framework、Selenium、Appium等;

以自动化测试行业领军者Google的自动化测试投入,不难看出那个梗有钱图:

  • 小测试(Unit):占比70%;
  • 中测试(Service):占比20%;
  • 大测试(UI):占比10%;

自动化测试面临的最大挑战就是变化,因为变化会导致测试用例运行失败,所以需要对自动化脚本不断debug,如何控制成本、降低成本是对自动化测试工具以及人员能力的挑战。

2、如何推进实施自动化测试

自动化测试是现在企业中级测试工程师所要求的基本技能,如果想在软件测试行业具备核心竞争力,就需要在这方面下点功夫,希望对面试自动化测试工程师的同学提供面试时候的思路。对于在职的朋友,提供推进自己项目的自动化测试的方法。

好了就先写到这里,文中还有很多不足之处,在后续持续维护更新。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS新手入门笔记整理:JS语法基础

变量与常量 变量 语法 var 变量名值; 1、在JavaScript中,给一个变量命名,需要遵循以下2个方面的原则: 变量由字母、下划线、$或数字组成,并且第一个字母必须是字母、下划线或$。变量不能是系统关键字和保留字。 2…

uni-app设置地图显示

使用前需到**高德开放平台(https://lbs.amap.com/)**创建应用并申请Key 登录 高德开放平台,进入“控制台”,如果没有注册账号请先根据页面提示注册账号 打开 “应用管理” -> “我的应用”页面,点击“创建新应用”&…

实验4.4 动态路由OSPF协议的配置

实验4.4 动态路由OSPF协议的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.配置交换机和路由器的接口的IP地址等参数。2.配置动态路由OSPF协议,实现全网互通。 六、任务验收七、任务小结八、知识链接1.OSPF协议概念2.…

CentOS 多节点一键免密登录

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

vue3学习 【2】vite起步和开发工具基本配置

vite的简介 官方文档 刚起步学习,所以我们只需要按照官方文档的入门流程即可。推荐阅读一下官网的为什么使用vite vite目前需要的node版本是18,可以参考上一篇文章的安装nvm,用来进行多版本的node管理。 vite安装与使用 npm create vitela…

Django 7 实现Web便签

一、效果图 二、会用到的知识 目录结构与URL路由注册request与response对象模板基础与模板继承ORM查询后台管理 三、实现步骤 1. terminal 输入 django-admin startapp the_10回车 2. 注册, 在 tutorial子文件夹settings.py INSTALLED_APPS 中括号添加 "the…

普通BUG

IDEA包折叠 如果自动紧凑包名,则有些时候创建新包或类的时候不能达到想要的摆放层级关系,此时右上角搜索按钮搜hide middle,关掉紧凑即可,然后既可以每层一个包不折叠. 效果: 20240105println输出多个参数 int a 10;int b 20;报错println是可以输出多个参数的,但不支持直接用…

Java进阶 1-2 枚举

目录 常量特定方法 职责链模式的枚举实现 状态机模式的枚举实现 多路分发 1、使用枚举类型实现分发 2、使用常量特定方法实现分发 3、使用EnumMap实现分发 4、使用二维数组实现分发 本笔记参考自: 《On Java 中文版》 常量特定方法 在Java中,我们…

软考 软件设计师 查漏补缺

说明建模图 1-1 和图 1-2 是如何保持数据流图平衡。 答:图 1-1 (或父图)中某加工的输入输出数据流必须与图 1-2 (或子图)的输入输出数据流在数量和名 字上相同;图 1-1 (或父图)中的…

智能座舱的下一个价值“爆点”——让“光”更智能

汽车智能化快速升级,智能座舱作为人机交互的主要窗口,交互模态、用户体验也呈现多维度升级。 例如,今年下半年上市的多款高端智能车型纷纷基于高性能座舱硬件平台,集成了AR-HUD、DMS/OMS等高阶功能,同时结合超大屏/多…

新年启新程 | 开门红!菊风中标重庆三峡银行双录及产品销售可回溯系统项目

INTRODUCTION 近年来,随着人们需求的转变和金融科技的高速发展,银行开始朝着数智化方向转型。为顺应客户行为变迁,银行同业积极构建远程银行云服务生态。同时,面对业务的升级以及新的监管要求,现有音视频功能难以满足…

用友U8 Cloud smartweb2.RPC.d SQL注入漏洞

产品介绍 用友U8cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型、集团型企业,提供企业级云ERP整体解决方案。它包含ERP的各项应用,包括iUAP、财务会计、iUFO cloud、供应链与质量管理、人力资源、生产制造、管理会计、资产管理&#…

只有jar包如何调试修改JDK底层源码

背景 有时候在阅读JDK源码的时候,需要调试修改源码,但又只有jar包。这个时候我们可以借助JAVA的endorsed技术。在官方文档如下描述。 Specifying the -Djava.endorsed.dirslib/endorsed system property on the Java command line will force the JVM…

后端中的Dao层、Service层、Impl层、utils层、Controller层

Java Dao层 dao层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查,对外提供稳定访问数据库的方法 Mapper:(DAO) 访问数据库&am…

22款奔驰GLS450升级香氛负离子 车载香薰

奔驰原厂香氛系统激活原车自带系统,将香气加藏储物盒中,通过系统调节与出风口相结合,再将香味传达至整个车厢,达到净化车厢空气的效果,让整个车厢更加绿色健康,清新淡雅。星骏汇小许Xjh15863 产品功能&…

Linux--系统安全及应用

1.1账号安全控制 用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。 1.系统账号清理 在Linux系统中,除了用户手…

pod 基础 2

pod 进阶 探针 poststart prestop pod的生命周期开始: 重启:k8s的pod重启策略 deployment的yaml文件只能是Always pod的yaml三种模式都可以。 OnFailure:只有状态码非0才会重启,正常退出是不重启的 Never:正常退…

由浅入深理解C#中的事件

目录 本文较长,给大家提供了目录,可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托,事件的很多部分都与委托…

sqlserver工具插入表语法into新表问题

文章目录 sqlserver工具插入表语法into新表问题 sqlserver工具插入表语法into新表问题 into新表问题 SELECT 1 AS FID, AS FNUMBER,1 AS FVALUE,A AS FVALUE2,名字 AS FNAME, 你的全名 FFULLNAME INTO t_user_mmINSERT INTO t_user_mm VALUES(2,2,2,B,懒人,懒人咖)INSERT I…

FreeRTOS——内存管理知识总结及实战

1 freeRTOS动态创建与静态创建 动态创建:从FreeRTOS 管理的内存堆中申请创建对象所需的内存,在对象删除后, 这块内存释放回FreeRTOS管理的内存堆中 静态创建:需用户提供各种内存空间,并且使用静态方式占用的内存空间一…