浅谈AST(自动化测试)流程,欢迎大家多多指点,多提宝贵意见。
AST阶段一:需求收集——分析自动化测试需求
- 举行启动会议,对SUT(被测试的系统)进行总体描述
2.SUT的要求是可测试和可自动化的
3.评估哪些测试可以自动化
4.分析当前生命周期中SUT使用的工具和复用现有的AST工具
5.对AST和测试中需要的工具进行评估,并提出建议
6.确定和讨论测试环境,包括测试环境的采购和安排,列出测试环境的概要
7.与开发相关人员一起走查一遍AST测试需求,最后达成一致意见
8.给出可以自动化的测试的建议报告
9.数据需求的初始化测试
AST阶段二:测试用例设计和开发
1.明确手头上的任务以及自动化的相关的目标
2.考虑风险,确定缓解风险的策略
3.如果存在手动测试用例和过程,对其进行评估,考虑是否重用或转换为自动化测试
4.定义AST的架构和设计
5.定义并开发测试数据
6.走查一遍AST测试用例/过程,并在优先级上达成一致意见
7.记录要自动化的高层次测试用例,以及详细的测试步骤
8.按照阶段/优先级、时间表来实现测试用例
9.过一遍AST的架构和设计
10.更新时间表---确定进度表
AST阶段三:开发自动化软件测试框架和测试脚本
1.搭建自动化测试框架,开发新的满足测试用例需求的脚本
2.测试环境
1.)验证所使用的测试数据的有效性,即考虑测试数据的深度和广度
2.)验证与各种业务规则或访问权限接触的数据集是正确的
3.)确定测试环境的具体配置,考虑留出时间订购硬件
4.)进行性能测试活动时,测试环境反应了产品环境,或者确定使用用于构建初始功能测试的虚拟环境是有效的
4与客户一起大致走查一遍自动化测试用例
5.走查一遍测试环境配置
AST阶段四------自动化测试的执行和结果报告
1.理解并遵循准入和准出的标准
2.从开发环境中隔离出测试环境
3.执行自动化框架和测试脚本
4.记录每个测试运行的通过或失败状态
5.遵循缺陷跟踪生命周期,生成软件问题报告,跟踪缺陷直至关闭
6.跟踪效率和进度
7.按要求,进行AST培训,包括ASTF用户指南
AST测试阶段五----审查和评估程序
1.完成AUT自动化工作
2.记录经验和教训
3.进行任何问题的根源分析和采取适当的措施
4.最终的AST项目报告,包括到目前为止讨论的所有相关工作,如:状态指标、各种测试结果、根源分析等
注释:
AST自动化软件测试
SUT被测试的系统
ASTF自动化软件测试框架
AUT被测试的应用
1、制定测试计划
在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的人力、硬件、数据等资源都准备充分。制定好测试计划后,下发给用例设计者。
2、分析测试需求
用例设计者根据测试计划和需求说明书,分析测试需求,设计测试需求树,以便用例设计时能够覆盖所有的需求点。一般来讲,基于Web功能测试需要覆盖一下几个方面:
1)页面链接测试,确保各个链接正常;
2)页面控件测试,确保各个控件可靠;
3)页面功能测试,确保各项操作正常;
4)数据处理测试,确保数据显示准确、处理精确可靠;
5)模块业务逻辑测试,确保各个业务流程畅通。
3、设计测试用例
通过分析测试需求,设计出能够覆盖所有需求点的测试用例,形成专门的测试用例文档。由于不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例。必要时,要将登陆系统的用户、密码、产品、客户等参数信息独立出来形成测试数据,便于脚本开发。
4、搭建测试环境
自动化测试人员在用例设计工作开展的同时即可着手搭建测试环境。因为自动化测试的脚本编写需要录制页面控件,添加对象。测试环境的搭建,包括被测系统的部署、测试硬件的调用、测试工具的安装盒设置、网络环境的布置等。
5、编写测试脚本
根据自动化测试用例和问题的难易程度,采取适当的脚本开发方法编写测试较薄。一般先通过录制的方式获取测试所需要的页面控件,然后再用结构化语句控制脚本的执行,插入检查点和异常判定反馈语句,将公共普遍的功能独立成共享脚本,必要时对数据惊醒参数化。当然还可以用其他高级功能编辑脚本。脚本编写好了之后,需要反复执行,不断调试,知道运行正常为止。脚本的编写和命名要符合管理规范,以便统一管理和维护。
6、分析测试结果、记录测试问题
应该及时分析自动化测试结果,建议测试人员每天抽出一定时间,对自动化测试结果进行分析,以便尽早地发现缺陷。如果采用开源自动化测试工具,建议对其进行二次开发,以便与测试部门选定的缺陷管理工具紧密结合。理想情况下,自动化测试案例运行失败后,自动化测试平台就会自动上报一个缺陷。测试人员只需每天抽出一地你该时间,确认这些自动上报的缺陷,是否是真实的系统缺陷。如果是系统缺陷就提交开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。
7、跟踪测试BUG
测试记录的BUG要记录到缺陷管理工具中去,以便定期跟踪处理。开发人员修复后,需要对此问题执行回归测试,就是重复执行一次该问题对应的较薄,执行通过则关闭,否则继续修改。如果问题的修改方案与客户达成一致,但与原来的需求有所偏离,那么在回归测试前,还需要对脚本进行必要的修改和调试。
自动化测试分类
在敏捷开发流程中,自动化测试涉及到下面重要四种类型的测试。
单元测试(Unit Test, UT)
关注某一个函数,模块的正确性,一般需要开发人员编写相关的测试代码来进行自动化测试。
可以使用对应的测试驱动开发(TDD)框架,如:Java的JUnit和TestNG等,相应的python语言中有unittest和nose等测试工具。
集成测试(Integration Test, IT)
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
这个阶段,可以尝试接口的自动化测试,同样可以利用单元测试的框架编写针对API调用的测试代码。
另外也可以利用selenium和appium等测试工具来进行UI相关的测试。
用户验收测试(User Acceptance Test, UAT)
用户验收测试,也叫用户可接受测试,一般在项目流程的最后阶段,这时相关的产品经理、业务人员、用户或测试人员根据测试计划和结果对系统进行 测试和验收,来决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。
本阶段主要是UI相关的测试,编写自动化测试脚本的难度比较大。
同样是利用selenium和appium等测试工具来编写测试脚本
回归测试(Regression Test)
回归测试是软件测试的一种,旨在检验软件原有功能在修改后是否保持完整。回归测试主要是以检查退化为目的的测试。
退化主要指由于系统的版本更新,在之前的版本中正常运行的功能变得无法正常运行,或者紧急修正了某个问题,但引发了其他的问题的现象。
从开发人员视角出发的单元测试是需要进行回归的,
还有从用户视角出发的集成测试和用户验收测试的测试用例集也是回归测试的相关内容。
自动化测试适用场景
不是所有项目有适合实施自动化测试的,以免对项目实施自动化过程中发现困难重重,浪费了大量的人力和时间而没有得到应有的收益。
1、任务测试明确,不会频繁变动
2、每日构建后的测试验证
3、比较频繁的回归测试
4、软件系统界面稳定,变动少
5、需要在多平台上运行的相同测试案例、组合遍历型的测试、大量的重复任务
6、软件维护周期长
7、项目进度压力不太大
8、被测软件系统开发比较规范,能够保证系统的可测试性
9、具备大量的自动化测试平台
10、测试人员具备较强的编程能力
当然,并非以上10 条都具备有情况下才能开展测试工作。这里就需要读者做综合的权衡。在我们普遍的经验中,只要满足三个条件就可以对项目开展自动化测试:
软件需求编程不频繁
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。
项目周期较长
由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
自动化测试脚本可重复使用
自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如C/S 系统和B/S 系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。
PS 参考:https://blog.csdn.net/thomashtq/article/details/45217499
常见测试:
适合自动化:
- 单元测试
单元测试一般都有开发人员实现和维护,主要是针对各功能模块的函数调用进行测试,粒度较小,实现简单,甚至可以通过工具自动生成单元测试用例。- 回归测试
进行大量回归验收的测试用例时,或者手工执行用例发现了Bug,需要增加对应的自动化测试用例跟踪缺陷是否解决等场景,也适合引入自动化测试。- 性能测试
性能测试涵盖比较广泛,包括压力测试、稳定性测试、吞吐量测试等,这些都是手工测试无法胜任的任务,必须引入自动化测试。
-接口测试
对于接口(API)测试,由于接口相对比较固定,类似于单元测试,比较规整的API接口,甚至能够通过工具来自动生成测试用例,非常适合自动化测试,投入小,回报大。- 协议测试
由于协议(如HTTP,FTP,RTSP,HLS等)定义规范,接口说明比较严谨且很少改变,对协议兼容性进行测试时,也非常适合引入自动化测试。
常见的自动化测试工具简介
- UFT(Unified Functional Testing)
即原来的QTP(Quick Test Professional Software)与ST(Service Test)合并而来,由HP公司开发,是一个企业级的商业自动化测试工具,提供了强大易用的录制回放功能,
同时兼容对象识别模式与图像识别模式,支持B/S和C/S两种架构的软件测试;
- Robot Framework
一款基于python语言编写的自动化测试框架工具,具备良好的扩展性,支持关键字驱动,支持多种类型的客户端和接口,可进行分布式测试;
- Selenium
应用于web的自动化测试工具,支持多平台、多浏览器、多语言来实现自动化,优点如下:
①开源、免费;
②多浏览器支持:chrome、Firefox、IE、Edge等;
③多平台支持:Linux、Windows、MAC;
④多语言支持:java、python、Ruby、C#、JavaScript、C++;
⑤对web界面有良好的支持;
⑥简单(API简单)、灵活(开发语言驱动);
⑦支持分布式测试用例执行;
做UI自动化测试,需要什么技能
①前端相关技术
HTML、XML、JavaScript、TCP/IP协议等
②一门编程语言
就像前面说的,selenium支持多种语言,根据个人情况以及项目的开发语言酌情选择;
③合适的工具选型
比如selenium,比如UTF等;
④需求分析
项目类型,特质,生命周期,是否适合开展自动化测试等;
参考链接:
自动化测试分析(流程)
https://www.cnblogs.com/tobecrazy/p/4606057.html
https://www.cnblogs.com/znicy/p/7478371.html
https://www.cnblogs.com/morwind/p/5063805.html
https://www.cnblogs.com/star12111/p/8046419.html
优缺点
https://www.cnblogs.com/qy1234/archive/2018/01/03/8178337.html
自动化测试分类
https://www.cnblogs.com/tobecrazy/p/4606057.html
自动化测试工具
https://blog.csdn.net/a578133380/article/details/79031189
https://blog.csdn.net/yoyocat915/article/details/80642317
selenim 介绍
https://blog.csdn.net/yoyocat915/article/details/80216946
http://www.cnblogs.com/TankXiao/p/5252754.html
https://blog.csdn.net/wanglian2017/article/details/72843984
selenium webdriver 原理
selenium 使用