V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dataman
V2EX  ›  C

技术分享 | 软件接口测试工具篇

  •  
  •   dataman · 2018-09-11 10:07:28 +08:00 · 2714 次点击
    这是一个创建于 2264 天前的主题,其中的信息可能已经有所发展或是发生改变。

    软件接口测试工具篇

    • Python requests -

      在软件测试领域中,如果按照软件研发周期维度给测试分类的话,集成测试是一种重要的测试手段,它在单元测试和系统测试之间能够起到桥梁的作用,而接口测试又恰恰是集成测试能够抽象而且可执行的一个分支,接口测试是验证系统组件间的接口耦合交互,检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据间的交换,传递和控制管理过 程,以及系统间的相互逻辑依关系等 CBA 时代软件的复杂度更是呈几何级增长和聚合,由此给 BUG 的滋生提供了肥沃的土壤,这也是接口测试的意义所在。
      

    关于软件测试更多理论知识我们在另一个篇幅中分享介绍,今天主要和大家分享 Python 语言中 requests 库在接口测试中的使用。

      接口测试工具众多,比如大名鼎鼎的 SoapUI,Apache 旗下性能与接口集一身的 Jmeter、Chrome 浏览器 Postman 插件等等,都可以完成接口类型测试,各有优点,孰轻孰重可以根据项目需求和软件集成接口协议来适配选择。本篇主要给大家推荐的是基于 Python 语言的 requests 库,requests 采用 Apache2 Licensed 开源协议的 HTTP 库,requests 不仅简洁易用,而且维护文档详实,社区版本支持力度活跃,用 Python 做接口测试 requests 是推荐的选择,同时 requests 可以和 python 下的单元测试框架 unittest 集成,完美实现接口测试自动化,测试结束后,通过 HTMLTestRunner 生成测试报告,smtplib 邮件发送结果。
    

    下面以优云数智 PaaS 产品线 Solar 组件的接口自动化测试框架 SRAT 为例分享 requests 的使用:

    一、测试环境的准备如下:

          软件
                      版本
    

    操作系统 Windows7 Eclipse Oxygen.1a Release (4.7.1a) Pydev 6.4.0 Python 3.6.3 requests 2.18.4 unittest 2.1 HTMLTestRunner 0.8.2 备注: 1、Python 目前分两个版本 Python2x 和 Python3x,requests 完全支持 Python3x。 2、requests、unittest 安装通过 pip3 install xxx 安装即可。 3、HTMLTestRunner 直接放到 Python 的 Lib 目录下就可以了。

    二、SRAT 接口自动化

    Public.py 将 Solar 组件的每个大功能封装成为一个类,同时在类下面每一个接口定义为一个方法,然后通过 requests 实现接口协议封装的好的部分,在 Case*.py 测试用例时直接使用该公共类抽象出的对象就可以了,这样做到全局复用。 Case *.py 是将每个大类下面的具体接口编写测试用例,在测试用例里面来实现每一个测试接口所要的测试内容,每一条测试 Case 最后用到 unitest 来断言测试结果和预期结果,作为在测试报告中标注测试是否通过。 Report.py 是执行自动化测试的入口,里面 HTMLTestRunner 定义了测试报告生成、smtplib 邮件发送两大块内容。 report 文件夹用来存放每次执行接口自动化测试生成的报告。 config.ini 配置文件可以用来配置邮件的相关信息,例如发送接收人,邮件服务器信息等。

    三、SRAT 接口自动化测试公共类 Public.py 实现(以 User API 为例):

       User 业务功能中总共包括 8 个接口,分别实现不同的和用户相关功能,将 User 封装为类 Class UserAPI,然后在 UserAPI Class 中分别对每一个接口功能定义一个方法实例,准备给对应的接口测试用例来调用,这样比较逻辑清晰,易于修改和复用,下面是实现代码。 
    

    四、SRAT 接口自动化测试用例类 Case*.py 实现(以 CaseUser 为例):

       在 User API 里面定义好公共类后,在 CaseUser 就需要使用公共类定义好的方法了,CaseUser 里面继承了 Python 单元测试框架 unittest 的方法(关于 unittest 实现原理类似于 java 里面的 junit,大家可以自行查找资料,比较好理解),测试结果和预期结果通过断言 assert 来比较,SRAT 主要是判断接口请求后 response 返回的状态码和返回状态信息来断言。然后将所有的测试用例组织到测试套件 unittest.TestSuite ()自动化完成测试用例的执行,执行完所有的测试用例后用 HTMLTestRunner.HTMLTestRunner ()生成测试报告,代码如下。
    

    五、SRAT 接口自动化 Report 测试执行及报告发送:

       测试公共类 Public 和测试用例 Case* 编写完成后,就可以进入测试执行环节,分两部分:一部分是测试执行环节,unittest.defaultTestLoader.discover ()用来执行测试用例部分,自动调用 Case*.py ,Case*.py 继续再调用 Public 对应实现方法,测试用例执行完毕后,调用 send_mail()方法发送测试测试报告,整个接口测试过程就完毕了,实现代码如下。
    

    测试执行完毕后在 Eclipse 控制台显示的测试。

    六、SRAT 接口自动化邮件报告查看:

      下面是 SRAT 接口自动化测试完成 HTMLTestRunner 生成报告后发送给相关人员,打开可以查看本次接口测试执行情况,包括测试用例的通过率、通过、错误、失败、所有,对每一个用例集下的测试用例有详细的统计,失败或错误了的原因,如下测试报告展示。
    
    
    
     总结上面 SRAT 实现接口自动化测试分享了 Python requests 使用,从测试角度讲,关键部分是测试框架搭建和测试用例的编写,本次 SRAT 是首先将接口公共部分封装类后,然后再在测试用例调用实现公共的方法去测试对应接口,其实,这个测试还需要有一定的 Python 代码基础,如果从黑盒子角度可以将测试框架和测试用例完全解耦分离,测试用例用 excel 或 YAML 文件来实现测试用例就更好了,期待后面改进一版。
    

    上面有不妥之前敬请和我联系,一起交流沟通,谢谢!后面有机会和大家一起分享测试基础理论、测试工具集合、存储测试入门、大数据性能测试等内容。

    requests 官方参考文档: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html http://www.python-requests.org/en/master/ https://pypi.org/project/requests/

    优云数智介绍

    优云数智(上海优铭云计算有限公司)是一家专注于提供企业级私有云产品与解决方案的云计算厂商,提供 PaaS+IaaS 的一站式解决方案。优云数智的母公司是中国中立的公有云服务商 UCloud。私有云技术来源于全球顶尖的 OpenStack、Ceph、Kubernetes 云计算开发团队。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:39 · PVG 08:39 · LAX 16:39 · JFK 19:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.