自动化架构如何写,写自动化的步骤,注重自动化设计的思维能力

 

我在公司里面针对具体的项目是这样设计自动化框架的,我是使用java+selenium这个开源框架结合数据驱动及反射的原理并实现来做这个web自动化的。
那么这个框架实现点有
测试用例和测试脚本的分离:我们的项目的测试用例会写到excel里面,测试结果会反写到excel里面,也会有对应的调试日志打出来;
同时会生成测试报告,测试报告是通过邮件进行发送,测试报告会有每一个测试用例执行的结果,具体的实现如下:
首先:我用java去读写excel,这个是数据驱动框架的基础,读写excel这个类及具体的代码网上都搜的到,也就是easypoi库 ,在我的项目里,引它的依赖,然后用它提供的方法,当然我自己结合自己项目中设计的测试用例


也封装了一个,是稳定的,专门用来读写excel的测试用例的类库,当我们已经解决了读写excel读写测试用例后,我们会使用selenium这个开源的
框架来实现wed自动化,我们会针对selenium提供的这个关键字(方法)做二次封装,那我在做web自动化时,全都遵循一个最基本的原则,
首先:需要打开浏览器,然后访问我们需要测试的项目,接着呢,就需要到网页上找元素,对网页上的元素进行操作,这个时候呢,我会针对的所需要测试
的项目的测试点进行编写代码,首先需要登录、进到项目后,点击侧边栏找到视频课二级菜单,然后点击跳转视频课列表页,点击新增视频课按钮,去新增视频课,在编辑视频课的时候涉及到
iframe的切换,我会对selenium提供的方法进行二次封装,形成自己的关键字库,封装的方式呢,最主要是对定位元素进行封装,统一采用id+xpath的方式进行封装,网页元素有id的
统一使用id,没有id的元素,我就会手写xpath,比如:新增视频课列表页面上有个详情按钮,前端的实现方式是采用a标签来实现跳转详情页的,我就会打开开发者模式(控制台),切换
console一栏,输入$x(//a[@text()='详情']),这样的形式去写一些稳定的xpath出来,当然很多情况可以直接选择元素所在位置呢,直接复制一些xpath出来,这样也比较方便定位,所以我这关键字库中


会封装出便于自己定位元素的方法出来,然后对元素进行sendkeys,比如文本框可以调用这个方法传值,或者对这个元素进行click,有些元素能够直接click,有些元素不能够click,我会手写js去通过document
去对元素进行click()等,这里对元素点击会封装出几种方式来,比如有些表单元素无法click,我会通过submit方法进行点击,js的点击,我会封装出js的点击方法出来,这个会根据我们公司实际的项目情况,
去形成自己的关键字的库,这个库不会针对所有的项目通用,我只是针对我们项目的特点来封装,所以这整个框架呢,是最适合我们公司的,当关键字实现了之后,我们会利用反射的机制,利用反射的机制
主要是有利于框架的拓展,比如说我要新增视频课,我需要将鼠标悬停到新增视频课的按钮上然后点击新增视频课按钮,才能进行新增视频课,我就需要拓展一个悬停的方法出来,而不用反射的机制呢,恐怕改动的地方比较大,生怕改错改漏,如果使用了
反射的机制,我们只需要在定位元素关键字库中加一个悬停的方法,再测试脚本调用这个方法,在excel表格中只要写上这个悬停的方法名,反射机制就会自动去遍历读取excel的内容,完成相关操作,那么反射呢,就是通过实例化关键字类得到关键字的对象


通过调用getclass再调用getclassmethod这个方法完成的反射,接下来呢,我们就可以使用数据驱动来跑我的脚本了,excel表格呢,我们设计为格式化的自动化测试用例,比如说:有大的模块分组,有小的功能点的分组,分组之后呢是用例的执行,


通过区分每一条测试用例有多少个预留的参数,去分别分装出不同的反射方法,另外呢,这些分组信息我们是不执行的,在执行的时候我们会跳过这些分组信息,我们把excel表中每一行的内容读取出来存到一个list中,为了记录内容呢,我们在list里嵌套一个map,


根据传的参数和值呢,给map定义类型,这个时候,我们把这个list做为执行测试用例的参数,也就是说每读一行,我们会执行一次测试用例,这么去设计框架的原因是,经过我的实践,我发现不管是使用市面上开源的其它框架,或这个po涉及模式,最终还是


需要改动代码,容易改错,而且用例一多,很不好管理,所以我选择把数据分离到excel中,一行一行的去执行,这样呢,也便于我在excel中写测试用例,大家都是知道excel中文本操作最高级的软件,不然呢谷歌也不会迁就微软,这样呢,我们整个数据驱动框架就算编写完成

我们会把执行测试用例通过这个自动化框架执行完,的最终结果是pass,还是fail,会反写入excel的类中,形成一份excel的结果表,如果需要排查问题的话,诸多问题都可以通过这个excel结果表中,查出来。执行完用例, 我们会按照每一个功能模块中,有多少用例执行pass,有多少执行fail,的给统计出来
汇总成一个邮件,通过java中的mail类,封住出专门发邮件的这样一个库,我们可以调用这个库,可以把html模板的测试报告发出来,当然了,为了逼格更高,给到领导看的报告更高级些,我会把使用市面上开源的Alure的报告模板通过POM的方式引进来,调用这个Alure来将一些图形化的报告结合邮件发送出去,当然整个框架还有数据初始化这样一个模块
,使用jdbc 驱动调查询语句这么一个模块,主要是用来初始化一些测试数据,并且删掉一些用到用例即将用到,之前跑过的一些测试用例,这个就是我的整个测试框架。

原文地址:https://www.cnblogs.com/Magic_liao/p/13627586.html