如何设计一个自动化测试框架

本贴最后更新于 1483 天前,其中的信息可能已经时移世易

在进行自动化框架设计之前我们先来看两个问题,什么是自动化框架,设计的时候应该注意什么原则,然后该怎么做?本文会以一个 web 端的 UI 自动化测试框架设计为例

什么是自动化测试框架

  • 什么是框架

特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。也就是说框架本身不解决特定的问题,它是通过扩展的各种组件或者工具来解决问题,并且它可以方便的添加或者修改部分组件的功能。

  • 什么是自动化测试框架

什么是自动化测试框架,我们拆分来看的话,其实就是三个方面,自动化、测试、框架,什么是框架上面说了,还有就是他能执行测试,而且还是自动化的,所以框架的各个组件的主要功能就是围绕着如何自动化如何执行测试展开的。

这里可以把框架的各个功能称作模块,那我们来看看都需要那些模块,需要一个基础模块,主要是怎么实现脚本编写,管理模块,主要的行为是持续集成,定时执行、case 管理,统计模块,主要是发送测试报告,统计分析。那总结一下自动化测试框架的定义就是:把在自动化测试过程中用到的一些功能或者工具,分装成各个模块,包括如何进行自动化脚本编写以及分层功能的基础模块,进行持续集成、定时任务的管理模块,发送测试报告、进行测试结果统计分析的统计模块等,将这些模块组成一套可重用的骨架

自动化测试框架的设计原则

通用性:能够在各种各样的系统和平台都能够使用

易维护性:能够把我们的数据、用例、框架的实现进行独立的维护,能够在实现完善的过程,快速的定义到维护的点,而不对框架的其他功能造成影响

定时处理:能够在指定的时间执行

持续集成:当被测程序和测试代码有更新能够自动执行

调试:可调试行强

测试结果:测试报告、测试数据的统计分析

框架的设计思想

可以把自动化测试框架主体分为两部分,一个是内部框架,一个是外部框架,内部框架就是我们自己实现的测试框架代码,外部框架就是抛开我们实现的核心代码,要达到自动化测试框架设计原的一些内容时用到的一些第三方工具。

外部框架

主要是指以 webdriver 为核心,辅以外部第三放框架和工具。用以实现持续集成、自动部署、脚本执行、远程调用、报告优化、邮件发送导等功能性框架,实现自动化框架设计原则的一些外围的组件。

内部框架

也就是分层框架,目的在于更好的优化和管理测试用例,更便捷的进行数据、元素、脚本的维护和更快速的创建新脚本

自动化测试框架设计思路
  • 通用的外部框架实现逻辑

    maven 或者 tox-自动编译,执行 TestNG 或 junit,集成邮件发送等

    TestNG 或 Junit、pytest,调用 webdriver 或者发送请求的方法,执行自动化测试用例,规范自动化测试脚本

    selenium 脚本或者接口用例脚本

    reportNG 或者 allure 报告优化模板

    main 自动以 html 邮件通知或者 Jenkins 发送邮件

  • 内部框架

    层架框架-也就是代码结构优化,根据具体的业务和需求可以大致分为以下几层,有时并不需要下面所有的层次,选取合适自己业务测试的就行。

    TestCase 层,执行的用例脚本

    Task 层,公共业务分装,是其他的项目不需要的,只和当前项目相关,比如公共登陆、搜索等业务

    utils 层:与业务无关的方法,比如数据驱动-也就进行数据文件的读写、浏览器操作、元素定位方法等进行封装

    page 层或 po 层:页面层,页面层主要维护某一个页面的所有元素,对页面的操作、对元素的操作以及和其他页面的交互,业务其实就是一个元素到另一个元素或者一个页面到另一个页面,这就和 task 层有点重复一般有一个就可以了。

    element 层:公共元素或者组件的维护,或者自定义组件封装

    data 层:数据存储

    properties 层:配置文件、全局变量

下篇我们将以 java 和 python 语言生态的相关内容实现自动化测试框架,敬请关注!!

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...