软件测试python库中文参考及测试开发(自动化性能接口安全测试运维等)大数据 爬虫Python AI Sql

[雪峰磁针石博客]python3快速入门教程10接口测试简介

2018-06-22  本文已影响758人  oychw

[雪峰磁针石博客]python3快速入门教程

简介

应用程序编程接口(API Application Programming Interface)是在不同进程,程序或系统之间的通信的代码。 API通常基于客户机/服务器模型。有交互的地方都有接口。最常见的跨应用交互协议是HTTP+JSON, 其次是web service(比较笨重)。最常见的后台协议有thrift、dubbo及大量的私有协议。

分类

接口在近几年快速增长。Gartner 2014年的接口使用调查

图片.png 图片.png

•61%的可靠性 •22.2%的安全 •16.7%的性能

某公司模块之间通信有seq,以免通信乱序。seq约定64位整数,会存入mysql数据。某工程师加班误把unit64改成了unit32。系统上线运行一定时间后,出现莫名其妙丢失一些老数据。

如果有做接口测试,针对0,2的64次方等值进行,就不会出现这种问题。功能测试由于看不到该seq,自然无法验证,当然长时间的大容量性能测试也会发现此问题。

某公司性能测试发现大量扣费时有不正确。经常是节假日优惠时忘记扣费。该问题在功能测试漏测。也没有进行接口测试。大量这样类似的bug堆积,导致性能测试延期。

某公司和合作方对接话单始终无法成功,后面用tcpdump抓包及查看日志发现是对方少传了一个计量单位字段。

常见问题

接口测试关注的内容

图片.png

难点

准备

接口测试工具

选择原则:费用、难度、协议类型、序列化、后台执行(很重要)、维护成本等。


图片.png

cURL

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

协议支持: cURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。

环境准备:Linux和MAC一般自带curl;Windows安装git bash可以使用curl

GET、POST

   $ curl https://curl.haxx.se
   $ curl --data "key1=value1&key2=value2" http://httpbin.org/post

下载文件

$ curl https://curl.haxx.se/download/curl-7.52.1.tar.gz

HTTPie

HTTPie是使CLI与Web服务的交互尽可能人性化的命令行HTTP客户端。它提供了简单的http命令,使用简单自然的语法发送任意HTTP请求,并显示彩色输出。 HTTPie可用于测试,调试和与HTTP服务器交互。

特点:直观的语法;格式化和色彩化的终端输出;内置 JSON 支持;支持上传表单和文件 HTTPS、代理和认证;任意请求数据;自定义头部;持久性会话;类 Wget 下载;支持 Python 2.6, 2.7 和 3.x 支持 Linux, Mac OS X 和 Windows;插件;文档。

环境准备: # pip install --upgrade httpie

GET、POST

   $ http https://httpie.org/
   $ http -f POST http://httpbin.org/post key1=value1 key2=values

下载文件

$ http -d https://github.com/jakubroztocil/httpie/archive/master.tar.gz

参考资料
https://httpie.org
https://github.com/jakubroztocil/httpie

其他工具

HttpRequester为Firefox插件,可以通过浏览器发送HTTP请求,并展示结果。

安装Firefox,进入工具-附加组件-扩展,安装HttpRequester插件

图片.png

Postman为Firefox插件,可以通过浏览器发送HTTP请求,并展示结果。
环境准备:安装Chrome,进入工具-扩展程序-获取更多扩展程序,安装Postman插件

图片.png

Requests做HTTP接口测试

环境准备:pip install requests

GET

#!python
import requests

r = requests.get('http://httpbin.org/get')
result = r.json()
print(result['origin'])
assert('.' in result['origin'])

POST

#!python
import requests

payload = {'key1': 'value1', 'key2': 'value2'}
result = requests.post("http://httpbin.org/post", data=payload)
assert('headers' in result.json())
assert(result.json()["url"] == http://httpbin.org/post)

参考资料

[雪峰磁针石博客]python外部库介绍-requests:人性化的HTTP
http://www.python-requests.org/en/master/

后记

可爱的python测试开发库 请在github上点赞,谢谢!
python中文库文档汇总
接口自动化性能测试线上培训大纲
python测试开发自动化测试数据分析人工智能自学每周一练
[雪峰磁针石博客]python3标准库-中文版

更多内容请关注 雪峰磁针石:简书

这里仅仅是对接口测试做了个简单介绍.
了解接口的开发,更容易做接口模拟和接口测试.参考:使用python3和flask构建RESTful API(接口测试服务)
接口测试测试不仅仅只有HTTP, struct,socket等模块在接口测试的应用中也相当重要.
用loadruner, jmeter做接口是通常属于大炮打蚊子,简单的问题复杂化的不当行为.很多培训机构的老师根本没入门,喜欢这么干.
python很方便访问其他语言,在当今多语言开发的情况下具有得天独厚的优势,ctypes,jython都比较重要.

10分钟学会API测试
python库介绍-dubbo:通过telnet接口访问dubbo服务
python库介绍-pyjnius:访问java类
python库介绍-jpype:python到java桥

上一篇下一篇

猜你喜欢

热点阅读