• 0
  • 0
分享

自动化测试

自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。

特别是在敏捷模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个变化过程(迭代快,加班多)。测试人员如何快速响应并保证产品在上线后的质量能够满足市场要求(如何在上线一个新功能的同时快速对旧功能快速进行回归,保证旧功能不被新功能影响而出现严重的Bug?)。

针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率。

随着行业内卷越来越严重,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现自动化测试的字眼,因此也是我们跳槽面试、升职加薪必备利器。

自动化测试又可分为接口自动化、Web UI自动化、App自动化,今天我们就来聊聊接口自动化测试。

接口自动化测试的价值

1.png

1、相比于UI自动化测试,接口自动化的维护成本更低,主要体现在以下几个方面;

  • 在分层测试金字塔模型中,接口测试属于第二层服务集成测试,与UI自动化测试相比,接口自动化测试收益更大、更容易实现、维护成本更低,有更高的投入产出比,因此是公司开展自动化测试的首选。

  • 前端页面变化快,而且UI自动化比较耗时,比如等待页面元素加载、添加等待时间、定位元素、操作元素、模拟页面动作这些都需要时间,因此UI自动化实施起来比较困难。

  • 接口较稳定,接口的响应时间基本上都是秒级、毫秒级别,速度快,并且接口自动化本身也可以做一些有关联的操作、全流程的操作,比如:注册 --> 登录 --> 修改个人信息。

2、测试复用性;

3、快速回归(提高回归的覆盖率、效率、稳定性);

4、可以运行更多更繁琐的测试,自动化的一个明显的好处是可以在较少的时间内运行更多的测试。

接口自动化测试如何开展

工具选择

  • Python/Java + Requests + Unittest/Pytest + HTMLTestRunner/Allure

  • RobotFramework:关键词驱动的自动测试框架

  • 基于Web的自动化测试平台(公司自主研发,成本较高,方便不懂编程也能使用)

自动化测试工具有很多,每种工具都有各自的优缺点,选择适合自身实际情况的框架,落地实施才是重点,具体选择哪种工具放在其他文章再说。

这里使用 Python + Requests + Pytest + Allure

举个栗子

接口文档(找了一个开放的接口用于测试)

接口信息:

名称:全国高校信息查询接口
描述:用于查询全国高校信息
Host: www.iamwawa.cn
Request URL:/home/daxue/ajax
Request Method:POST
Content-Type: application/x-www-form-urlencoded
headers:user-agent:Chrome

参数:

名称类型是否必填描述
typeStringname,根据名称查询
keywordString高校名称,如:四川轻化工大学

请求示例:

POST /home/daxue/ajax HTTP/1.1
Host: www.iamwawa.cn
user-agent: Chrome
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23
Content-Length: 54
type=name&keyword=四川轻化工大学

响应示例:

{
    "status": 1,
    "info": "查询成功!",
    "data": [
        {
            "id": "2181",
            "name": "四川轻化工大学",
            "code": "4151010622",
            "department": "四川省",
            "city": "自贡市",
            "level": "本科",
            "remark": ""
        }
    ]
}

线性脚本

import requests
res = requests.post(url="https://www.iamwawa.cn/home/daxue/ajax",
                    headers={"user-agent": "Chrome"},
                    data={"type": "name", "keyword": "四川轻化工大学"})
assert res.status_code == 200
res_json = res.json()
print(res_json)
assert res_json["status"] == 1

使用以上代码,最基础最简单的接口测试就做起来了,好的开始就是成功的一半。

但是,问题也随之而来,线性脚本的缺点也暴露出来了:

  1. 测试的输入和断言都是捆绑在脚本中,易读性差

  2. 无共享或重用脚本,可复用性低

  3. 线性脚本修改代价大,维护成本高,不便于后期优化

  4. 容易受软件变化的影响,容易受意外事件的影响,引起整个测试失败

所以,下一步就是如何优化线性脚本,也就是如何实现代码的高内聚低耦合,也是接口自动化测试框架要解决的问题。

接口自动化测试框架

GitHub开源代码:关注微信公众号 测试蔡坨坨,回复关键字 源码获取

2.png

  • base_api.py:对Requests库进行二次封装,完成对api的驱动

  • api:继承base_api,将http请求接口封装成Python方法

  • utils:CommonUtil,公共模块,将一些公共函数、方法以及通用操作进行封装,如:日志模块、yaml操作模块、时间模块

  • config:配置文件模块,配置信息存放,如:URL、Port、Headers、Token、数据库信息等

  • data:测试数据模块,用于测试数据的管理,数据与脚本分离,降低维护成本,提高可移植性,如:yml文件数据

  • cases:测试用例模块,用于测试用例的管理,这里会用到单元测试框架,如:Pytest、Unittest

  • run.py:批量执行测试用例的主程序,根据不同需求不同场景进行组装,遵循框架的灵活性和扩展性

  • logs:日志模块,用于记录和管理日志,针对不同情况,设置不同的日志级别,方便定位问题

  • reports:测试报告模块,用于测试报告的生成和管理,如:基于Allure生成的定制化报告

3.png


作者:测试蔡坨坨

本文链接:https://www.cnblogs.com/caituotuo/p/16296668.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   分析报告指出,多达76%的项目失败是因为差劲的需求管理,这个是项目失败的最主要原因,比落后的技术、进度失控或者混乱的变更管理还要关键。很多项目往往在开始的时候已经决定了失败,谜底就在谜面上,开始就注定的失败,你后面多努力都很难,注定背锅!  很多PMO和项目经理却没有把需求管理重视起来,甚至认为这只是产品经理的事情,自己只做交付即可,俗话说:好的开始是成功的一半,一开始就没有管理好,注定为后续埋下了很多坑。  项目的全生命周期绝对不是到了需求给你才是项目管理的开始,而是从项目的开始有意向和萌芽开始的,越往前参与越深,你的价值就越大。  今天就分享给大家一个需求管理全过程流程图及详解,供大家...
            0 0 777
            分享
          •   测试行业那些事儿,还有什么是你不知道?填问卷,了解详情。链接:http://vote.51testing.com/  (免费领测试技术资料,数量有限,先填先得~)  在使用JMeter的时候,由于单机的并发经常性的不能满足最大压力的需求,需要多台机器同时压力测试。  在JMeter中使用的应用进场景如下:用一台机器(称为JMeter客户端)上的jmeter同时启动另外几台机器(称为JMeter远程服务器)上的jmeter。  前提条件:  1.保证jmeter客户端和jmeter远程服务器采用相同版本的jmeter和JVM。  2.jmeter客户端和jmeter远程服务器最好在...
            0 0 769
            分享
          •   一、TDSQL概述  TDSQL是腾讯研发的一款兼容MySQL协议的国产分布式数据库,适用于大并发、高性能、大容量的 OLTP 类场景。TDSQL分为集中式和分布式版本,分布式版可支持分布式事务,但性能不如单机事务,性能会有一定的损耗,如需使用,需要进行实际测试结果来决定是否使用。  二、TDSQL性能监控分析工具  1. 赤兔平台  赤兔平台中通过DB监控、实例监控和SQL Engine监控可以查看查看数据库及网关的监控指标,通过日志管理查看慢查询和SQL Engine日志,同时还可以通过性能分析报告(实例管理-》“点击实例 ID 进入”-》性能分析)查看系统状态、表空间分布、...
            0 0 1858
            分享
          •   项目系统介绍  地质系统——主要作用进行地质数据建模、数据收集、数据计算及数据传递。  执行系统——主要根据地质系统传过来的数据,如平面地质图、巷道现状图等进行车辆调度并统计相关生产数据。  Mes系统——主要用于从相关系统获得的数据进行日报展示、大屏重点数据展示及相关数据业务数据展示。  各系统间逻辑关系:数据获取-计算-执行-展示。  项目背景:没有详细的需求文档,测试人力少 (2人)。  用例编写  用例的重要性  有时候因为时间紧张,没有编写测试用例,虽然可能会在一定程度上节省时间,但是这也可能导致关键的测试点被遗漏,从而影响测试的全面性和准确性。编写测试用例能够确保系统的各个方面...
            0 0 1636
            分享
          •   report命令  生成测试报告命令。  命令参数:report [报告名称]。  注:只有执行过起码一次完整的插件检测才能生成报告,而不是专项漏洞检测,即exec 插件名称,而不是exec插件名称、模块名称。  输入命令:report webscan。  按照提示显示的目录,打开测试报告,报告格式是html的:  好了,以上就是使用扫描器的所有命令和完整的执行流程。  插件的编写  大家按章节一的下载地址下载工具后,用vscode或者你顺手的工具打开,插件扫描器就在scan目录下。  我们的插件编写,先从scan\lib\utils\settings.py全局配置文件开始。  第一步:先...
            11 11 1695
            分享
      • 51testing软件测试圈微信