接口测试

Python接口自动化测试01

人盡茶涼 提交于 2020-03-28 00:39:33
1)环境准备:   接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当工具不太适合项目时需要自己进行开发。   在我们项目的初期,我们采用的是jmeter进行接口测试,当时觉得这个工具上手简单,团队成员学习成本低,并且接口测试的脚本稍微调整一下还可以用来做性能测试。   不过随着项目规模、团队人数的不断增长,渐渐的这个工具有适应不了当前项目的需求了,为此我们项目也重新开发了相关接口自动化的平台。但是,但是。。。可能是我让大家中毒太深,现在很多同学一提到接口测试关联到jmeter,为此,我深深感到不安。毕竟jmeter只是个工具,换个项目换个协议你是否还能玩转接口测试呢?session和cookie有什么区别?工具又是怎么实现的呢?   比如session如何保存,接口依赖如何处理,case如何管理及执行顺序,测试数据如何管理等等题,这个过程也有助于我们更加深刻的理解接口测试和http协议。   本文主要采用python语言,python中http协议接口相关的库有urllib,urllib2以及reqeusts库,这其中reqeusts库用来起来最方便,因此我也主要采用requests库来做http协议的接口测试

postman工具测试接口

心不动则不痛 提交于 2020-03-24 17:42:30
本篇文章主要介绍怎么在postman工具中进行接口的测试? 从以下几个方面进行介绍: 1、先介绍下接口测试 2、不同类型的接口请求方式如何在postman中进行测试 1、1 接口 什么是接口? 接口一般分为系统对位的接口和程序内部的接口。 系统对外的接口为服务器端为客户端app,h5提供的接口 程序内部的接口为方法与方法,模块与模块之间的接口,比如要想在京东买东西,就必须先登录,那登录接口就为买东西提供了一个前提的接口。 在实际的工作中,我们一般分为前端和后端,前端就是client端,后端就是server端,server端要为client端提供接口,他们就是通过接口进行交互的。 而json这种数据类型是所有语言都认识的一种数据类型,服务端返回给客户端的接口类型是json类型的。 1、2 接口测试 什么是接口测试? 接口测试实际上就是功能测试,功能测试就是在页面上进行点击,输入各种异常,正常的值进行测试。而接口测试没有页面,通过调用接口地址,传不同的参数值,发送请求,查看不同的响应结果 1、3 为什么要做接口测试? 可以发现页面上很多发现不了的bug 检查系统的异常处理能力 检查系统的安全性,稳定性 前端随便变,接口测试好,后端就不用变 1、4 接口测试需要提供接口文档? 接口文档包括哪些东西? 接口文档需要接口说明,接口url,请求方式(get/post),请求参数,参数类型

自动化接口测试之Postman

不羁岁月 提交于 2020-03-23 10:30:41
我们先思考一下,如果需要达到自动化接口测试的效果,那么我们在基本的模拟请求上还需要做哪些呢? 以下我粗略概括为 3 个问题(欢迎更多补充与建议): 如何判断接口是否请求成功 如何进行接口批量、定期测试 如何处理依赖接口问题(比如商品下单的接口必须要求先登录) 所以,接下来就主要分为 3 个部分进行介绍,以分别解决这 3 个问题。 一、接口结果判断 首先 , 既然是自动化测试 , 那么我们肯定需要 工具 (Postman) 或者代码能帮我们直接判断结果是否符合预期。那么在接口测试上,大体就两个思路: 判断请求返回的 code 是否符合预期 判断请求返回的内容中是否包含预期的内容(关键字) 接下来我们看看如何利用 Postman 来解决上述的问题: 1、功能区 在 Postman 中相关的功能在非常显眼的地方, Tests 功能的使用需要我们有一定的编程语言基础,目前支持的脚本语言即为 JavaScript 。 但比较好的一点是,我们不需要再去考虑上下文问题以及运行环境的问题 ,也就是说我们只需要在这边完成结果逻辑判断的代码块即可。而 Postman 还为我们提供了一些常用的代码模板,在 Tests 面板右边的 SNIPPETS 功能区中,所以对 JavaScript 不大了解问题也不大。代码编写相关将在下文进行具体介绍。 2、脚本相关 先看上图的代码部分,我们可以发现

接口测试用例和报告模板

时光总嘲笑我的痴心妄想 提交于 2020-03-22 07:36:05
接口测试用例和报告模板 当今在测试领域,接口测试已经越来越多的被提及,被重视。 区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上手,但一提到相关的归档,比如测试用例和报告,就有些不知所措了。 今天就用这篇文章来说说接口测试用例和报告。 1.  接口用例模板 提到测试用例,我们知道,其中最重要的两个要素就是: 测试步骤 预期结果 其实对于接口测试也同样如此;接口测试的步骤中,最重要的是将实现向接口发送预设请求,结果则要关注响应信息及后续处理。 所以接口测试用例编排可以考虑下列两种形式: 要注意的是,实际工作场景中我们可能还会对接口之间的串联和混合场景进行测试。 2.  测试报告模板 接口测试报告很多时候会和接口性能测试报告一起,如果要单独报告的话,可以考虑以下内容: 2.1   系统 接口 概况 简要描述与测试项目相关的一些背景资料,如被测系统简介,项目上线计划等。 对于系统接口的定义和设计做出介绍,比如系统一共有多少个接口?采用哪种协议?都涉及到哪些发送方法?采用怎样的请求格式?使用怎样的返回标准?可用表格说明。 2.2   测试目的与范围 描述本次接口测试的目的、范围与目标,内容应与本次接口测试的《接口测试实施方案》中的对应内容保持一致。 2.2.1. 测试目的 本次测试的目的在于确保系统接口功能和逻辑处理已验证,符合

api接口测试

心不动则不痛 提交于 2020-03-21 12:06:53
POST multipart/form-data curl -X POST -H "Content-Type:multipart/form-data" -F "client_id=shengyihuo" -F "access_token=9df3ca04205900235e3aa0fc35bab1ff3da00036" -F "sn=18088004400001" -F "data={"userNo":"123456"}" http://api.syhuo.net/remote/upload_data.json POST application/json curl -X POST -H 'Content-Type: application/json' -i 'https://api.syhuo.net/remote/get_data.json' --data '{ "client_id": "shengyihuo", "access_token": "2cb09825f5558101e86011e647df200bbc923d0d", "sn": "18088004400001" }' Fiddler POST RAW POST http://api.syhuo.net/oauth2/access_token.json HTTP/1.1 Host: api.syhuo.net

JMeter接口压力测试课程入门到高级实战教程(详情)

寵の児 提交于 2020-03-18 14:18:54
章节一压力测试课程介绍 1、2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介: 讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分,然后在后续操作中慢慢补充,更容易消化和理解 2、常用压力测试工具对比 简介:目前用的常用测试工具对比 1、loadrunner 性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多 2、apache ab(单接口压测最方便) 模拟多线程并发请求,ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载, 简单DDOS×××等 3、webbench webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果。 章节二 JMeter4.x基础知识讲解和压测实操 3、Jmeter基本介绍和使用场景 简介 1、压测不同的协议和应用 1) Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …) 2) SOAP / REST Webservices 3) FTP 4) Database via JDBC 5) LDAP 轻量目录访问协议 6) Message-oriented

接口用例测试设计

女生的网名这么多〃 提交于 2020-03-16 02:45:53
1 api文档 { "collection": { "version": "1.0", "href": " http://127.0.0.1:8000/api/departments/", "links": [], "items": [{ "href": "/T01", "data": { "dep_id": "T01", "dep_name": "Test学院", "master_name": "Test-Master", "slogan": "Here is Slogan" }, "links": [{ "rel": "classes", "href": "http://127.0.0.1:8000/api/departments/T01/classes/ ", "prompt": "班级集合" }] }], "templates": { "data": [{ "dep_id": "T01", "dep_name": "Test学院", "master_name": "Test-Master", "slogan": "Here is Slogan" }] }, "queries": [{ "rel": "search", "href": " http://127.0.0.1:8000/api/departments/", "prompt": "列表查询", "data": [{

0312 java接口测试三棱军刺rest-assured

安稳与你 提交于 2020-03-13 01:50:53
背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。 使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。 快速的来一个hello world吧! 假设你写了一个接口:lotto,访问路径是: http://localhost:8080/lotto 接口返回值是: { "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners":[{ "winnerId":23, "numbers":[2,45,34,23,3,5] },{ "winnerId":54, "numbers":[52,3,12,11,18,22] }] } } 如何快速的验证接口是否返回正常值呢? get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54)); 使用简单吧! 引入 不多说,直接maven的方式引入:注意,我直接按照默认的scope引入的,不是test;

0312 java接口测试三棱军刺rest-assured

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-13 00:27:21
背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。 使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。 快速的来一个hello world吧!<br /> <br />假设你写了一个接口:lotto,访问路径是: http://localhost:8080/lotto <br /> <br />接口返回值是: { "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners":[{ "winnerId":23, "numbers":[2,45,34,23,3,5] },{ "winnerId":54, "numbers":[52,3,12,11,18,22] }] } } 如何快速的验证接口是否返回正常值呢? get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54)); 使用简单吧! 引入 不多说,直接maven的方式引入:注意

Mock Framework 实战

守給你的承諾、 提交于 2020-03-12 23:32:37
今晚的世博开幕式很棒,欢迎大家到上海来看Expo! 上一篇中和大家分享了单元测试的理论、入门和一些实践(更多的实践会逐步更新进来),这篇中来介绍下更多的应用场景和使用Mock对象来进行快速的生成模拟对象来简化测试并解决一些问题。 场景分析: 我们假设一个应用场景,也是发生在项目中真实的案例。 真实对象不存在或不完备:新产品开发时,Platform Team只定义了接口,并未完全实现该接口中的方法。但Feature Team仍要进行自己的开发,并需要底层数据支持,等Platform开发完成再去编写自己的代码显然是不可能的,如何去处理这种依赖? 真实对象本身不确定:底层接品在设计之初也是不稳定的,通常在产品一个方法的返回值会跟据需求经常变动(这种情况在好的设计中出现的概率较小),如何在这种情况下保证上层代码的安全。 数据源不稳定:有些依赖数据会经常变化,或者根本拿不到,但方法本身仅是对数据的加工,不涉及取数据。 代码依赖:当要去初始化一个对象时,要初始化另外的依赖对象,还要解决依赖对象的依赖对象…,还不算完,一旦这个测试挂掉,恭喜,你又一次陷入穷尽的 Debug中,因为无从只到是哪一步出错。 解决方案 上一篇示例中已经提到这个问题,并通过一个简单的类来代替当前这个真实而复杂的类,返回我们期望的数据。这样做的好处,一个测试出错,总能立即找到它对应的方法,不用对外部类的行为负责任