自动化测试方案

Posted stepan.jiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试方案相关的知识,希望对你有一定的参考价值。

自动化测试体系方案

方案1全编写代码流程

UI自动化:

使用python或java,配合selenium库及pytest框架做UI自动化测试。(通过selenium的webdriver驱动,驱使浏览器)

1. WebDriver API(基于Java、Python)

java:下载下来的selenium的Jar包,比如selenium-java-3.8.1.zip包,代表Selenium3.8.1的版本

python:使用pip安装selenium库,可以指定安装版本,一般一最新的为主

2. 浏览器的驱动(browser driver)

每个浏览器都有自己的驱动,均以exe文件形式存在

比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe

3. 浏览器

在WebDriver脚本运行的时候:

对于每一条Selenium脚本,一个http请求会被创建并且发送给浏览器的驱动,浏览器驱动中包含了一个HTTP Server,用来接收这些http请求,HTTP Server接收到请求后根据请求来具体操控对应的浏览器,浏览器执行具体的测试步骤,浏览器将步骤执行结果返回给HTTP Server

HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。

4、实现方式(元素定位及操作函数):

1、定位元素:将页面元素全部存储到配置文件(.ini、.yaml、等文件中),元素获取的方式有以下八种:

  • find_element_by_id()通过ID定位
  • find_element_by_name()通过name定位
  • find_element_by_class_name()通过class_name定位
  • find_element_by_tag_name()通过tag定位
  • find_element_by_link_text()通过link_text定位
  • find_element_by_partial_link_text()通过partial_lisk_text定位
  • find_element_by_xpath()#通过xpath定位
  • find_element_by_css_selector()通过css_selector定位

2、操作方式:通过selenium的函数和方法调用元素来控制网页端的模拟操作(click(点击)、 senk_keys(输入)、get_attribute(获取)等调用操作元素的函数方法)。

3、UI自动化PO模式:

核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。

PO模式可以把一个页面分为三层,对象库层、操作层、业务层。

对象库层:封装定位元素的方法。操作层:封装对元素的操作。

业务层:将一个或多个操作组合起来完成一个业务功能。比如登录:需要输入帐号、密码、点击登录三个操作。

4、PO模式的好处:

  • 减少冗余代码
  • 业务代码和测试代码被分开,降低耦合性维护成本低
  • 减少业务流程不清晰的后期维护成本

二、接口自动化

使用python配合requests+pytest框架做http接口自动化测试(通过使用requests库模拟http客户端给服务端发送请求)

  1. requests 库使用:

Requests中的 get() 方法能向服务器发送了一个请求,请求类型为 HTTP 协议的 GET 方式;post() 方法,也能向服务器发送一个请求,请求类型是 HTTP 协议的 POST 方式,您大可根据访问的网页而定。

  1. requests实现方式:
  1. 利用requests中的session类来实现客户端和服务端的会话保持

①get请求:requests.get('url') 

②post请求:requests.post("url/post")

③put请求:requests.put("url/put")

④delete请求:requests.delete("url/delete")

⑤head请求:requests.head("url/get")

⑥options请求:requests.options("url/get")

  1. 校验方法:

通过.json()函数获取服务端返回的数据结果进行校验,使用返回结果key和value或者http状 态码等来断言数据是否正确

  1. 自动化测试项目管理及PO模式:
  • 可以通过yaml、ini、excel等来管理测试用例及接口参数模型
  • 接口自动化PO模式:

新建一个工程(一定要创建工程),工程名称自己定义,如:ApiAutoTest

  • 在工程下创建以下几个 pakage 包:
  • --testcase:这个包放 test 开头的测试用例
  • --common:这个包放一些公共的方法,如:读取 excel 文件方法,读取 mysql
  • Read_data.py:封装 Excel、yaml、ini 读取方法
  • Excel_info.py:读取 Excel 、yaml、ini中内容
  • request_base.py:封装请求公共方法
  • --config:这个包下面放配置文件  
  • conf.py:存放路径 url  
  • --run_all:这个包下放入执行用例的文件
  • --report:这里存放测试报告
  • --data:这里放接口测试用例

三、测试框架pytest:

  1. 简单灵活,容易上手,文档丰富;
  2. 支持参数化,可以细粒度地控制要测试的测试用例;
  3. 能够支持简单的单元测试和复杂的功能测试,还可以用selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
  4. 具有很多第三方插件,并且可以自定义扩展,比如pytest-selenium,pytest-html
  5. 测试用例的skip和xfail处理
  6. 可以很好的和CLI工具结合,例如Jenkins
  7. pytest支持测试结果输出报告以web形式显示(allure报告)

四、测试报告allure(特点):

可以将测试失败划分为 bug 和损坏的(Broken)测试,还可以配置日志、步骤、固定装置、附件、时间、历史记录,以及与 TMS 的集成和 Bug 跟踪系统,方便将 Task 与负责 Task 开发人员和测试人员绑定,从而使开发和测试人员第一时间掌握所有信息。

从管理者的角度看,Allure 提供了一个清晰的“全局”视野。

包括本次测试涵盖了哪些功能,Bug 在哪个 case 用例中被发现,以及整体测试用例、单条测试用例的执行时间等信息。

Allure 测试报告除了涵盖测试运行的全面信息外,还提供各种维度的分析图,包括如下几个部分。

项目总览(OverView) 

项目总览显示了总体测试运行的一系列统计信息。

按缺陷种类分析(Categories)

缺陷种类分析显示了所有不同原因引起的失败,并分类展示。

按测试套件分析(Suites)

测试套件分析显示了按照套件和类划分的所有的测试执行情况。

图表模块(Graphs)

图表模块,包括按照不同维度分析的各种图表(例如测试状态表分析,测试用例等级分析表,测试执行时间分析表等等)。

按执行时间分析(Timeline)

按执行时间分析模块,详细列出了各个测试用例的执行时间,你可以筛选出那些运行时间最长的测试用例进行优化。

针对 BDD 驱动的测试用例进行分析(Behaviors)

这里主要是根据 Epic、Feature 和 Story 标签对测试结果进行分组。

按照 Package 进行分析(Packages)

Package 模块列出了按照 Package 维度进行分析的详细图表。

方案2工具测试流程

  • Jmeter接口测试工具介绍:

JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

二、Jmeter接口测试工具实现(JMeter常用组件):

1、CSV数据文件设置:添加csv格式保存的测试用例

2、线程组:可以认为是测试开启的入口,如果main函数。

3、HTTP请求:模拟发起一次http请求

4、如果(If)控制器:主要用以决定请求方式

5、响应断言:判断返回是否符合预期

6、查看结果树:请看HTTP请求和返回信息

7、汇总报告:查看成功率,以及响应时间等信息

三、Jmeter接口测试工具(用例管理及案例):

1、测试用例管理:

一般使用EXCEL来管理测试用例,包含主题、请求方式、接口路径、参数、http状态码、数据变量等

2、测试案例:

通过线程组,控制整个线程组内的操作及数据,如:新增http请求、设置响应断言、增加结果图、导入excel文档

持续集成jenkins

以上两种方案均需要使用jenkins持续集成工具:

1、执行集成构建:

持续,自动地构建&测试软件项目代码管理(git/svn)>编译(maven/ant/gradle)>打包>测试环境部署>自动化测试

2、研发体系中的迭代流程:

  • 源码分支管理: git或者svn, 将不同开发编写的代码集成起来形成不同版本和分支,那么急于版本管理,来进行版本打包发布
  • 形成版本 编译打包: maven,ant,gradle集成的版本代码编译打包形成可发布的war包或可运行的安装程序,提供给测试实验
  • 测试环境部署: 把形成软件产品包部署到响应的服务器环境上,测试可以开始进行功能测试,CI可以开始执行自动化测试
  • (如果不做自动化第三部就已经可以结束了)
  • 自动化测试:在测试环境完成部署之后,充当冒烟测试职责,对产品核心功能用例进行测试,相当于进行一次准入验证,通过了才移交测试组展开功能测试。

3、jenkins的工作原理:

Jenkins是先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务。

以上是关于自动化测试方案的主要内容,如果未能解决你的问题,请参考以下文章

自动化测试都包含哪些内容?

自动生成测试脚本方案浅析

自动化测试方案

OPPO 手机自动化测试个性化问题解决方案

文件上传自动化测试方案

接口自动化测试方案详解