当前位置: 首页 > article >正文

13条自动化测试框架设计原则

1、代码规范

测试框架随着业务推进,必然会涉及代码的二次开发,所以代码编写应符合通用规范,代码命名符合业界标准,并且代码层次清晰。特别在大型项目、多人协作型项目中,如果代码没有良好的规范,那么整个框架的代码会风格混杂、晦涩难懂,后续维护会很困难,最终成为没人敢动的“祖传代码”。

2、模块清晰明确

模块化是将测试框架从逻辑上分为几个不同的模块,如下列的模块化分层的测试框架所示,使用者可以根据实际情况自行裁剪。

​模块化的好处是可重用,并且便于替换修改。

以上图为例,假设测试报告模块以前用的是 Allure,现在想替换成更加贴切自身业务的自研测试报告,我们仅需将报告模块替换掉就可以了。

但如果测试框架没有做模块化划分,测试报告是耦合在框架代码里的,那么就会导致无法切换测试报告,或者切换代价过大的问题,改动起来就会比较痛苦。

3、通用性强

通用于不同的操作系统,比如,测试框架不仅适用在 Windows 操作系统上,还要适用在 MacOS、Linux 系统上,越通用,测试框架的受众就会越多。

能解决同一类通用问题,比如,测试框架有个底层方法是用来操作弹出框的,那么无论是 Alert 框、确认框,还是一个允许用户输入的交互框,测试框架应该都能识别并操作。

4、可维护、可扩展

(1)可维护性

测试框架要做到容易维护,就一定要代码规范,模块清晰,除此之外整个测试框架代码风格还应该统一、易读、易懂。总之,要做到框架出问题时能容易定位并修改;更要做到,即使多人合作这个框架,这个框架代码要看起来是出自同一人之手。

(2)可扩展性

可扩展性指当需求变化时框架容易扩展。如果测试框架不能扩展,就无法解决业务发展带来的新问题,也就意味着测试框架的寿命会很短。

5、错误处理机制,高效解决

在测试运行中,难免由于种种原因运行错误,这时测试框架就必须具备处理错误的能力。错误处理机制一般分为停止运行和错误恢复两种。

6、系统日志清晰,方便调试

除了错误处理机制外,系统的操作日志也能帮你快速排查问题根源,所以平时的日志一定要清晰详细,最好具备上下文,这样才能根据日志进行有效调试,快速定位错误发生的原因。

7、支持测试环境切换

一个产品从开发到上线,会经历几个测试环境的测试,比如 dev 环境, 集成测试环境,预生产环境,生成环境等。所以测试框架要能做到,一套脚本多环境运行,支持环境切换,并且能根据环境进行自动化的配置(包括系统配置、测试数据配置等)。

8、支持外部数据驱动

根据外部输入数据,动态生成测试用例,并在测试报告中单独展示。测试框架会把这些只有数据不同,步骤和操作都相同的测试用例,在运行中解析成一个个不同的独立测试用例,并在测试运行结束后,全部逐一展示到测试报告里。

根据外部输入数据,动态切换运行用例。测试目的不同,其需要采用的测试用例也会不同,所以自动化测试框架会给各个测试用例打上标签,再根据需要,自动选择具备特定标签的测试用例进行运行。

9、支持顺序、并发、远程运行

当你的测试用例有上千条,甚至上万条时,顺序测试会花费大量的时间。为了快速得到测试结果,测试框架应该支持顺序、并发、远程执行,这样能够缩短测试用例的整体执行时间。

10、报告完备详尽

测试报告是 QA 工作中的重要一环,通常在一个项目结束或者一个 sprint 结束时发出。

虽然,在实际工作中,我们经常听到大家抱怨说测试报告太烦琐了,又不产生什么直接价值,但完备详尽的测试报告,不仅可以述说 QA 到底做了哪些工作,还可以看出整个项目的生命周期运行得平稳与否,软件的质量如何。

11、解决当前没有解决的问题

“不要重复造轮子”是工具创造的首要原则。从功能角度看,框架得到认可,要么是解决了当前无法解决的问题,要么是解决方案比当下的更好。

例如,Selenium/WebDriver 最开始为人所知是因为它开源、可跨平台;后来 Selenium/WebDriver 的替代者 Cypress 为人所知,是因为它还具备运行在浏览器之内,且自备 Mock 的能力。

所以,你的框架能不能被认可,就在于它是否具有独特的功能特性,这是与其他框架区别开来的标签,也是弥补市场空白的撒手锏。

12、 版本控制,回溯复盘

什么是版本控制?其实就是将代码纳入版本控制系统(如 Git)的管理之下。那么为什么测试框架要做版本控制呢?

有了版本控制,你的不同版本的测试代码就能以不同分支的形式出现,否则,你只能一次保持一个版本的代码,非常不方便。

有了版本控制,不仅协作开发、版本切换变得非常容易,使用者也可以通过查看版本之间的变化来理解框架的发展脉络。

13、 持续集成,全局出发

前面的原则是从测试本身角度出发的,而“持续集成”是从整个公司业务出发,需要你与整个开发团队合作完成,同时这是你晋级“资深”的体现。

测试框架应该能方便地集成至公司的持续集成系统,并且通过持续集成系统触发测试。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。


http://www.kler.cn/a/292839.html

相关文章:

  • Window下PHP安装最新sg11(php5.3-php8.3)
  • 32位、64位、x86与x64:深入解析计算机架构
  • 《深度解析 C++中的弱引用(weak reference):打破循环依赖的利器》
  • 安全生产管理的重要性:现状、痛点与改进之路
  • Nginx配置自带的stub状态实现活动监控指标
  • 信号量和线程池
  • 自主导航的视觉导航机器人:解析ROS、OpenCV、Qt及路径规划算法的创新应用与实践(代码示例)
  • flutter开发多端平台应用的探索 上(基本操作)
  • Vue+Element多套主题切换
  • MLLM(一)| 文/图生视频任务大升级,BigModel 开源了视频模型CogVideoX
  • mysql开启远程访问
  • TCP/IP网络编程:第18章聊天室
  • 面向GPU计算平台的归约算法的性能优化研究
  • Rust 中 `madvise` 和 `posix_fadvise`的区别
  • python文件自动化(4)
  • 了解一下HTTP 与 HTTPS 的区别
  • FP7195:非同步升压恒流LED区动IC
  • C#实战|大乐透选号器[3]:动态生成大乐透蓝球区选择球及实现拖动窗体功能
  • Flask+LayUI开发手记(六):树型表格的增删改查
  • 网络编程 0905作业
  • 在ABAP开发中,BSEG和BKPF的数据如何做关联查询?
  • Unity(2022.3.41LTS) - UI详细介绍-TMP
  • WordPress的安装与简单开发教程
  • springboot 配置ssl支持https
  • 软通动力子公司鸿湖万联重磅发布SwanLinkOS 5,擘画开源鸿蒙AI PC新篇章
  • 七、装饰器模式