🎈 测试自动化脚本是软件开发, 需要投入到维护的精力的多少,是区分好的测试代码结构的关键因素 🎈
- 敏捷开发模式下的系统,自动化代码如何应对系统频繁的变动?
- 大量的测试数据如何管理,如何更新?
- 测试环境写完的case如何在其他环境执行?
🎈 代码首先是写给人看的,其次才是计算机顺便能够运行 🎈
- 如何提高自动化case的编写效率?
- 如何写可读性高的自动化case,达到代码即是用例的效果?
- 如何减少编码量,降低自动化case编码人员的技术能力要求?
以下所有的设计都是围绕这两点展开,从代码组织和数据管理两个方面入手。示例demo
- 关键字驱动:这样好处是可复用性,测试程式已在高度抽象化的层级下创建,减少维护的成本。还可以提高可读性和开发效率。
- 测试数据与测试代码分离:方便数据的管理与维护,解决测试数据中变量的支持。
- 测试数据动态加载:不同环境的配置变量,和请求之间的上下文数据依赖动态加载。
- 多环境支持:配置化,同一套测试代码可在不同环境执行(开发,测试,预发布),无需额外修改。
- 报告与日志:集成美观的测试报告框架,记录丰富的执行信息,从执行日志中分析定位问题程序。
合理的封装函数设计,将使得自动化脚本简洁化、一致性,可维护性高。进行逻辑上的分层,减少重复代码,系统变化对自动化测试程序的影响控制在特定模块,可以快速修改维护。
将模块层和接口层的关键字,组合成业务流程,完成用例场景的构建和测试。
按业务模块封装为可复用关键字,供测试场景使用 组合多个api构造特定业务动作
例如:1调用商品列表接口+选取两个商品id调用添加购物车接口+提交订单接口,串成一个工作流,组合成关键字生成一个新订单。
2系统A提交审核信息接口+审核系统审核通过,串成一个工作流组成关键字生成一个审核通过的数据。
与被测系统的一次交互,可以是发送一个http请求,消息队列中发送一条数据,或者修改数据库中某个字段
功能:操作中的通用信息实现在此层例如:HTTP请求需要添加通用字段 对参数进行排序后md5加密,参数中要传时间戳.. 变量的替换
管理与系统连接,包括http, kafka, Database, Redis...
功能:如打印log,多环境配置信息,通用功能的实现如(参数的动态渲染能力)。
通过逻辑上的分层,使得testcase是由module和api的调用组成,增加了代码的复用,系统发生变化时,对测试代码的影响也被降低,如图API_1的接口参数发生变化或者API_3的实现方式发生修改,只需要修改对应的数据即可,testcase层不需要修改。
而且,通过分层之后,可以将api公共参数放到不同的层级来实现,就像TCP/IP网络的封装数据一样,实现不同级别的默认数据的添加。减少testdata的维护,使得测试数据中只有控制业务相关的字段。
- clone本项目
- Dependency
- python3
- pip install -r requirements.txt
- jenkins (*)
- allure(*)
- mongodb(*)
- 运行
- docker run --name mongo -d -v /root/docker/mongo:/data/db -p 27017:27017 mongo
- pytest
- allure serve -p 8090