aototest(V1.0 以线上运行)

maven+TestNG+selenium+Excel的UI自动化框架升级版本解剖图

项目简介

maven:是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理。这里主要用到它的jar包管理

TestNG:是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试

框架结构雏形

base:里面有个基类 (BaseParpare.java),这个类的主要作用是启动(启动浏览器使用了TetsNG的@BeforeClass)和关闭浏览器的作用(关闭浏览器使用了TetsNG的@AftereClass)

pages:页面元素类,每一个java类,都是一个页面,存放的都是对应页面的所有元素定位值。

pageshelper:这个包主要存放的是对应页面的帮助类

plugins:主要存放的是arrow插件以及第三方插件。

testcases:顾名思义就是存放测试用例的地方

utils:这个包主要是封装了各种工具类,Selenium api封装类,读取属性文件类和选择浏览器类等

config目录:存储框架类所需的所有属性文件,比如arrow的配置文件以及自定义的一些属性文件。

res目录:主要存放的是driver

result目录:存储测试框架运行测试用例生成的报告(包含log,截图

LoginPage_001_LoginSuccessFunction_Test:第一部分:LoginPage表明你是哪个模块的;第二部分:001,分用例编号;第三部分:LoginSuccessFuntion这个是你用例具体要干嘛的一个简称;第四部分:Test每个用例以这个作为结尾后缀。每个部分之间必须以下划线”_”作为分隔符 。

编写代码

1.这个类的主要作用是启动和关闭浏览器

2. 这个包主要存放的是对应页面的帮助类

3. 主要存放的是arrow插件以及第三方插件

4.存放测试用例的地方。在这个包下,还会有很多子包,子包的个数根据你测试的系统的模块来划分

5.这个类配置了log,封装测试平台和测试浏览器选择工具类 。这个类封装了Selenium API

6.driver的配置文件,arrow的配置文件

7.用浏览器测试所需要的driver

8.存储测试框架运行测试用例生成的报告(包含log,截图等)

9. maven的配置文件,项目核心配置,用于构建项目、自动下载项目依赖以及后续的和testng、jenkins配合持续集成等

aototest - 测试框架(V2.0)

1.项目简介

什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动。数据驱动包含了数据,他就是测试数据,在自动化领域里,提倡数据分离,也就是说,测试用例和测试数据是分开(存储)的。在本框架设计中,采用的是Excel存储测试数据。

2.框架更改详解

2.1 更改用例类:LoginPage_001_LoginSuccessFunction_Test.java

更改后数据不是写在代码中,而是从excel中读取。那么怎么让读取数据,且对应用例呢?

2.2 测试数据如何保存-设计excel

先看看如何设计excel:

excel的表名以模块名命名。excel中,有个sheet,名字为'001',对应用例编号,和设计用例的的类名第二部分是对应的,也就是说一个sheet就是一个测试用例的数据。在执行测试用例的时候,通过模块名字找到对应的excel,然后再根据对应的用例编号找到对应的sheet,最后在读取excel数据。

2.3 通过数据提供者获取测试数据

通过数据提供者(@DataProvider)来传递给测试用例,这里将数据提供者代码放置在BaseParpare.java中,目的是为了每次运行一个用例都会读取对应的测试用例。

增加ExcelDataProvider.java与pomjar依赖

aototest(V3.0)

1 关键字驱动概述

关键字驱动测试(Keyword-driven testing),也叫做表格驱动测试或者基于行为词的测试。

关键字驱动到底是什么样的?动作也就是关键字,比如你选择了“点击”操作,就意味着这步骤会执行一个元素点击操作。

关键子驱动是如何实现的:

问:那么如何定义动作?

答:在框架设计的时候会专门设计一个类,来实现各种“动作”的具体内容。当你在excel中读取了一个“动作”之后,框架会自动解析这个“动作”背后的事情。在测试框架中这个类的名字叫做:SuperAction.java。

问:如何定义和解析元素定位?

答:每个页面是一个excel,所有元素的定位方式和定位值都保存在里面

问:如何用例存储?

答:一个excel就是一个模块,然后这个excel文件中一个sheet就是这个模块中的一条用例

问:Excel文件如何执行测试?

答:excel文件存储用例,但excel只是文件,如何调用测试入口呢?其实在关键字驱动框架中,有一个用例生成类(TestCaseFactoryForSingle.java,TestCaseFactoryForAll.java),它可以遍历所有excel的所有sheet,生产一条条用例类,

关键字优缺点:

优点:只需要自动化测试人员封装好相关关键字操作,就可以提供给黑盒测试人员用,黑盒测试人员只需要掌握元素定位的方式以及对关键字框架的使用即可·条理清晰,很容易上手使用

缺点:需要自动化测试人员花费大量时间提前把关键字框架中的操作提前封装好对于复杂的测试需求,关键字框架对于操作的封装难度较大

2.在原来的框架下更改,如下图所示

1. 关键子驱动与数据驱动比较

3.解析新增页面目录

page: 存储页面元素的目录,在此目录下每个页面是一个excel,会替换原先框架的com.demo.test.pages包,所示。

page 元素定位excel

4. 解析新增测试用例目录

testcase:存储测试用例的目录,每个模块一个excel文件,每个excel文件中的sheet是一条测试用例,会替换原先框架的com.demo.test.pageshelper包和data目录。

5.解析新增测试用例目录

testcase:存储测试用例的目录,每个模块一个excel文件,每个excel文件中的sheet是一条测试用例,会替换原先框架的com.demo.test.pageshelper包和data目录。

用例Login的Actions

测试用例excel是用于存储测试用例步骤、步骤中涉及的动作和测试数据等内容,命名规则如下:

1.excel文件命名规则为:“模块名称.xlsx”;

excel中第二个sheet命名规则:“001_LoginSuccessFunction”来自原框架测试代码中的部分内容,也就是省略了“页面名称_”:HomePage_和尾部的“_Test”部分:_Test,这两部分省略的部分在生成代码的时候会自动添加。

注意:测试用例excel文件sheet“001_LoginSuccessFunction”中的“动作”),这列是通过sheet“Actions”中的“动作名称”列来赋值的:选择“动作”列,如下图所示,整列已经变灰色,表明整列已经被选中。点击excel顶部的“数据”tab -> 数据验证:在数据验证-设置中选择验证条件为:序列并勾选“忽略空值”和“提供下拉箭头”,点击来源最右边的带箭头的按钮,点击sheet 'Actions',选择A2到A26(鼠标左键先点击A2不放,然后拖拽至A26),此时注意数据验证框的变化:=Actions!$A$2:$A$26,点击回车键。

用例excel替换pagehelper类和data excel

6. 解析自动生成代码

自动生成代码TestCaseFactoryForSingle.java,

TestCaseFactoryForSingle.java这个类,这个类主要是用于生成指定模块的测试用例,这个类有一个main方法,当你执行之后,会提示你输入要生成测试代码的模块。这里的模块的名字就是testcase目录下的excel文件名字(不包含后缀),然后回车,

此时回到src/com/demo/test/testcases/login包下查看,一条用例生成了 LoginPage_001_LoginSuccessFunction_Test.java,所示.

dependency>

groupId>org.apache.poigroupId>             artifactId>poi-ooxmlartifactId>

version>3.10-FINALversion>

dependency>

automation

接口自动化测试框架

1.框架简介

APIAutoTest是处理API接口的轻量级自动化测试框架,Java语言实现,基于TestNG测试框架,支持持续集成,自动构建与测试。

2. 配置

主要用于自动化测试和统计当前文档的接口数目。主要包含的信息:接口协议、接口域名、接口配置列表。

- 接口协议:测试接口的网络协议,如:http、https,其他协议,等待以后版本支持。

- 接口域名:测试接口的域名。

- 接口配置参数:主要包括测试 ID、接口名称、运行模式、测试结果。

具体模板显示如下:

3. 公共参数

此表用于存储测试前设定好的参数和测试过程中提取出来的参数,以 `key,value` 的形式存储。sheet 名规定是`公共参数`,不可变化。如图所示

4. 接口测试数据

每个接口的测试数据占用一个 sheet 表。数据包括几个部分:sheet 名、接口路径、接口说明、接口参数组合,其中接口参数组合又细分为:接口调用方法、接口参数、测试预期结果、测试实际结果、提取公共参数。完整的例子如图所示:

4.1 sheet 名

一般使用接口名称,与 **配置表 - 接口配置参数-接口名称** 相对应。

4.2 接口路径

接口路径,是接口测试 url 中域名后面,参数前面的部分,如:

```

/api/members/members/password_login # 接口测试路径样式

```

4.3 接口说明

对于接口用途的一个简要说明。

4.4 接口参数组合

1. 调用方法。一般为 http 协议的调用方法,如:`GET、POST` 等

2. 参数列表。接口的所有参数,必填和非必填。测试时,非必填参数可为空;异常情况测试,必填参数也可以为空。每个接口所要求的参数数目不一样,编写测试用例时,每个参数占用一列即可。参数列表可支持获取公共参数形式填写(`${ziduan}`),如:mobile 这个字段想从公共参数列表获取,则可以写成`${mobile}`。

3. 接口 url。由 **协议 + 域名 + 路径 + 参数** 拼接而成的完整 url,这个数据是在测试过程中自动生成的,也可以当做对测试结果的校验。

4. 预期结果:这个数据一般从接口文档的预期结果获取的,可支持正则表达式,匹配部分测试结果。可填入字段校验:`accesstoken`,也可以填写正则表达式校验`"accesstoken":"[a-zA-Z0-9]*"`。

5. 实际测试结果。在测试过程中,按照本次调用参数调用接口所产生的响应数据。

6. 是否通过测试。通过预期结果和实际测试结果的比对,得出接口当次测试是否通过。

7. 提取公共参数的名称,以`,`号区分开。如:提取两个公共参数`openid`和`accesstoken`,则可以填入`openid,accesstoken`即可。

4.5效果展示

1.数据准备

2.刚刚参数将要提取code,在第3步展示

3.提取公共参数:会把参数放到公共参数表中

4.运行框架后面,效果展示如下图

5.表示效果展示如下:

6.报告展示:

4.6结语

现在网上有很多关于接口自动化测试的工具或者框架,为什么要费力气重新写一个接口自动化测试的框架呢?因为想要一个很轻便的接口自动化测试框架,不懂技术的同学也可以使用,找过有JMeter,Postman,都不太符合我的要求,所以才有这个框架的诞生。这个框架的核心特点:轻便、使用简单。

接口自动化测试在这个追求效率的时代,而做接口自动化测试的工具很多,比如soapUI,postman,jmeter等等,但是这些通用的工具的可扩展性以及跟项目的契合度上并不是十分合适。框架的作用在于使测试脚本编写变得简单,增强测试脚本的可维护性,容错率等,提高测试脚本的编写效率,从而提高测试效率。

UI自动化与接口自动化框架思维相关推荐

  1. pythonapp自动化_GitHub - qdyxmas/PyAutoTest: python Autotest UI自动化 APP自动化 HTTP接口自动化...

    PyAutoTest自动化平台 1.环境搭建 1.1 下载或拷贝整个PyAuthoTest到指定的目录,如D:\PyAuthoTest 1.2 安装Python2.7以及需要使用到的安装包列表如下 r ...

  2. 自动化测试到底怎么做(单元测试自动化,接口自动化,UI自动化)

    前言 大家好,自动化测试已经是测试领域老生常谈的话题了,今天给大家分享自动化测试到底该怎么做 软件测试三层金字塔 在讲自动化测试前,先看下软件测试的分层模型,如下图所示的"三层金字塔&quo ...

  3. Web自动化_APP自动化_接口自动化_测试框架汇总

    1 luckyframe 码云地址 https://gitee.com/seagull1985/LuckyFrameWeb https://gitee.com/seagull1985/LuckyFra ...

  4. 一整套的软件测试学习视频、包括web自动化、APP自动化、接口自动化,以及python语言,基础知识讲解和项目实践,学习后可收获python、web/APP/接口自动化测试。

    买的自动化测试学习视频,学完后对自动化测试能力提升了不少,觉得老师讲的很不错,分享给有需要学习的人学习 一.web自动化 百度网盘链接:https://pan.baidu.com/s/1e2fctYu ...

  5. 虫师JAVA接口自动化pdf下载,2019虫师自动化 Python接口自动化虫师 robotframework虫师 虫师接口自动化源码下载...

    第一套:Python虫师自动化 [5.1G] ┃ ┣━━Python接口测试 [2.7G] ┃ ┃ ┣━━code [23.9K] ┃ ┃ ┃ ┗━━myweb01.zip [23.9K] ┃ ┃ ┣ ...

  6. 虫师 python_2019虫师自动化 Python接口自动化虫师 robotframework虫师 虫师接口自动化源码下载...

    第一套:Python虫师自动化 [5.1G] ┃ ┣━━Python接口测试 [2.7G] ┃ ┃ ┣━━code [23.9K] ┃ ┃ ┃ ┗━━myweb01.zip [23.9K] ┃ ┃ ┣ ...

  7. java接口自动化_接口自动化实现

    一.实现框架: java+maven+testng+reportNG+jenkins框架 二.框架原理: 使用脚本发送HTTP请求返回接口的响应结果,并将代码存放在svn,Git中,jenkins可以 ...

  8. idea上java接口自动化_Java接口自动化之IDEA创建及运行maven项目

    本文2564字 阅读约需7分钟第195次推送 Maven作为一个项目管理工具,是一组标准集合,一个项目的生命周期.一个依赖管理系统,以下主要介绍IDEA创建及运行maven项目. 01创建maven项 ...

  9. python怎么写接口自动化_python接口自动化 小结

    requests 发送http请求类型:get.post.put.delete.head get 参数:params 值:字典格式 嵌套列表 array数组 import requests from ...

最新文章

  1. 青少年电子信息智能创新大赛 -- Python编程挑战赛初赛试题说明
  2. JVM(13)之 阶段回顾
  3. Dotween的timeScale
  4. 【原创】源智工作流聚合步骤模型
  5. [机器学习]回归--Polinomial Regression 多项式回归
  6. Java 多线程练习---创建两个子线程,每个线程交替输出“你好--来自线程***”...
  7. Impala 查询导出到文本,本地系统
  8. python网站服务器好麻烦_python写的网站,云服务器经常无法访问
  9. 数字风控全流程 实操课程V2.0 第三期
  10. [转载]Dynamic Database Switching in Rails - How to do it
  11. java 3000并发,还被面试官怼并发编程?来,吃点能量!Java并发编程技术
  12. HGOI 20190816 省常中互测8
  13. UE4 下载安装操作步骤
  14. 哔哩哔哩Java学习视频
  15. 七、瞰景Smart3D工具
  16. git idea提交代码的步骤
  17. 《C++ Primer 第5版》-12.1动态内存与智能指针-康奈尔笔记
  18. 怎样用好酒店培训管理系统
  19. 谢希仁计算机网络第七版答案
  20. 显著性目标检测之Learning to Promote Saliency Detectors

热门文章

  1. 记一次Gitee自搭建git服务器入门
  2. 远丰电商| 建立农村电商的优势,农村电商行业解决方案
  3. Linux-ssh: connect to host 192.168.1.161 port 22: Connection refused
  4. 用计算机制作微课教学教案,用计算机写文章微课教案
  5. Wireless Penetration Testing (1-6 chapter)
  6. 华为OD机试真题(Java),根据员工出勤信息,判断本次是否能获得出勤奖(100%通过+复盘思路)
  7. 实战篇:Oracle 巧记登录用户 IP,无所遁形
  8. Dev光标变成黑块变粗解决方法
  9. OpenStack 企业私有云的若干需求(5):主流硬件支持、云快速交付 和 SLA 保证
  10. [NLP入门篇] 我用四大名著学Embedding