ES性能测试

测试背景   因为ES(ElasticSearch)前段时间查询效率有点慢,技术小组对索引做了一些改动,因此需要测试一下修改后的查询效率,跟之前的结果做一下对比,所以有了这次测试。 需求简述 本文主要是分享一下我做测试的一些过程和思考,这里的需求不理解不影响阅读下文。只测试通过车辆查询的一种场景,不考虑二次识别。测试基础数据为近一年的数据(76亿左右)。测试的时段选择(一周、半月、一月、三月、半年、一年及全部数据)测试的卡口选择全部。测试的号牌号码为此前根据过车数量获取的前100000条数据中随机抽取,另外,90%的查询为有号牌查询,10%的查询为无号牌查询。未对车道和方向进行过滤。测试时没有同时进行插入操作。用表来描述就是: 准备工作需要跟技术小组提供在ES中查询用到的jquery语句。在ES中查询车牌鲁B8070K在2016-09-13T00:20:44.000Z",--2016-09-14T00:20:44.000Z"内的过车数据,使用的jquery语句如下:1{2"query":{3"bool":{4"must":[5{6"range":...
IT猿 IT猿·2020-03-25

自动化接口测试

本地设计首先在本地设计ApacheJMeter测试计划,大家可以参考《接口测试之JMeter初探》,这里不再重复。服务器配置确保服务器已经安装了JDK和Python。在服务器端创建文件夹mkdir/data/loadtestcd/data/loadtest将测试计划上传到该文件夹中,本文以QA2.jmx为例。  下载ApacheJMeter到当前文件夹wget http://mirrors.hust.edu.cn/apache//jmeter/binaries/apache-jmeter-3.2.zip解压unzipapache-jmeter-3.2.zip创建保存结果文件和报告文件的文件夹mkdirreportresult添加脚本vimexecloadtest.sh内容如下:#!/bin/sh#执行性能测试su--c'/data/loadtest/apache-jmeter-3.2/bin/jmeter-n-t/data/loadtest/QA2.jmx-l/data/loadtest/result/$(date+%Y%m%d%H%M%S).csv-e-...

HTTP API接口测试利器PostMan介绍

一、什么是API接口测试?API接口有多种,个人将其划分为三类。第一种是函数级别的,测试需要对接口的各个参数进行测试,如:IntgetResult(Stringkey,StringID,Intticket)。第二种是对象级别的,开发在使用API接口时,先引入包名,在使用之前声明一个对象,之后可以使用对象提供的方法,而测试时,需要测试的是API的功能及对数据输入的正确性。第二种和第一种的差别是,我们只需关注提供给用户使用的接口就可以了,不用关心接口调用其他函数情况,相对于第一种来说,测试的粒度要大一些,范围小一些。第三种是http协议的接口,App客户端和后端服务连接,一般采用的都是http协议,客户端通过get和post的方法从后端服务获取数据。第三种相对于第二种来说,粒度更大,我们关注的接口更少,但是这些接口都是核心功能。二、为什么要测试API接口?App后端服务,在出现功能异常时,或者吐出异常数据时,可能会导致客户端功能异常,甚至出现崩溃的现象。而客户端由于数据的问题而崩溃,如果容错不到位,可能导致App永远无法启动。这种伤害,对用户,对公司来说,都是巨大的。因此有必要进行API接...

基于Python的接口自动化测试框架

公司内部的软件采用B/S架构,目的是进行实验室的数据存储、分析、管理。大部分是数据的增删改查,但是由于还在开发阶段,所以UI的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与时间维护自动化脚本,对于小团队来说就得不偿失了。  针对此种情况,选用接口测试较为有效。  针对接口测试的自动化工具也很多,例如SoupUI、Postman、robotframework,甚至jmeter这样的性能测试工具都可以进行接口测试。  robotframework测试框架有很多的第三方库可以使用,采用的是填表的方式进行,较容易上手,但是无法深入底层的了解客户端与服务器的交互过程。jmeter这样的专注性能测试的工具,进行接口测试,有点大材小用的感觉而且无法生成测试报告。但是这些工具灵活性不够,也不完全适用于被测系统。  综上考虑,决定自己开发一个简单的框架,优点是足够灵活,可以随时根据需求进行变更,后台使用的是python+flask进行开发,此次选用python2.7.11进行框架的开发,python开发的速度很快,且容易上手,丰富的第三方库,大大加快了开发速度和难度。  由于是框架,所以...

浅析接口测试

接口测试是一种测试类型,又是一种测试方法,它是很多个领域测试工作的一部分,同时它又可以通过不同方式来执行;功能测试功能测试即我们常说的黑盒测试,传统意义上的黑盒测试即验证开发出来的产品是否满足产品提出的产品需求说明书,而接口实际上也是产品需求的一部分; 例如: 产品需求:客户端输入一个词,点击按钮,即按时间倒叙展示这个词相关的新闻; 功能实现:客户端将用户输入的词拼成http请求,发往服务端接口接口查找了这个词有关的新闻,并且按时间倒叙拼接成json,回复给客户端,客户端按顺序展示。 这个例子里,中心需求≈接口功能安全测试经常听说的安全测试很大程度上也属于接口测试的一部分,因为接口相当于内部服务器和外界的桥梁,如果桥上没有警卫,那任何人都可以进到内部服务器,这里说的警卫其实就是接口的安全校验; 举个已经烂了的例子: 接口功能:接收用户输入的词,到数据库查询这个词的解释; 这里涉及到将用户输入的词拼成sql的过程,接口要做的不仅仅只拼接sql并执行,更重要的是过滤用户输入的异常字符串;自动化测试传统意义上...
IT猿 IT猿·2020-03-25

服务端线上接口监控实践

背景最近上线了一个新的服务,这个服务有一个特点就是接入了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,引用被测试类的头文件,并声明该类,在我们自己...

服务端的性能测试(一)

说起性能测试,许多移动端测试的人员可能会比较陌生,性能测试不是涉及到APP的启动时间、流量、大小、耗电量等的相关指标么。本文所讲的是一个与APP的性能测试完全不同的领域:服务端的性能测试。我们会针对服务端有一些不同的指标。   那么究竟什么是服务端的性能测试?   我们从最基本的功能测试说起吧。比如,我们要测试一个接口的返回,那么我们测试的时候,会有一个输入的参数,服务端接收到了后会返回一些数据,然后客户端会利用这些数据展示一些相应的结果,如果符合最开始的预期则功能正确。     那么,我们如何对该接口进行性能测试呢?    我们会模拟多个人同时进行访问这个接口,在保证返回数据正确的前提下,去监管服务端的程序下的各项性能指标和该服务器处理这些请求的时候服务器的硬件使用情况。   好吧,这个比喻比较粗犷,但是涵盖了性能测试的基本注意点:   1.功能首先要保证接口处理数据的正确性&...
IT猿 IT猿·2020-03-25

使用loadrunner进行压力测试遇到的问题总结

本人整理了一个LR使用过程中遇到的各种问题的总结文档,有需要可以加QQ群169974486下载。一、无法生成虚拟用户,运行报错:CCIcompilationerror-vuser_init.c问题出现情景是:loadrunner当天可以正常运行,保存好后,脚本和参数化也保持一致,第二天再次打开不能使用。在controller中,脚本运行,提示错误:LR8.1Error:CCIcompilationerror-vuser_init.c 直接在loadrunnergenerator打开之前保存的脚本,点击运行无法执行,在回放日志栏提示:vuser_init.c:Nosuchfileordirectory 分析其原因是,缺少文件 解决办法:拷贝一个init.c文件放在测试脚本目录下或者重建一个文件;二、Error:Failedtosenddatabychannels-postmessagefailed寻找解决办法,多数测试人员给出解答如下:出现这个问题,目前判断是因为lr和测试机环境或者测试服务的兼容性出现了问题,而且一般的这个问题只是在测试大数据访问的时候才会...

服务端的性能测试(二)

通过上一篇的讲解,我们已经了解了一些性能测试的指标了,也知道性能测试的主要手段是通过发生出一些模拟真实业务的请求来造成压力对被测系统进行不停的加压,在这同时监控被测服务器的各项性能指标,分析被测服务器在不同压力测试下的表现,找出其可以突破的性能瓶颈。      那么,如何对系统进行性能测试,又如何对服务器的各种指标数据进行监控呢?这里,就不得不提到性能测试工具了。     在这之前,我们可以尝试着先试想下在没有性能测试工具的前提下,如何对一个系统进行一次压力测试      假设现在我们要对一个接口进行一次性能测试,模拟在15个用户在线使用这个接口返回的数据是否可以在一个可接受的时间内返回正确的数据。      理所当然的,我们可以想到测试的必要条件有如下几点:15个线程同时并发运行,产生访问压力1个线程协调程序,对15个线程的协调控制,实现并发操作1个数据记...
IT猿 IT猿·2020-03-25
首页上一页...386387388389390...下一页尾页