Time will tell(时间会证实一切).html
本文会以一个web端的UI自动化测试框架设计为例。在进行自动化框架设计以前咱们首先要明白几个问题:web
(1)什么是自动化框架?
(2)设计的时候应该注意什么原则?
(3)而后该怎么作?面试
一、框架浏览器
特指为解决一个开放性问题而设计的具备必定约束性的支撑结构。在此结构上能够根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。框架
框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。也就是说框架自己不解决特定的问题,它是经过扩展的各类组件或者工具来解决问题,而且它能够方便的添加或者修改部分组件的功能。maven
二、自动化测试框架工具
拆分来看其实就是三个方面,自动化、测试、框架,什么是框架上面说了,还有就是它能执行测试,并且仍是自动化的,因此框架的各个组件的主要功能就是围绕着如何自动化如何执行测试展开的。学习
这里能够把框架的各个功能称做模块,那咱们来看看都须要那些模块,须要一个基础模块,主要是怎么实现脚本编写,管理模块,主要的行为是持续集成,定时执行、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层:配置文件、全局变量
在自动化测试的学习之路中,我也曾无数次彷徨和迷茫过:
一、想学自动化测试,而不知道该怎么学?
二、想转型自动化测试,以及技术提高,殊不知道该怎么作?
三、自学自动化测试过程当中遇到问题,却无处可闻,始终停滞不前?
四、请教同事碍于面子或同事有所保留,致使学习被动?
五、想系统地了解和学习自动化测试,却无从下手?
六、想系统了解web自动化测试在企业中如何落地使用,却不清楚自动化测试流程?
我深深体会过没人带,没人问的感受,我把本身学习过、实际工做中使用的技术、自学方法、心得、踩过的一些坑以及面试题分享在了175317069群文件夹中。同时群里也有不少技术同行及行业大佬,平时偶尔会交流一些技术问题,也有不按期的软件测试资料连接发放。