REST API 自动化测试 利器Rest Assured(API接口自动化测试框架体系)

现在,越来越多的Web应用转向了RESTful的架构,很多产品和应用暴露给用户的往往就是一组RESTAPI,这样有一个好处,用户可以根据需要,调用不同的API,整合出自己的应用出来。从这个角度来讲,Web开发的成本会越来越低,人们不必再维护自己的信息孤岛,而是使用RESTAPI互联互通 那么,作为RESTAPI的提供者,如何确保API的稳定性与正确性呢?全面系统的测试是必不可少的。Java程序员常常借助于JUnit来测试自己的RESTAPI,不,应该这样说,Java程序员常常借助于JUnit来测试RESTAPI的实现!从某种角度来说,这是一种“白盒测试”,Java程序员清楚地知道正在测试的是哪个类、哪个方法,而不是从用户的角度出发,测试的是哪个RESTAPI Rest-Assured是一套由Java实现的RESTAPI测试框架,它是一个轻量级的RESTAPI客户端,可以直接编写代码向服务器端发起HTTP请求,并验证返回结果;它的语法非常简洁,是一种专为测试RESTAPI而设计的DSL 使用Rest-Assured测试RESTAPI,...

SpringMVC接口测试异常:Can not deserialize instance of int out of START_OBJECT token

之前使用springmvc搭建了restful风格的接口服务,在使用mockmvc进行集成测试的时候出现了异常:CannotdeserializeinstanceofintoutofSTART_OBJECTtoken。为什么会出现这个问题?怎么解决这个问题呢?接下来本文详细分析讲解这个问题。一、问题展现接口代码@ResponseBody@RequestMapping(value="/m1",method=RequestMethod.POST)@ApiOperation(value="测试方法1",httpMethod="POST",response=ApiResult.class,notes="测试方法1")publicApiResultmethod1(@ApiParam(required=true,name="p1",value="参数1")@RequestBodyStringp1,@ApiParam(required=true,name="p2",value="参数2")@RequestBodyIntegerp2)throwsException{Stringcontent="p1=...

接口补偿机制需求分析&方案设计

 接口补偿机制需求分析&方案设计文章目录接口补偿机制需求分析&方案设计需求分析背景解决方案业务示例注意事项示例业务Controller实现重试信息类&数据处理入库接口重试的主要方法需求分析背景业务系统逐渐开始与多个第三方系统进行对接,在对接时,需要调用外部系统接口进行数据的交换,如果在接口请求的过程中发生了网络抖动或其他问题,会导致接口调用失败;对于此类问题,需要一个长效的接口重新调用机制,在发生网络抖动时可以进行自动地补偿调用,或者记录下来通知人工处理。解决方案建立“补偿接口信息表”,主要字段:全类名(即包名+类名):class_name方法名:method_name参数类型数组:method_param_types按照方法签名的顺序插入数组参数值数组:method_param_valuesTips:对象-->JsonString、null-->'null',按照方法签名的顺序插入数组,组成字符串数组错误信息:error_msg重试次数:retry_count最大次数:max_retry_count重试有效期:re...

SpringBootTest MockMVC绑定session(需要登陆的接口

 https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#testing   spring-test+JUnit实现springMVC测试用例<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.0.6.RELEASE</version></depende...

ProceedingJoinPoint获取实现类接口上的注解

 使用aspectj处理拦截aop,需要获取实现类接口上的注解  publicObjectaround(ProceedingJoinPointpjp)throwsThrowable{longtime1=System.currentTimeMillis();StringclassName=pjp.getTarget().getClass().getSimpleName();StringmethodName=pjp.getSignature().getName();Object[]args=pjp.getArgs();Class<?>classTarget=pjp.getTarget().getClass();Class<?>[]par=((MethodSignature)pjp.getSignature()).getParameterTypes();MethodobjMethod=classTarget.getMethod(methodName,par);CacheaCache=objMethod.getAnnotation(Cach...

Github api【Restful接口规范】

ThisdescribestheresourcesthatmakeuptheofficialGitHubRESTAPIv3.Ifyouhaveanyproblemsorrequests,pleasecontact GitHubSupport.CurrentversionSchemaAuthenticationParametersRootendpointGraphQLglobalnodeIDsClienterrorsHTTPredirectsHTTPverbsHypermediaPaginationRatelimitingUseragentrequiredConditionalrequestsCrossoriginresourcesharingJSON-PcallbacksTimezonesBydefault,allrequeststo https://api.github.com receivethe v3 version oftheRESTAPI.Weencourageyouto explicitlyrequest...

App版本更新接口的设计

 前段时间公司业务调整,新开了新的移动端的项目,所以和朋友聊到了“版本号”和“版本更新所需的数据表设计”。一般来讲大部分的软件版本号分3段,比如A.B.CA表示大版本号,一般当软件整体重写,或出现不向后兼容的改变时,增加A,A为零时表示软件还在开发阶段。 B表示功能更新,出现新功能时增加B C表示小修改,如修复bug,只要有修改就增加C 除了版本号之外还会有一些修饰的词,比如: alpha: 内部版本 beta: 测试版 rc: 即将作为正式版发布 lts: 长期维护 但老实讲,知名的项目没有几个是遵守上述规则的。 商业软件完全取决于老板的意思,有时候还会配合宣传任意地来更改版本号。 而历史悠久的开源项目,往往会有自己的规则,例如Linux用奇数版本表示开发板,偶数版本表示正式版等等。 随着Github的出现,越来越多的人可以参与到贡献开源代码的活动中,版本号规则越来越混乱。&nb...

无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”

报错内容如下:无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件调用QueryInterface因以下错误而失败:库没有注册。(异常来自HRESULT:0x8002801D(TYPE_E_LIBNOTREGISTERED))。原因分析:可能是安装Office时安装过不同版本造成的解决办法:打开设备本机的注册表项,在注册表中查询,报错信息,比如:上面的红色字体代码找到该注册表象后查看TypeLib下的值,如下图:这里使用的是1.7的版本,然后在注册表中查询:{00020813-0000-0000-C000-000000000046}该值,查询结果路径,如下图:这里应该有两个版本的值,将与上面步骤版本不一致的值删除掉...

Jmeter实现webservice的接口测试

前提条件测试的URL:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx测试接口:getSupportCityString获取城市的编码:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getRegionDataset(该页面下显示的是所有城市的编码信息)如下图:使用北京的编码信息:311101输入参数:theRegionCode=省市、国家ID或名称,返回数据:一维字符串数组前提:以下是SOAP1.2请求和响应示例。所显示的占位符需替换为实际值POST/WebServices/WeatherWS.asmxHTTP/1.1Host:ws.webxml.com.cnContent-Type:application/soap+xml;charset=utf-8Content-Length:length<?xmlversion="1.0"encoding="utf-8"?><soap12:Envelopexmlns:xsi="http://www.w3.org/2001/...

sqlserver中调用服务器中的webservice接口

declare@ServiceUrlasvarchar(1000)declare@UrlAddressvarchar(500)--WebService地址:以http开头,结尾带斜杠,例如'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/'set@UrlAddress='http://139.224.134.5/SGAppService/SGService.asmx/'declare@FunNamevarchar(50)--WebService中调用的方法名:例如'getMobileCodeInfo'set@FunName='PushContractApproval'--以下参数对应WebService中4个参数的[参数名]declare@P1varchar(100),@P2varchar(100)set@P1='data'set@P2='userid'declare@P1_Valuevarchar(max),@P2_Valuevarchar(800)set@P1_Value='{"ServerLicenseI...

axios 配置拦截器 并且接口请求小于200ms的 不显示loading

//配置axios拦截器importaxiosfrom'axios';importstorefrom'../store';//追加tokenimport{Bus}from"../service/bus";//importrouterfrom'../router'//路由跳转//创建axios实例constclearTimeoutByUrl=(url,requestList)=>{for(letiteminrequestList){if(url===requestList[item]['url']){clearTimeout(requestList[item]['timeId']);}}}constservice=axios.create({//baseURL:process.env.VUE_APP_URL,//接口可能会分模块调用所以不做全局配置timeout:50000//请求超时时间});//request拦截器,在请求之前做一些处理service._requestCount=0;//累加请求次数service._requestTimeIdList=[];service.in...

阿里云人脸识别接口调用。

1.阿里云开通人脸识别2.以人脸属性识别为例3.为了安全起见,我们需要搭建一个服务器,以nodejs为例 nodejs代码varrequest=require('request');varurl=require('url');varcrypto=require('crypto');vardate=newDate().toUTCString();varexpress=require('express');//这里填写AK和请求varak_id='你的ak';varak_secret='你的ak_secret';varapp=express();//人脸属性识别functiongetFaceAttribute(obj,getMsg){varoptions={//这里调用的是人脸属性识别接口url:'https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute',method:'POST',body:obj,//这里传递参数headers:{'accept':'application/json','content-type'...

接口测试之——Charles抓包及常见问题解决(转载自https://www.jianshu.com/p/831c0114179f)

Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charles的时候要先装好Java环境。Charles是在常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles也可以用于分析第三方应用的通讯协议。配合Charles的SSL功能,Charles还可以分析 HTTP协议。Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为Charles强制关闭而遇到影响。(可以自行网上查找破解版软件)Charles主要的...

通用接口测试用例设计(转载)

1.通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。2.参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。3.接口安全:1)、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?2)、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功3)、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。4)、密码安全规则,密码的复杂程度校验4.异常验证:异常的,也就是我不按照你接口文档上的要求输入参数,来验证接口对异...
首页上一页...5960616263...下一页尾页