1.软件开发的两种结构

1.1Cs(Client/Server):客户端----服务器结构

1.2.BS(Browser/Server):浏览器----服务器结构

1.3.BS与CS优缺点对比

CS响应速度快,安全性强,用户体验好,一般应用于局域网中,但是开发维护成本高;

BS可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。所以有些单位日常办公应用BS,在实际生产中使用CS结构。

2.Http协议https

2.1.什么是http协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网tcp/ip(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务器端是网站。

2.2.HTTP1.0和HTTP1.1的区别

HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求

HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟

2.3.http请求方式

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

GET  请求指定的页面信息,并返回实体主体。

HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

POST  向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT  从客户端向服务器传送的数据取代指定的文档的内容。

DELETE   请求服务器删除指定的页面。

CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS  允许客户端查看服务器的性能。

TRACE    回显服务器收到的请求,主要用于测试或诊断。

2.4.Get与post请求的区别

1GET将参数放在URL中。而POST将数据放在BODY中。

2GETURL会有长度上的限制,而POST的数据则可以非常大。

3POSTGET安全,因为数据在地址栏上不可见。

4、一般get请求用来获取数据,post请求用来发送数据。

2.5.HTTP之状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理

2xx:成功--表示请求已被成功接收、理解、接受   200

3xx:重定向--要完成请求必须进行更进一步的操作  charles本地修改

4xx:客户端错误--请求有语法错误或请求无法实现   403    404

5xx:服务器端错误--服务器未能实现合法的请求   500   503

常见状态码:

200 OK                        //客户端请求成功

400 Bad Request        //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized       //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden             //服务器收到请求,但是拒绝提供服务

404 Not Found             //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error     //服务器发生不可预期的错误

503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

3.接口测试

3.1.什么是接口   API

API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数。可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会收到该数据范围内的返回参数。

3.2.什么是接口测试

接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互

一般我们用的多的是HTTP协议的接口、WebService协议的接口,还有RPC(Remote Procedure Call Protocol)——远程过程调用协议的接口

不管是哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们对response进行分析,这即是接口测试。

3.3.接口的分类

1.webservice接口        

webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

2.http api接口

http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json

3.4.为什么要做接口测试

随着系统越来越多,以及复杂性越来越高,为了保证系统的独立性,也为了使业务更加的独立,系统间的交互,越来越多的使用接口,这时候,为了保证数据的传输的准确性,接口测试也应运而生了,数据的错误,有可能引起系统的重大BUG.。

3.5.接口测试的重要性

1.越底层发现bug,它的修复成本是越低的。

2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

3.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

6. 现在很多系统前后端架构是分离的,从安全层面来说:

(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

3.6.接口测试工作流程

准备阶段(80%)

       拿到开发的接口文档,并理解每个接口的参数及含义

       了解被测试系统的业务流程

       编写接口测试用例

执行阶段(10%)

       测试用例/测试场景执行

       测试数据/系统数据收集

分析阶段(10%)

       数据汇总/日志分析

       测试报告

3.7 接口测试用例编写

接口测试用例编写要点

测试每个参数类型不合法的情况

测试每个参数取值范围不合法的情况

测试参数为空的情况

测试参数前后台定义的一致性

测试每个参数的上下限(这里容易出致命的BUG,如果程序处理不当,可能导致崩溃)

测试每个参数取值不合理的情况(包括取的值不属于自己,取值在这阶段不会出现,取值超出了自己所拥有的数量或者范围)

如果两个请求有严格的先后顺序,需要测试调转顺序的情况

自己和自己的交易、聊天等操作(这种特别容易遗漏)