服务端线上接口监控实践

背景最近上线了一个新的服务,这个服务有一个特点就是接入了n个第三方的数据服务,前端通过不同参数请求被测服务端,服务端根据参数不同proxy_pass到不同的后端服务器获取数据,处理后吐给前端展示;问题被测服务和后端服务都上线后,发现了一些问题 1、第三方服务器可能会宕机,导致线上的被测服务功能不正常; 2、现有的报警机制是基于对服务存活的检查,无法检查功能逻辑是否正常;问题分析现有的监控程序是对线上服务器进行服务进程存活检查,当进程挂掉才会报警,但是有一些情况cover不到,比如后端服务挂了,那么被测服务进程还在,但是当客户端请求时,无数据返回;解决方案使用脚本模拟客户端不同参数的请求,验证接口返回码200的同时,验证数据内容的正确性; 例:http://abc.sogou.com?type=music,会请求后端music服务器,正常情况下有内容{“name”:”abc”} 使用python的requests库请求服务端获得返回码&返回body,验证jsonobj中含有 key=...

接口测试之JMeter初探

1、JMeter安装配置1)登录 http://jmeter.apache.org/download_jmeter.cgi ,下载与自己的平台相对应文件;2)安装JDK(1.6以上),配置环境变量JAVA_HOME(C:ProgramFilesJavajdk1.7.0_17)Path(%JAVA_HOME%in;%JAVA_HOME%jrein)CLASSPATH(.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libools.jar),通过javac和java-version验证开发环境是否配置成功;3)将下载Jmeter文件解压,双击/bin/jmeter.bat运行Jmeter。 2、使用JMeter建立接口测试【需求】某组机器是Android和iOS输入法接口服务器,有很多重要的接口,例如:升级,网络开关,热词等。现在有3台机器过保要下线,新申请了3台机器,需要验证一下这3台机器接口的正确性。【测试步骤】1)确认接口首先从开发人员那里获取接口文档,接口文档应该包括完整的功能接口接口请求方式、接口请求URL、接口请求参数、接...

服务端测试之接口测试工具——postman

今天跟大家分享一个非常常见大家也非常熟悉的测试工具——postman。1.安装postmanpostman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。打开chrome浏览器,在浏览器中访问 https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop ,点击“添加至CHROME”,安装该插件,如图。 安装完毕后,访问chrome应用(chrome://apps/)即可看到该插件。在该插件上右击,并在弹出菜单上点击“创建快捷方式”,可以在任务栏、桌面、开始里创建该插件启动的快捷方式,这样便于我们使用。2.postman使用(1)postman工具结构 打开postman,左侧的导航栏有两类:History和Collections。History是用来记录postman曾发出的http请求,Collections则对测试集或测试用例集进行管理。postma...

服务端测试之接口测试初探

  提起服务端测试,第一反应想到的可能就是http协议、socket连接、post/get发送请求等等。回想起小编当时初次接触服务端测试,真可谓一脸懵逼,不知道要干什么也不知道从哪儿开始做。服务端测试往往呈现给大家的是一个很大很宽泛的任务,我们知道要做服务端测试但却不知道怎么做,流程是啥,用什么工具去做,要达到什么样的效果。今天小编就结合最近自己做的一些服务端测试的任务,和大家聊聊服务端测试中的一个常见方法——接口测试。一、什么是接口测试 先来看看接口测试的定义:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。如今的软件系统通常采用前后端分离的模式进行设计与实现,即一个系统分为前端(客户端)和后端(服务端)两部分。通常服务端以接口的形式给客户端提供服务,实际上接口和客户端的功能之间是关联的:每个接口都对应着客户端一个或多个功能点;而客户端同服务端的交互,一般也是以接口作为基础,客户端根据不同的需要请求不同的接口...

检查数据接口返回数据合法性

问题背景:  在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候。最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型的错误:(1)整个结构不完整。直接无法解析json/xml。 (2)编码错误,常见的gbk/utf8错误  (3)超长数据/非法字符。 (4)数据类型不匹配。需要是数字的给了字符串,该是数组的给了字符串等,对json本身来说没问题,程序处理就会错误或者崩溃。(5)字段缺失或者为空,这个情况对json本身来说也是没问题的,处理进程固定要去取这里的字段就会出问题,或者进程本身没问题,但实际展现出问题。例如,json描述一个商品最近30天的售价,提供一个数组里有30个数据来画点,json里这个数组为空,从数据格式上来说没问题,但实际画点时展现即为空。 截图是来自一份合作方的数据,箭头指向的是上证指数曲线的点,如果点数据完全缺失(为空)则画曲线的界面会显示为空。在json结构上则仍然验证为合法。 解决问题的现状:  对上述问题,我们有一...

接口数据一致性校验工具

 背景介绍:      搜狗手机输入法8.6版本近期发布了一个创新性的功能:Quickshare,用户通过输入法工具条的Quickshare按钮,可以进行百科、地名、音乐等等类别数据的搜索,搜索结果会直接以卡片形式在输入法中展示。Quickshare功能后台接入了不同数据源的接口,例如搜索地名时可以查询到相应地名的结果,这是由后端的搜狗地图服务器提供的数据源。  问题介绍:         但是该功能在后期测试验证时,出现了数据不一致的问题。例如:在搜狗地图的客户端程序中搜索"凯德Mall",可以查询到对应的结果;但是在Quickshare中搜索"凯德Mall"无结果。虽然接口都是搜狗地图服务器提供的,但是两个具体接口数据内容不完全一致。为了进行数据覆盖度的评估验证,测试组完成了一套基于python的接口数据覆盖度自动化工具。 工具功能介绍该工具的主要功能是:定时地对线上服务器的接口进行自动化监控...

白盒测试——私有接口测试

起因:白盒测试过程中,经常会遇到被测接口是私有接口,不能通过直接访问接口进行测试,那么对于这样的接口我们怎么进行路径覆盖呢?想到的办法:1.通过访问上层接口构造相应数据来测试私有接口;2.通过走查私有接口,设计用例通过黑盒的方式覆盖代码逻辑;3.在私有接口中期望关注的位置上设置断点,构造相应数据,观察运行过程中断点位置的数据变化是否符合预期;4.将私有成员定义为公有成员;5.声明测试类为被测试类的友元类。几种测试方法的对比:Ø前三种办法覆盖度不高,复用率较低,但单位时间获得的测试覆盖度较大;Ø第四种方法通过#defineprivatepublic的方式可以在外部访问类的私有变量,但这时所有的外部类都可访问这个类的私有成员,较危险;Ø第五种方法通过在A类中声明B类为其友元类,这样B类中就可以访问A类中的所有私有成员和保护成员了,其他类依然没有权限访问A类的私有成员和保护成员,较为安全。怎么使用友元类进行测试呢? 第一步:在被测函数中声明测试函数为其友元类; 第二步:新建头文件B.h,引用被测试类的头文件,并声明该类,在我们自己...

用soapUI测试xml格式的HTTP接口

有些HTTP接口是直接传递parameter的,有些HTTP请求是将parameter转换为xml串进行传递的。现在要分享的就是如何用soapUI实现xml串的HTTP接口测试。 soapUI 1新建soapUI工程:右击左侧导航面板中的工作空间节点“Project”,选择“NewsoapUIProject”,输入工程名称,点击OK2新建TestSuite:右击工程名,选择“NewTestsuite” 新建TestCase 添加数据源:DataSource 添加HTTP请求:HTTPTestRequest 添加循环:DataSourceLoop 添加数据沉淀:DataSink 添加数据源数据 .添加HTTP请求数据:此处最关键:将xml串设置为一个字符串写在一个参数para里,并将xml串里对应的信息参数化,最后勾选传输请求串。 传输xml串里的信息内容  Loop:数据源和HTTP请求关联&nb...

APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

转载自:http://www.cnblogs.com/findyou/p/5388853.html说明,本文为学习参考,将于一段时间后删除。前言   前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相关)。 目录3.1HTTP接口(GET)测试实例3.1.1待测接口说明3.1.2新建JAVA工程1.工程目录说明2.Common.java源码3.getCityWeathe.java源码4.URLConnection.java源码3.1.3编写测试用例1.测试用例2.简化后的用例3.1.4执行测试用例 以下实例均为本次总结再次编写,,如转载还请保留出处与作者姓名Findyou,谢谢!  例:北京市天气 接口的址:http://www.weather.com.cn/data/cityinfo/101010100.html请求方式:GET请求结果:{  &nbs...

LR 测试http协议xml格式数据接口

Action(){lr_start_transaction("T1");web_custom_request("xxxxHTTPRequest","URL=http://xxxx","Method=POST","Resource=0","RecContentType=text/xml","Referer=","Mode=HTML","EncType=text/xml;charset=utf-8","Body=<?xmlversion="1.0"encoding="utf-8"?>""<feed>""<token>1999EB84FC68842398B1B4268699DC4D</token>""<version>1.0.1,10,u12618</version>""</feed>",LAST);lr_end_transaction("T1",LR_AUTO);return0;}LR测试XML格式的数据时,如何手写脚本是个问题,遇到该类问题的时候可以参考上面。...

接口测试文章整理

用soapUI测试xml格式的HTTP接口APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例接口测试总结 ...

服务端测试接口测试用例设计

小伙伴们大家好,上一次和大家分享了《服务端测试接口测试初探》,讲了一些接口测试的基本概念和理论知识。在上次的分享中,简单提到了接口测试用例设计包含的几个方面。本期我将在上次分享的基础上,和各位小伙伴一起具体看看这几个方面都是什么,在实际的项目中应该如何使用。一、功能性用例设计之前讲过,服务端的接口是和客户端的功能相对应的,对功能的验证,可以参照接口说明文档来进行。概括起来讲,就是我们需要验证接口说明文档中提到的各种情况,保证这些情况下接口的返回和最初设计的是一样的,这样我们就可以认为该接口实现了功能需求。举个例子,目前有一个接口A,关于该接口的请求参数列表如下: 可以看到,规定该接口的请求类型是get,同时该接口包含4个请求参数,那么在功能性的用例设计上,我们可以考虑如下几个方面: 1.以get方式请求; 2.请求中需要包含这4个参数; 3.各个参数的类型符合要求; 4.key参数的长度需要控制在10个字符以内。通过这几个方面写出来的case就是功能性的测试用例了。其实不难看出,功能性测试用例的目的是为了验证服务端在正常情况下是否实现...

python 接口自动化--登录

从目前知道系统登录来看一般主要是与数据库存储用户名密码进行比对,若登录域名和业务域名不是同一个还需要获取业务域的coockiehre项目登录demo:__author__='Administrator'importreimportrequests#roleId:3为派单专员deflogin(username,password,roleId):session=requests.Session()url="https://login.daydao.com/login?source=dayHRe"response=session.get(url)#提取jessionid_valueresponse_set_cookie=response.headers['Set-Cookie']print(response_set_cookie)jessionid_search=re.search(r'JSESSIONID=(?P<jessionid_value>.*?);',response_set_cookie,re.S|re.I|re.M)jessionid_value=jessionid...

公开的免费WebService接口分享

天气预报Web服务,数据来源于中国气象局 Endpoint  Disco  WSDL IP地址来源搜索WEB服务(是目前最完整的IP地址数据) Endpoint  Disco  WSDL 随机英文、数字和中文简体字WEB服务 Endpoint  Disco  WSDL 中国邮政编码<->地址信息双向查询/搜索WEB服务 Endpoint  Disco  WSDL  验证码图片WEB服务支持中文、字母、数字图像和多媒体 Endpoint  Disco  WSDL Email电子邮件地址验证WEB服务 Endpoint  Disco  WSDL  中文简体字<->繁体字转换WEB服务 ...

python实现微信接口——itchat模块

sudopipinstallitchatitchat.auto_login() 这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl用于存储登录状态这里主要使用的是灰调函数的方法,登录完成后的方法需要赋值在 loginCallback 中退出后的方法,需要赋值在 exitCallback 中.若不设置 loginCallback 的值,将会自动删除二维码图片并清空命令行显示.importitchat,timedeflc():print("FinashLogin!")defec():print("exit")itchat.auto_login(loginCallback=lc,exitCallback=ec)time.sleep()itchat.logout()#强制退出登录sendsend(...
首页上一页...6566676869下一页尾页