软件测试之接口测试核心-URL&HTTP协议详解重磅来袭,转发收藏

软件测试之接口测试核心-URL&HTTP协议详解重磅来袭,转发收藏,第1张

URL:统一资源定位符。

URI:统一资源标识符。

URL可以看作是URI的具体实现。

·protocol

·domain

·port

·path

·url parameters

示例:

https://ke.qq.com/course/317690?tuin=15945f87

协议,一般是指://之前的部分,表明通信双方所采用的通信协议。

协议:是指通信双方对于通信的数据所采用的数据格式、规程、含义等所作的约定。

对于协议,建议大家了解两个模型:OSI模型和TCP/IP模型。

接口测试的角度来说,在不同的通信层可以通过不同的协议来实现接口的测试。

一般来说,应用层的协议是最接近用户,最容易实现的。

常见的应用层协议有:

http

https http+ssl

ftp

ssh

smtp

pop3

mysql

oracle

MS SQL

是指://之后的服务器地址。域名可以是真实的服务器机器的机器名、IP地址、虚拟的域名。

示例:

www.baidu.com

ke.qq.com

192.168.1.100

是指通过冒号连接在域名之后的数字。

端口:0--65535

端口是由服务器自身来进行设定的,是服务器用来发布服务,监听客户端的请求的。

如果服务器所设置的监听端口是所提供服务的通信协议的默认通信端口,则用户在访问服务器时,可以省略端口。

常见的协议及其默认的通信端口:

http 80

https 443

ftp 21

ssh 22

smtp 25

pop3 110

mysql 3306

oracle 1521

MS SQL 1433

是指在端口之后的所有内容。

一般来说path是指我们要访问的资源or服务在服务器的容器下的路径。

通常path就会和接口的功能直接挂钩。

URL地址参数也是属于PATH的一部分。

url地址参数是指通过问号的方式连接在path之后的部分。

url地址参数采用的是键值对的方式传递参数值,多个键值对之间使用&作为连接符。

http协议:HypeText Transfer Protocol,超文本传输协议。

目前来说,http协议是绝大多数服务首选的通信协议。

http协议是一种基于request(请求)和response(响应)的协议。

这就意味着http协议是分为两个部分:

·http request:http请求,是用来定义请求的发送者应该如何去组织数据。

·http response:http响应,是用来定义请求的处理者应该如何去组织返回的数据。

http请求是由三个部分构成:

请求行是指请求数据包中的第一行内容。

示例:GET /phpwind/ HTTP/1.1

一般来说,请求行中包含以下信息:

所有的http请求都必须有请求方法,如果没有指定,则默认为get方法。

常见的请求方法有:get、post、put、patch、delete、options、trace、header等。

接口使用何种请求方法,和测试没有关系,只和设计、开发有关系。

get和post的区别:

请求路径就是指URL中的路径部分,包含url地址参数。

请求头是指请求数据包中从第二行开始到第一个空行截止的所有内容。

请求头是客户端用来和服务器进行交互信息、控制信息的交互的,通常和业务本身是没有关系。

请求头是键值对应的。

标准的请求头都是有其特殊的含义和作用的。

比较常用的请求头:

· User-Agent :简称UA,客户端用来告知服务器,客户端的环境信息。

PS:服务器通常会根据该信息头来判断客户请求的来源。

session和cookie的维持和该请求头有关(一致性)。

· Content-Type :如果请求body中有数据,则该信息一定要添加。

PS:

·该信息头是用来告知服务器,请求主体中的数据的数据组织格式。

常见的组织格式有:

键值对格式:

示例: aaa=1&bbb=2

混合表单格式,多用于文件上传类型的接口。boundary表示分隔符,实际的请求主体中的分隔符比请求头中的分隔符要多"--"。

表示发送的是json格式的数据。

示例:{"aaa":1,"bbb":2}

·请求中具体使用何种格式的数据组织格式,由接口本身决定。

·要避免在全局请求头中使用Content-Type。

·c ookie、token :状态相关的信息头。一般来说cookie不用额外处理。

token这样的信息头基本上都需要做关联处理。

是指请求数据包中从第一个空行开始到最后的所有内容。

·请求主体一般都是和业务相关的,是客户端发送给服务器的业务数据。

·请求主体中的数据是有特定组织格式(Content-Type),由开发决定,和测试无关。

·查看请求数据,建议通过raw格式。。尤其是进行调试的时候。

一般来说http响应也是分为三个部分。

·response line:响应行

·response headers:响应头

·response body:响应主体

响应行是指响应数据包中的第一行内容。

通常来说包含下列信息。

示例:

HTTP/1.1 200 OK

响应代码,又叫status、status code,状态、状态码。

响应代码是服务器用来告知客户端,服务器对于请求的通信逻辑层面的处理结果。

响应代码是三位长度的数字,根据首位数字的不同,可以分为5类。

1xx:表示连接建立过程中的交互、控制信息。

2xx:表示服务器处理成功,典型就是200.

3xx:表示重定向。

PS:1xx、2xx、3xx都表示请求成功,即服务器正常工作。

4xx:表示客户端错误。

如:400、401、403、404、405

5xx:表示服务器错误。

如:500、502、501

PS:在接口测试时,不论出现4xx、5xx都表示脚本出错了。

脚本出错有两种情况:

·协议层面:http请求的格式组装问题。

·业务层面:业务相关的数据不合法导致。

PS:一旦出错,我们需要做的就是去对比成功的请求数据包(包含头和body)和失败的请求数据包。

响应头是指响应数据包中从第二行开始到第一个空行截止的部分。

响应头是服务器用来告知客户端,服务器的一些交互、控制信息。

比较常见的:

set-cookie:是服务器用来返回cookie给客户端。

响应主体,是指响应数据包中从第一个空行开始到最后的所有内容。

·响应主体有可能是压缩、编码的,有些测试工具会自动处理,有些需要编程处理。

·响应主体一般都是服务器对于接口的处理结果,和业务相关。

这就意味着我们要判断一个接口的功能是否正确,或者要提取服务器返回的数据,通常都要对响应主体进行操作。

服务器测试方法

服务器测试方法分为两个大方面,性能测试与功能测试。

我们在性能测试方面采用了新的测试方法,主要分为文件测试、数据库性能测试与

Web

性能测试三个

方面。其中,文件性能与数据库性能采用美国

Quest

软件公司的

Benchmark Factory

负载测试和容量规划

软件,

Web

性能测试则使用了

Spirent

公司提供的

Caw WebAvalanche

测试仪。

一、性能测试

1

、文件性能测试方法

Benchmark Factory

软件能按照文件读写的关键指标定制事务。软件最大支持

1000

个虚拟客户。

本次测试环境包括

10

台配置为

PIII800/128MB

内存

/20G

硬盘以上的客户端,它们用来模拟虚拟用户。

控制台为配置是

PIII 850/128MB

内存

/40G

硬盘的

Acer

笔记本电脑。交换机为带有两个千兆

GBIC

接口、

24

10/100M

自适应端口的

Cisco 2950

,客户端与控制台通过

100M

网卡连到交换机上,被测服务器则通

过千兆光纤网卡与交换机相连接。

被测服务器均安装带

SP4

Windows

2000

Advanced Server

操作系统,在所有三项性能测试中都统一

RAID

级别为

5

在具体测试方案设置上,测试软件把决定文件读写操作的关键因素设定为:读

/

写、随机

/

顺序、操作

块大小、对象大小四个。在本次测试中,考虑到我们设有单独的数据库及

Web

测试项目,所以在文件测试

中,我们把目标确定为测试服务器基本的

I/O

性能,这主要由网络接口、系统带宽、磁盘子系统等几大部

分所决定。同时,从几部分的作用看,以大操作块读写大对象文件,小操作块读写小对象文件,较能反映

服务器最基本的

I/O

性能,即“大操作块读写大文件”对系统带宽、缓存的考察,以及“小操作块读写小

文件”对磁盘子系统、网络接口的考察。最终我们确定的四个事务是:

大文件顺序读写

(

操作块

8KB

,对象文件

80% 500KB

20% 1MB)

大文件随机读写

(

操作块

8KB

,对象文件

80% 500KB

20% 1MB)

小文件随机读

(

操作块

1KB

,对象文件

80% 1KB

10% 10KB

10% 50KB)

小文件顺序写

(

操作块

1KB

,对象文件

80% 1KB

10% 10KB

10% 50KB)

每个事务的用户数均以固定步长逐渐增加,

最大可增加到

1000

个虚拟用户。

其中,

“大文件顺序读写”

事务的用户数按照

40

的步长从

1

可增加到

400

(

测试至强服务器

)

200

(

测试

TUALATIN

服务器

)

,其

他事务则将用户数按照

100

的步长从

1

增加至

1000

。我们期望得到其在不同用户数时被测服务器的性能表

现。总体上其走势及峰值反映了该服务器的性能。每项事务均运行三次,每次之间被测服务器进行重启,

最终结果为三次平均值。

2

、数据库性能测试方法

“乘机安全小贴士”安全出行要重视

数据库性能测试同样使用了

Benchmark Factory

软件,测试环境如同文件性能测试。测试时,在被测

服务器上安装

SQL Server 2000

使用企业版。首先在被测服务器上创建新的数据库,通过使用

Benchmark

Factory

预定义的

Database Spec

项目向数据库中创建表,装载数据。在服务器端创建以

CPU

计算为主的

存储过程,通过

10

台客户机模拟用户、按照

40

个虚拟用户的步长递增到

400

个用户,执行该存储过程。

结果是以获得的每秒事务数

(TPS)

衡量服务器的数据库事务处理能力。

整个测试分为三次,

每次之间重新启

动被测服务器,最终取三次平均值作为评价结果。

3

Web

性能测试方法

Web

性能测试工具是由

Spirent

公司提供的

Caw WebAvalanche

WebAvalanche

模拟实际的用户发出

HTTP

请求,

并根据回应给出具体的详细测试结果。

它有以下特点:

能够模拟成百上千的客户端对服务器发

出请求

能够模拟真实的网络应用情况,

比如网站在高峰期的访问量应该是动态的维持,

有新客户端的加入,

同时也有原客户的离去,

访问量不是固定不变的

可以产生

20000

个连接

/

秒请求量,

足以满足测试的需要

测试项目丰富,有访问请求的成功失败数,有

URL

和页面的响应时间,有网络流量数,还有

HTTP

TCP

议的具体情况。

测试时,被测服务器与

WebAvalanche

上都装有千兆光纤网卡,两网卡通过光纤直接连接。监控端

(

置为

PIII 1GHz/128M

内存

/20G

硬盘

)

安装了带

SP4

Windows 2000 Server,

该监控端与

WebAvalanche

过交叉线直连。在监控端通过

Web

浏览器配置

WebAvalanche

,在被测服务器安装了

SQL Server 2000

企业

版,并用微软的

IIS

建立了

Web

服务器。

测试分为静态性能与动态性能两部分。主要是因为在实际的

Web

应用中,有的站点静态内容居多,提

供的服务也绝大多数是静态的,

因此,

他们就会特别的关心服务器静态性能

同样,

有的站点提供的服务交

互性的内容居多,他们就会更关心服务器的动态性能。

被测网站中页面大小及静态、动态页面所占比例均参照实际网站得出,整个网站静态、动态页面所占

比例是

70%

30%

,使用的动态页面类型为

ASP

。请求页面样本的文件大小分布比例与整个网站的相同。

静态性能测试模拟发出的均是静态页面请求。在测试动态性能时,动态页面的访问请求占

20%

,其余

80%

为静态页面请求。我们根据实际的

Web

服务器一天中的运行情况建立了一个服务器页面请求模型,该

模型由

4

个阶段组成,第一阶段是预热阶段,

WebAvalanche

发出的请求量由

0

慢慢上升到

200

第二阶段

是逐步加压阶段,请求量逐步累加到最大值

8200

第三阶段是动态维持阶段

第四阶段是下降阶段,请求量

由最大值迅速下降为

0

。其中,最大请求量略大于实际服务器能够提供的事务处理量。

被测服务器的静态与动态测试分别测试三遍,每遍之间被测服务器和测试仪均重启,结果取三次的平

均值。由此可见,此服务器测试方法立志于最终结果的准确性。

二、功能测试

在功能测试方面,我们对被测服务器的可扩展性、可用性以及可管理性进行了综合评价,其中可扩展

性包括硬盘、

PCI

槽以及内存等的扩展能力,可用性包括对热插拔、冗余设备

(

如硬盘、电源、风扇、网卡

)

的支持,可管理性则指的是服务器随机所带的管理软件。

我们在对服务器进行总体评价时,综合了性能、功能和价格三方面因素,依据《网络世界》所做的用

户调查结果,分别给予不同权重,性能占

50%

,功能占

40%

,而价格则占

10%

。在分析性能时,数据库性能

占其中的

50%

,而文件性能占

30%

Web

性能占

20%

综上所述,这种全新的服务器测试方法更够更准确更直接的对服务器进行测试,而且数据更加精确。

希望能给又需要的读者朋友带来一定的帮助

对于接口测试,首先测试人员要懂代码,你只需要知道接口的作用是什么就可以了,其次,自己去读开发的代码。

然后,根据该接口功能及代码写测试用例:根据该接口参数,构造不同的用例,测试接口在参数合法及非法情况下能否达到预期效果,根据该接口中的逻辑,测试该接口实现代码的逻辑,进行容错及健壮性测试,静态检测代码,看是否有内存泄露、或永远走不到的分支、代码规范及逻辑是否合理,对于一些接口,需要进行多线程测试。

接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统。

主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。接口测试在淘宝的应用是一个自下而上的发展过程。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/698963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-03
下一篇2023-08-03

发表评论

登录后才能评论

评论列表(0条)

    保存