自动化测试架构的理解
文章内容主要包括:
1、什么是架构?
2、什么是架构设计思想?
3、为什么使用架构,自动化架构设计带来的好处、有哪些核心类库以及他们的作用?
4、结合实际工作谈谈遇到的架构使用问题。
1.什么是软件架构?
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。
软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。
2.什么是架构设计思想?
首先举一个例子,如果你要盖房子,那么在开始之前需要考虑什么呢?第一是要确定在什么地方什么环境中盖?第二是考虑周边的配套生活设施,比如绿化、学校、交通等。第三房子是盖中式的还是西式的。第四确定使用什么材料,装修风格。还是第五、第六、、、。你在考虑这些问题的时候其实就是在做整体规划。
在自动化测试框架设计中,需要考虑不同产品线的基础服务构建工作(包括:提供测试数据管理、提供日志模块,提供邮件模块,提供外部文件读写处理模块以及日志解析模块等等),通过引入框架方便公司对不同的产品线自动化实施进行整合,便于日后管理和维护。一个比较好的自动化测试框架方案可以使得不同产品的自动化业务测试人员只需专注于用例业务的实现,无需关注框架提供的API中内部技术细节的实现。而架构设计人员无需对业务线的具体业务知识进行系统学习,只专注于技术细节的实现,当业务测试人员遇到技术问题时架构设计人员提供必要的技术支持与培训。正所谓术业有专攻,通过对不同角色的职责划分,从整体上提升自动化测试的工作效率。设计框架是一般需要考虑的点如下:
1、编码语言的选择(需要根据实际情况选择合适的语言实现如java及python)
2、框架核心技术选择(需要考虑的是使用现有成熟的技术还是自己开发,成熟技术如web的selenium,移动端的Appium)
3、确定编码以及测试用例规范(主要是统一规则方便管理)
4、代码管理如何有效管理(现在基本都使用git比较多)
3.为什么使用架构?
对于自动化测试来书核心是使得自动化测试稳定、代码逻辑更加清晰且容易维护
1.将整个自动化测试工作进行分工,专业架构编写人员设计架构,业务测试人员编写用例编,以及用例执行人员分开
2.将UI自动化的测试对象通过自定义变量的方式赋值,增强了脚本的易读性(使用数据脚本分离思想)
3.将常用的测试方法封装成API,使测试脚本更加健壮、代码复用率更高
4.集成测试脚本日志模块,使业务测试人员编写自动化脚本调试程序
5.生成专业的测试报告,便于不懂脚本的人员查看测试结果
6.使用测试集合概念用来组合各种测试场景,执行多个脚本以及用例管理
4.使用架构时遇到的问题
1.如何利用架构里面提供的api设计测试用例,举一个具体的场景?
例如:使用httprunner接口测试框架编写测试用例时,使用extract关键字提取接口响应数据,通过$xx使用提取的变量,${fanc}格式调用自定义脚本方法等
2、被测对象UI元素变化时,如何维护自动化脚本?
可以使用po模型+测试数据与脚本分离的编码思想,当页面元素发生变化时只需要修改对应元素变量即可
3.遇到脚本执行失败时,如何判断是框架自身的问题还是测试脚本本身的bug的?
根据失败的测试用例首选通过手工复现+查看架构日志排查问题
4.采用的自动化测试框架无法满足项目的测试需求时,如何扩展测试框架的功能的?
可以采用重写架构的api或者添加新api完成测试需求,比如写一个新类继承架构中的需要拓展功能的类,在新类中完善提供完善的解决方法。
5.如何拓展测试框架的功能当?
编写新功能所需的若干个类,在新类中编写相关的实现方法提供调用接口。