web 接口测试工具(网页接口测试工具)

网友投稿 410 2023-01-04


本篇文章给大家谈谈web 接口测试工具,以及网页接口测试工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享web 接口测试工具的知识,其中也会对网页接口测试工具进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Web自动化测试有什么常用的工具?

一、单元测试/测试运行器
1、Jest
知名的 Java 单元测试工具,由 Facebook 开源,开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 Java 测试,能自动模拟 require() 返回的 CommonJS 模块,并提供了包括内置的测试环境 Dom API 支持、合理的默认值、预处理代码和默认执行并行测试在内的特性。通过在并行进程中同时运行测试,让测试更快地结束。
2、AVA

号称“未来的测试运行器”,利用 Java 在 Node.js 里使得 IO 可以并行的优点,让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。测试并发执行强制你写原子测试,意味着测试不需要依赖全局状态或者其他测试的状态。
3、Mocha
一个功能丰富的测试框架,用于 Node.js 和浏览器上的 Java 应用测试,使异步测试变得简单而有趣。它可以持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试示例。


3、Mocha
一个功能丰富的测试框架,用于 Node.js 和浏览器上的 Java 应用测试,使异步测试变得简单而有趣。它可以持续运行测试,支持灵活又准确的报告,当映射到未捕获异常时转到正确的测试示例。


4、Karma
基于 Node.js 的 Java 测试运行器,旨在为开发人员带来有效的测试环境。可用于测试所有主流 Web 浏览器,也可集成到 CI 工具,还可和其他代码编辑器一起使用。另外一个强大特性就是,它可以监控文件的变化,然后自行执行,通过 console.log 显示测试结果。
二、Web 测试
1)集成测试
Enzyme
一个用于 React 的 Java 测试工具,方便你判断、操纵和历遍 React Components 输出。其 API 旨在通过模仿 jQuery 的 API ,使得 DOM 操作和历遍很灵活、直观。兼容所有的主要测试运行器和判断库。
2)功能测试
selenium录制器
一个易于使用的采用关键字驱动的理念的浏览器自动化测试解决方案。它强大的录制回放功能是在所有web测试工具中是最强悍的。该工具支持不同级别的测试技能,非程序员可以轻松地启动自动化测试项目,而程序员和高级自动化测试人员可以节省构建新库和维护脚本的时间。
3)Visual 测试

Storybook
一个 UI 组件的开发环境,允许你浏览组件库,查看每个组件的不同状态,以及交互式开发和测试组件。它运行在应用之外,允许隔离开发 UI 组件,这可以提高组件的重用性、可测试性和开发速度。

4)猴子测试(Monkey Testing,也称“搞怪测试”)
Gremlins.js
一个用 Java 编写的猴子测试库,用于 Node.js 和浏览器。通过释放大量无规律的 gremlins 来检测 Web 应用的鲁棒性。
5)服务端测试
1、K6
用于测试性能,以开发人员为中心的负载测试工具。提供了一个通过 REST API 进行编排的清新易用的脚本 API 。使用 Go 和 Java构 建,可以很好地集成到开发工作流程中。
2、SuperTest
SuperAgent 的一个扩展,一个轻量级 HTTP AJAX 请求库。提供对 HTTP 测试的高度抽象, 极大地简化了基于 HTTP 的测试。

更多软件测试知识可关注黑马程序员

有哪些简单好用的WebService测试工具

一、通过WSCaller.jar工具进行测试web 接口测试工具
前提:知道wsdl的url。
wsCaller可执行程序的发布方式为一个wsCaller.jar包web 接口测试工具,不包含Java运行环境。web 接口测试工具你可以把wsCaller.jar复制到任何安装了Java运行环境(要求安装JRE/JDK 1.3.1或更高版本)的计算机中web 接口测试工具,用以下命令运行wsCaller:
java -jar wsCaller.jar
使用wsCaller软件的方法非常简单web 接口测试工具,下面是wsCaller的主界面:
首先在WSDL Location输入框中输入你想调用或想测试的Web
Service的WSDL位置,,然后点逗Find地按钮。wsCaller就会检查你输入的URL地址,并获取Web
Service的WSDL信息。如果信息获取成功,wsCaller会在Service和Operation下拉列表框中列出该位置提供的Web
Service服务和服务中的所有可调用的方法。你可以在列表框中选择你要调用或测试的方法名称,选定后,wsCaller窗口中间的参数列表框就会列出
该方法的所有参数,包括每个参数的名称、类型和参数值的输入框(只对[IN]或[IN,
OUT]型的参数提供输入框)。你可以输入每个参数的取值。如下图:
这时,如果你想调用该方法并查看其结果的话,只要点下面的逗Invoke地按钮就可以了。如果你想测试该方法的执行时间,则可以在逗Invoke
Times地框中指定重复调用的次数,然后再按逗Invoke地按钮。wsCaller会自动调用你指定的方法,如果调用成功,wsCaller会显示结
果对话框,其中包括调用该方法所花的总时间,每次调用的平均时间和该方法的返回值(包括返回值和所有输出型的参数)。如下图:
wsCaller软件是基于Axis库(Apache eXtensible Interaction System)开发的,Axis库的介绍及其版权信息请参见Apache Software Foundation的网站。
二、编写java的Main()函数,创建XFireProxyFactory调用声明的Interface接口函数。
前提:知道wsdl的url、知道webservice程序的接口(方法)声明。
举例:
public static void main(String[] args) {
Service srvcModel = new ObjectServiceFactory()
.create(IHelloWorldService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "";
try {
IHelloWorldService srvc = (IHelloWorldService) factory.create(
srvcModel, helloWorldURL);
System.out.print(srvc.example("dennis"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
三、利用Eclipse向导生成webservice的客户端调用程序。
前提:知道wsdl的url、知道webservice程序的接口(方法)声明。
步骤:
1)在Eclipse中加入Xfire插件:
在Eclipse的安装目录的plugins下包含:
org.codehaus.xfire.eclipse.ui_1.0.2.xfire126.jar、
org.codehaus.xfire.eclipse.ui.wizards_1.0.2.xfire126.jar、
org.codehaus.xfire.eclipse.core_1.0.2.xfire126.jar
在Eclipse的安装目录的features下包含:
org.codehaus.xfire.eclipse_1.0.2.xfire126
2) 在Eclipse中创建一个Web Project项目,设为WSClient项目名。
同时点击项目右键,添加Xfire nature。
3)在WSClient项目下创建一个Web Service Client文件组【或者是Code Generation from WSDL document的文件组!】。
即点击项目右键,new--》other--》...
输入webservice的url,比如:
再选好生成文件放置目录。完成生成!
4)修改所生成文件组中的文件:****client.java 中的main函数.
比如:生成的文件为BizRemoteServiceClient.java,在main函数中找到:
BizRemoteServiceSoap bizRemoteServiceSoap = client.getBizRemoteServiceSoapLocalEndpoint();
该语句用BizRemoteServiceSoap bizRemoteServiceSoap = client.getBizRemoteServiceSoap();代替即可!
public static void main(String[] args) {
BizRemoteServiceClient client = new BizRemoteServiceClient();
//create a default service endpoint
//BizRemoteServiceSoap bizRemoteServiceSoap = client.getBizRemoteServiceSoapLocalEndpoint();
BizRemoteServiceSoap bizRemoteServiceSoap = client.getBizRemoteServiceSoap();
//TODO: Add custom client code here
//
//bizRemoteServiceSoap.yourServiceOperationHere();
MyResponse MyResponse=bizRemoteServiceSoap.login("ivy1", "111");
System.out.println(MyResponse.getFlag());
System.out.println(MyResponse.getDetail());

System.out.println("test client completed");
System.exit(0);
}
绿色代码部分是根据测试业务逻辑加入的测试代码!试具体测试任务而定!
直接运行该main函数,看结果即可!

Web测试的主要内容和测试方法有哪些


测试分类:


1、界面测试

1)给用户的整体感:舒适感;凭感觉能找到想要找的信息;设计风格是否一致

2)各控件的功能

2、功能测试

1)删除/增加某一项:是否对其他项造成影响,这些影响是否都正确

2)列表默认值检查

3)检查按钮功能是否正确:新建、编辑、删除、关闭、返回、保存、导入、上一页、下一页、页面跳转、重置(常见错误)

4)字符串长度检查:超出长度

5)字符类型检查

6)标点符号检查:空格、各种引号、Enter键

7)特殊字符:常见%、“、”

8)中文字符:是否乱码

9)检查信息完整:查看信息,查看所填信息是否完整更新;更新信息,更新信息与添加信息是否一致

10)信息重复:需唯一信息处,比如重复的名字或ID、重名是否区分大小写、加空格

11)检查删除功能:不选择任何信息,按Delete,看如何处理;选择一个或多个进行删除;多页选、翻页选删除;删除是否有提示

12)检查添加和修改是否一致:添加必填项,修改也该必填;添加为什么类型,修改也该什么类型

13)检查修改重名:修改时把不能重名的项改为已存在的内容

14)重复提交表单:一条已经成功提交的记录,返回后再提交

15)检查多次使用返回键:返回到原来页面,重复多次

16)搜索检查:存在或不存在内容,看搜索结果是否正确;多个搜索条件,同时输入合理和不合理条件;特殊字符

17)输入信息的位置

18)上传下载文件检查:功能是否实现,

上传:上传文件是否能打开、格式要求、系统是否有解释信息、将不能上传的文件格式修改后缀为可上传的文件格式;

下载:下载是否能打开、保存、格式要求

19)必填项检查:必填项未填写;是否有提示,如加*;对必填项提示返回后,焦点是否自动定位到必填项

20)快捷键检查:是否支持快捷键Ctrl+C、Ctrl+V、backspace;对不允许做输入的字段(如:下拉选项),对快捷方式是否也做了限制

21)Enter键检查:输入结束后按Enter键,系统如何处理

22)刷新键检查:按浏览器刷新键如何处理

23)回退键检查:按浏览器回退键如何处理

24)空格检查:输入项输入一个或多个空格

25)输入法半角全角检查:比如,浮点型,输入全角小数点“。”或“. ”,如4. 5;全角空格

26)密码检查:输入加密方式的极限字符;密码尽可能长

27)用户检查:不同种类管理员用户的不同权限,是否可以互相删除、管理、编辑;一般用户的权限;注销功能,老用户注销再注册,是否为新用户

28)系统数据检查:数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据。

29)系统可恢复性检查:以各种方式把系统搞瘫,测试系统是否可以迅速恢复

30)确认提示检查:系统更新、删除操作:是否有提示、取消操作;提示是否准确;事前、事后提示

31)数据注入检查:对数据库注入,特殊字符,对SQL语句进行破坏

32)时间日期检查:时间、日期、时间验证:日期范围是否符合实际业务;对于不符合实际业务的日期是否有限制

33)多浏览器验证

3、性能测试

1)压力测试:实际破坏一个Web应用系统,测试系统的反应,测试系统的限制和故障恢复能力

2)负载测试:在某一负载级别上的性能,包括某个时刻同时访问Web的用户数量、在线数据处理的数量

3)强度测试:测试对象在性能行为异常或极端条件下(如资源减少或用户过多)的可接受性,以此验证系统软硬件水平

4)数据库容量测试:通过存储过程往数据库表中插入一定数量的数据,看是否能及时显示

5)预期指标的性能测试:在需求分析和设计阶段会提出一些性能指标,对于预先确定的性能要求要首先进行测试

6)独立业务性能测试:对核心业务模块做用户并发测试,包括同一时刻进行完全一样的操作、同一时刻使用完全一样的功能

7)组合业务性能测试:模拟多用户的不同操作,最接近实际用户使用情况,按用户实际的实际使用人数比例来模拟各个模块的组合并发情况

8)疲劳强度性能测试:系统稳定运行情况下,以一定负载压力来长时间运行系统的测试

9)网络性能测试:准确展示带宽、延迟、负载、端口的变化是如何影响用户的相应时间的

10)大数据量性能测试:实时大数据量,模拟用户工作时的实时大数据量;极限状态下的测试,系统使用一段时间,积累一段数据量时能否正常运行,以及对前面两种进行结合

11)服务器性能测试:在进行用户并发性能测试、疲劳强度、大数据量性能测试时,完成对服务器性能的监控,并进行评估

12)一些特殊的测试:配置测试、内存泄漏的一些特殊测试

4、可用性测试(接口测试)

1)整体界面测试

2)多媒体测试

3)导航测试

5、客户端兼容性

平台测试:windows;unix;macintosh;linux

浏览器测试:不同厂商的浏览器对Java、Javascript、ActiveX、plug-ins或不同的HTML的规格

不同的支持;框架和层次结构在不同浏览器也不同的显示

6、安全性

安全性测试要求:

1)能够对密码试探工具进行防范

2)能够防范对Cookie攻击的常用手段

3)敏感数据保证不用明文传输

4)能防范通过文件名猜测和查看html文件内容获取重要信息

5)能保证在网站收到工具后在给定时间内恢复,重要数据丢失不超过1小时


web 的性能测试工具:


随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况。

因此,当Web网站遇到访问高峰时,容易发生服务器响应速度变慢甚至服务中断。

为了避免这种情况,需要一种能够真实模拟大量用户访问Web应用系统的性能测试工具进行压力测试,来测试静态HTML页面的响应时间,甚至测试动态网页(包括ASP、PHP、JSP等)的响应时间,为服务器的性能优化和调整提供数据依据。


1、企业级自动化测试工具WinRunner


Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。


2、工业标准级负载测试工具Loadrunner

LoadRunner 是一种预测系统行为和性能的负载测试工具


3、全球测试管理系统testdirector


TestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。


4、功能测试工具Rational Robot


IBM Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。

它集成在测试人员的桌面IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。

这种测试和管理的双重功能是自动化测试的理想开始。


5、单元测试工具xUnit系列


目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit(.net),PhpUnit(Php )等等。

该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit.


6、功能测试工具SilkTest


Borland SilkTest 2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。

这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。


7、性能测试工具WAS


Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。

透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。


8、自动化白盒测试工具Jtest


Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。

parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。


9、功能和性能测试的工具JMeter


JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。


10、性能测试和分析工具WEBLOAD


webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。


扩展资料:


漏洞测试


企业网站做的越来越复杂、功能越来越强。不过这些都不是凭空而来的,是通过代码堆积起来的。如果这个代码只供企业内部使用,那么不会带来多大的安全隐患。

但是如果放在互联网上使用的话,则这些为实现特定功能的代码就有可能成为攻击者的目标。

天眼举一个简单的例子。在网页中可以嵌入SQL代码。而攻击者就可以利用这些SQL代码来发动攻击,来获取管理员的密码等等破坏性的动作。

有时候访问某些网站还需要有某些特定的控件。用户在安装这些控件时,其实就有可能在安装一个木马(这可能访问者与被访问者都没有意识到)。


为此在为网站某个特定功能编写代码时,就要主动出击。从编码的设计到编写、到测试,都需要认识到是否存在着安全的漏洞。

天眼在日常过程中,在这方面对于员工提出了很高的要求。各个员工必须对自己所开发的功能负责。

已知的病毒、木马不能够在所开发的插件中有机可乘。通过这层层把关,就可以提高代码编写的安全性。

参考资料来源:百度百科-WEB服务器

北大青鸟设计培训:软件开发接口测试的常见问题?

对于一款程序来说web 接口测试工具,接口除web 接口测试工具了有对接外部的以外同时还有对程序内部的接口web 接口测试工具,下面电脑培训http://www.kmbdqn.cn/就一起来了解一下,关于软件开发接口测试的常见问题。
一、常见接口:1、webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,web 接口测试工具我们在测试的时候都用通过工具才能进行调用,测试。
可以使用的工具有SoapUI、jmeter、loadrunner等;2、httpapi接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是常用的两种请求方式。
可以使用的工具有postman、RESTClient、jmeter、loadrunner等;二、前端和后端:在说接口测试之前,web 接口测试工具我们先来搞清楚这两个概念,前端和后端。
前端是什么呢,对于web端来说,咱们使用的网页,打开的网站,这都是前端,这些都是html、css写的;对于app端来说呢,它就是咱们用的app,android或者object-C(开发ios上的app)开发的,它的作用就是显示页面,让我们看到漂亮的页面,以及做一些简单的校验,比如说非空校验,咱们在页面上操作的时候,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时候扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。
前面说的你可能不好理解,你只需记住:前端负责貌美如花,后端负责挣钱养家。
三、什么是接口测试:接口测试是测试系统组件间接口的一种测试。
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

webservice的接口怎么用postman测

在Google已安装完成的接口测试工具的postman的程序之后,点击进入桌面的chrome应用启动器。进入到应用启动器界面中之后,可以看到是postman的应用图标程序。点击进入。进入到postman的欢迎的界面中,如果有账号可以进行点击登录账号,无账号可以点击Gototheapp进入。这样就进入到postman界面中,进行对百度网址进行测试话,选择get请求,把百度网址在输入框中输入。输入完成之后,然后进行点击send。如果测试用成功,返回的status为200ok,而在下列的是放回的百度首页的元素信息。这样百度首页接口测试就成功了。

如何利用cURL和python对服务端和web端进行接口测试

工具描述
cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows、Linux、Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使用7.26.0,从这里可以下载7.26.0版本。
以下是官方介绍的翻译:
cURL是一个使用URL语法来传输数据的命令行工具,支持
DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMTP,SMTPS,Telnet
和TFTP。 cURL支持SSL证书,HTTP POST,HTTP
PUT,FTP上传,HTTP基础表单上传,代理,cookies,用户+密码身份验证(Basic, Digest, NTLM,
Negotiate, kerberos...),恢复文件传输,隧道代理等等。
Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,它的强大和易用就无需多做说明了,在web开发中或者对开发速度要求较高的开发中应用十分广,不过因为属于脚本类语言,它的性能始终比不上C++、C等语言。
本文主要利用实例说明这两款工具的在测试中的部分用途,更多用法留待大家继续探索。
应用场景
使用cURL模拟客户端对服务端进行查询
在进行接口测试时,应该先找开发人员提供接口列表和对应参数,这样测试的时候就可以验证测试方法是否正确,不过如果可以用浏览器模拟操作的话,也可以自己先试试的,后面的例子会提到。
首先使用客户端访问需要测试的服务端接口,用wireshark抓包结果如下:
把查询字符串以multipart方式post数据到服务器的file_health_info.php接口。
Tips:
Windows版的cURL不像Linux或者Mac一样属于系统自带工具,需要下载,如果要在命令提示符下使用就需要跳转到工具所在目录下才能运
行,十分麻烦,我们可以直接把这个工具文件放到Windows目录下,这样无论在哪个目录都可以直接使用“curl”命令运行工具了。
cURL默认就是以post方式发送数据的,所以只需要加入multipart方式就可以了,-F在cURL帮助中的解释是:
-F, --form CONTENT Specify HTTP multipart POST data (H)
--form-string STRING Specify HTTP multipart POST data (H)
--ftp-account DATA Account data string (F)
--ftp-alternative-to-user COMMAND String to replace "USER [name]" (F)
--ftp-create-dirs Create the remote dirs if not present (F)
--ftp-method [MULTICWD/NOCWD/SINGLECWD] Control CWD usage (F)
--ftp-pasv Use PASV/EPSV instead of PORT (F)
Specify HTTP multipart POST data正好满足我们的要求,所以模拟的语句是:
curl -F "newmd5=3bcad21af5f17c1fbff419137297c942###25016566###d:\test.exe###1###" file_health_info.php
后面的都是参数,测试前就要找开发确认好。
不过因为服务端支持以gzip方式返回数据,所以我们还可以在请求中加入—compressed参数,即是:
curl --compressed -F "newmd5=3bcad21af5f17c1fbff419137297c942###25016566###d:\test.exe###1###" file_health_info.php
为了更好判断服务端接口是否正常,除了对返回数据进行判断外,我们还需要对服务端返回的数据包头进行解析,所以还可以在cURL请求中加入-i参数,最终这个测试语句就变为:
curl –i --compressed -F "newmd5=3bcad21af5f17c1fbff419137297c942###25016566###d:\test.exe###1###" file_health_info.php
模拟完成后就要考虑判断返回值的事了,我们首先在命令提示符下运行这个语句,看看返回值。
运行以上命令后,返回的数据如下:
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Fri, 24 Aug 2012 07:47:45 GMT
Content-Type: application/xml
Transfer-Encoding: chunked
Connection: keep-alive
Server: 360 web server
Content-Encoding: gzip
<?xml version="1.0" encoding="GBK" ?
<ret
<retinfo code="0" msg="Operation success" total="1" success="1" empty="0"
cost="999.92752075195"/
<softs
<soft
<md53bcad21af5f17c1fbff419137297c942</md5
<sha1</sha1
<level4040</level
<e_level40.3</e_level
<size</size
<soft_name<![CDATA[]] </soft_name
<describ<![CDATA[]]</describ
<file_desc<![CDATA[]]</file_desc
<upload0</upload
<attr_upload2</attr_upload
<class<![CDATA[private]]</class
<malware<![CDATA[cloud.virus]]</malware
<is_sys_file0</is_sys_file
<is_rep0</is_rep
<age0</age
<pop0</pop
</soft
</softs
</ret
数据包包头是常见的,一般来说,我们只要判断包头中含有“HTTP/1.1 200
OK”就可以确定服务端正常返回了数据。另外从内容可以看到这是一个xml格式的数据包,我们只需要判断是否存在关键的字段即可,比
如<level,确定这些之后我们就可以在python中添加如下案例代码了:
首先运行指定的curl命令:
response = os.popen(‘‘‘curl -i --compressed -F "newmd5=3bcad21af5f17c1fbff419137297c942###25016566###d:\test.exe###1###" file_health_info.php
然后判断返回值中是否存在我们想要的字段:
self.assertNotEqual(response.find(‘HTTP/1.1 200 OK‘),-1)
self.assertNotEqual(response.find(‘<level‘),-1)
上面的内容看起来差不多可以了,但实际还不够严谨,因为服务端返回的这些数据是从数据库中获取的,所以我们还需要查询数据库获取指定值,判断是否和数据包中的一致,比如<level:
首先使用python登录数据库服务器:
conn = MySQLdb.connect(host=‘172.22.54.31‘, user=‘user‘,passwd=‘test321‘,db=‘cloud‘)
cursor = conn.cursor()
count = cursor.execute(‘SELECT plevel FROM file where md5="3bcad21af5f17c1fbff419137297c942"‘)
result = cursor.fetchone()
然后判断返回值中的level是否数据库中的值:
self.assertNotEqual(response.find(‘‘‘<level%s</level‘‘‘%result[0]),-1)
测试时除了使用cURL等工具进行模拟,还可以自己用python或其他语言写代码进行post数据,不过当时简单起见所以就选择了用cURL测试。
使用cURL模拟控制台登录
说到模拟登录或者模拟点击,很多同学可能直接联想到QTP等模拟界面操作的工具,事实上这种工具有一个很大的弊端是太依赖控件,如果界面控件变了,
那么可能整个脚本就无效了,现在的程序设计都倾向界面逻辑分离,这样修改界面时就不会动到底下的功能接口,开发人员可以随时修改界面控件,如果还是采取
QTP等模拟点击的方法测试,结果可能是事倍功半的,如果测试时直接点用接口就可以避免这种问题。
下面的例子是模拟控制台登录的,登录URL为:
cloud/index.php?r=site/login ,首先使用浏览器登录一次,看看实际效果如何。
Tips:
测试php或其他web程序时建议使用chrome,因为它自带的Developer
Tools十分好用,当然firefox或者IE9也有类似的工具,看个人习惯吧。按F12打开工具,选择Network标签页,然后输入用户名、密码点
击登录,这时Network下方会显示登录过程中浏览器想控制台请求的所有数据,包括请求类型、表单数据等,这些是我们模拟操作的数据来源。
从上图可以获取几个重点信息:请求URL、请求类型、数据类型、数据内容、并且支持gzip压缩等。我们用curl模拟如下:
curl -i --compressed cloud/index.php?r=site/login -d “username=admin” -d “userpass=admin”
使用-i和—compressed的原因再上一个例子已经说了,这里不再赘述,重点是后面的-d,它在官方帮助的解释是:
-d, --data DATA HTTP POST data (H)
--data-ascii DATA HTTP POST ASCII data (H)
--data-binary DATA HTTP POST binary data (H)
--data-urlencode DATA HTTP POST data url encoded (H)
--delegation STRING GSS-API delegation permission
--digest Use HTTP Digest Authentication (H)
--disable-eprt Inhibit using EPRT or LPRT (F)
--disable-epsv Inhibit using EPSV (F)
而我们从Developer Tools返回的数据已经知道,返回数据的格式是
“application/x-www-form-urlencoded”,所以很明显需要使用-d的HTTP POST data url encoded特性。不过格式中还有关键字form,莫非也支持-F参数登录,试试:
curl -i --compressed cloud/index.php?r=site/login -F “username=admin” -F “userpass=admin”,果然成功,呵呵~
也许有同学有疑问,为何不模拟warnsetup、refer,这是因为测试时发现登录界面只需要用户名和密码就够了,refer 用于记录来源网页,在这里用处不大,warnsetup只是用于验证登录码的,这个已经去掉了。
接下来要验证数据,我们在命令提示符中运行上面的命令,返回结果如下:
HTTP/1.1 302 Moved Temporarily
Date: Fri, 24 Aug 2012 08:29:07 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.3
Set-Cookie: PHPSESSID=4711d2365de9aaaca0c28b1ca52183f0; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=81d4bb65e888c1b6347120641eb4798b; path=/
Location: ./index.php
Server: 360 web server
很奇怪吧,乍一看控制台没有返回任何有用信息,不过里面那句HTTP/1.1 302 Moved
Temporarily是不是特别眼熟?这个特殊的302(表示http重定向)正是我们在Developer
Tools看到的状态值,看到这个已经可以80%确定我们登录已经成功了,更重要的是返回包中的内容:Location:
./index.php,这说明控制台已经通知请求端跳转到index.php,如果登录失败控制台会继续停留在当前登录界面的,我们只需要修改curl
语句中的用户名或者密码就知道了,这种情况下返回包就是登录界面的php源码,这里不再赘述。
使用cURL以get方式测试控制台搜索接口
测试方法同上面差不多,首先使用chrome打开控制台进入对应页面,在搜索框中输入“test.exe”,点击搜索,使用developer tools抓包,内容如下:
cURL模拟get方式发送数据的参数是-G,了解这个后面要模拟就很简单了:
curl -i --compressed -G “cloud/index.php?r=file_cloud/api/searchfilename=59c7dd2eafdbe86b2e23bcdabb575448bg=0lm=19

其中每个参数的含义要分别了解:filename表示输入的关键字,bg表示数据库第一行,lm表示共显示19行数据。这个接口返回的数据如下:
{"rows":[{"level":"10","plevel":"10","id":"20","md5":"59c7dd2eafdbe86b2e23bcdabb575448","soft_name":"","soft_desc":"","file_desc":"QVBJIFRyYWNpbmcgWDg2IEhvb2sgRW5naW5l","is_sys_file":"127","size":"41984","is_rep":"0","file_name":"apihex86.d
ll","file_version":"6.1.7600.16385","product_version":"6.1.7600.16385","copyright":"\u00a9 Microsoft Corporation. All rights reserved.","lang":"0","org_name":"YXBpaGV4ODYuZGxs","sign_name":"TWljcm9zb2Z0IFdpbmRvd3M=","company_name":"Microsof
t Corporation","update_time":"2012-07-31 18:14:27","create_time":"2012-07-31 18:14:27","creator_mid":"15be5b7dce003cdc2c1d1448afcf6cf0"}],"count":"1"}
分别是文件属性和文件信息,这涉及到两个数据库表,所以验证数据需要用python从两张表中获取对应信息。
从第一张表获取文件属性,比如只获取plevel:
SELECT plevel FROM `file` where md5="59c7dd2eafdbe86b2e23bcdabb575448"
从第二张表获取文件信息,比如只获取company_name:
SELECT company_name FROM file_info where md5="59c7dd2eafdbe86b2e23bcdabb575448"
Python代码如下:
conn = MySQLdb.connect(host=‘%s‘% self.host, user=‘user‘,passwd=‘test321‘,db=‘cloud‘)
cursor = conn.cursor()
count = cursor.execute(‘SELECT plevel FROM `file` where md5="111111932490c813bf5ea9d8aa6fa60c"‘)
result = cursor.fetchone()
self.assertNotEqual(response.find(str(result[0])),-1)
count = cursor.execute(‘SELECT company_name FROM file_info where md5="111111932490c813bf5ea9d8aa6fa60c"‘)
result1 = cursor.fetchone()
self.assertNotEqual(response.find(result1[0]),-1)
当然严谨的测试案例是每一个属性字段都需要进行查找和匹配,这里就不再赘述了。 关于web 接口测试工具和网页接口测试工具的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 web 接口测试工具的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于网页接口测试工具、web 接口测试工具的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JVM的垃圾回收算法工作原理详解
下一篇:如何让Win10实现Java文件的开机自启动
相关文章

 发表评论

暂时没有评论,来抢沙发吧~