您现在的位置是:首页 >学无止境 >测试新手如何去学习接口自动化测试 ?从这一套测试框架开始 。网站首页学无止境

测试新手如何去学习接口自动化测试 ?从这一套测试框架开始 。

kele0724 2024-06-20 12:01:01
简介测试新手如何去学习接口自动化测试 ?从这一套测试框架开始 。

1.接口自动化测试

自动化测试虽然是测试中比较热的一门技术 ,但凡一个测试岗位,你几乎都能看到有自动化测试的要求 。但不得不说,最入门的自动化测试其实已经烂大街了 ,就像国产神车H6 ,随处可见 。当然,对于没有接触过但又想接触的同学来说 ,肯定也是从最基础的开始。

个人计划连载一套自动化测试的技术文章 ,带你从零学会如何搭建其一套自动化测试框架 ,感兴趣的同学可以点赞收藏 。这里就以使用最为广泛的接口自动化测试为例 。

1.自动化框架概述

想要了解自动化框架 ,你可以从下面两个问题入手 :

  1. 什么是自动化测试框架 ?
  2. 为什么使用它,它对我们进行接口测试有何帮助 ?

什么是自动化测试框架 ?这是由两个问题组成 ,分别是什么是自动化测试 ?和什么是框架组成 ?

所谓的自动化测试 ,其实就是由机器来代替人工来执行测试用例,来比对结果 ,一些列的操作都是自动完成 。这里很重要的一点就是执行测试用例 ,这个测试用例是谁写的呢 ? 答案肯定还是由人工来完成编写 ,再交由机器执行 。所以 ,自动化更多的是用来做回归测试 ,至于让它单独去编写测试用例或发散测试 ,目前来说它还是很难做到的 。

什么是框架 ? IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。也就是说:

1)框架本身一般不完整到可以解决特定问题;

2)框架天生就是为扩展而设计的;

3)框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的实用工具(utilities),也就是说框架时常配套了一些帮助解决某类问题的库(libraries)或工具(tools)。

约束性:针对解决特定问题的软件框架会首先定义问题的边界,进而将相关的软件组件约束在这个边界内,保持框架在解决问题方面上的内聚性

如果你不理解上面的描述 ,那么就可以简单的记住框架为解决问题而生,尤其当代码多了以后需要大量扩展的时候 ,框架的效果就会更加明显 。

所以 ,自动化测试框架就是为了解决自动执行测试用例而设计的一套具有约束性的框架 ,简单的说就是为了自动执行编写好的测试用例,这也是我们为啥要编写自动化测试框架的目的。

2.搭建自动化测试框架

同样接口自动化测试框架 ,其实就是自动调用接口 ,通过在调用时输入不同参数 ,再验证其输出结果的正确性就是接口测试框架。它其实有三步组成 :

  1. 调用被测系统的接口 ,
  2. 对接口的返回结果进行断言(测试)
  3. 输出测试结果,以便查看
    在这里插入图片描述

所以,你的框架组成应该是如下 :

①、你的在框架中至少有一个接口包,用来存放各种被测系统接口 ,以方便调用 。

②、必须有一个测试用例包,用例存放各种接口的返回并进行测试 。当然在实现测试用例的时候,你可能还会用到自定义测试数据、以及数据库的数据

③、针对输出结果来说,一般就是指测试日志和测试报告 ,所以你还的有测试日志包测试报告包

④、当然还有就是为了其它各包提供方便,必须还的有个实用工具包,即公共类库包 。

⑤、最后还的为一些常量或变量提供一个配置的地方,及配置文件,以及最后执行该框架的一个入口脚本 。

将以上黑色部分的内容组装起来就构成了一个最基本的框架,具体如下 :在这里插入图片描述
虽然是搭建起来了框架 ,但是它们之间的关系是啥呢 ?我们可以总结为以下几个关键字,分别是 :

  • 两调用 :是指调用被测试系统的接口和数据库 ,调用接口为了测试使用、调用数据库为了数据初始化以及断言使用
  • 两输出 : 输出测试报告和测试日志 ,都是为了方便查看 。
  • 两测试 : 测试用例和测试数据 ,都是测试里的必选项 。
  • 一公共: 为框架所编写的公共功能、辅助功能等 。在这里插入图片描述

3.测试框架中所使用到的技术

从上面我们也可以看到 ,几乎每一层都会使用到一个或多个模块或包 ,当然它们所解决的问题也不一样 。具体所使用的包如下 :在这里插入图片描述
其中,以上是完成一套自动化框架中所使用到的主要包 ,所以想要将这套框架搭建起来,首先的把以上包都搞熟悉了 。当然,这里面的每个包都并非是唯一的体现,都可以有可替换的包。比如:

用于做测试框架的unittest也可以使用pytest或nose替代 ;测试数据管理也可以使用json或者excel代替 ; 测试报告也可以使用HTMLTestRunner替代 ;日志模块也可以使用logging替换 ; 数据参数化也可以使用ddt去管理 。在这里我选取了一套最简单的来介绍。在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。