软件开发的两种结构
CS:客户端----服务器结构。
C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。
CS的优缺点
优点:
能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。
操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
安全性能可以很容易保证,C/S一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。
缺点
需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。
开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变。。
用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户
BS:浏览器----服务器结构
是目前应用系统的发展方向。BS是伴随着Internet技术的兴起,对C/S架构的改进,为了区别于传统的C/S模式,特意称为B/S模式。在这种结构下,通过W3浏览器来进入工作界面,
BS的优缺点
优点:
分布性强,客户端零维护。只要有网络、浏览器,可以随时随地进行查询、浏览等业务处理。
业务扩展简单方便,通过增加网页即可增加服务器功能。
维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
开发简单,共享性强。
缺点:
个性化特点明显降低,无法实现具有个性化的功能要求。
在跨浏览器上,BS架构不尽如人意。
客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低。无法实现分页显示,给数据库访问造成较大的压力。
在速度和安全性上需要花费巨大的设计成本。
功能弱化,难以实现传统模式下的特殊功能要求。
BS与CS优缺点对比
CS响应速度快,安全性强,用户体验好,一般应用于局域网中,但是开发维护成本高,;BS可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。所以有些单位日常办公应用BS,在实际生产中使用CS结构。
Http0和Http1的区别
HTTP1在继承了HTTP0优点的基础上,也克服了HTTP0的性能问题。不仅如此,HTTP1还通过增加更多的请求头和响应头来改进和扩充HTTP0的功能。例如,由于HTTP0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。在HTTP1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点
HTTP请求方式
HTTP0定义了三种请求方法:GET,POST和HEAD方法。
HTTP1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
GET请求指定的页面信息,并返回实体主体。
HEAD类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST向指定资源提交数据进行处理请求。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或诊断。
GET与POST的区别
GET使用URL或Cookie传参。而POST将数据放在BODY中。
GET的URL会有长度上的限制,2kb,则POST的数据则可以非常大。
POST比GET安全,因为数据在地址栏上不可见。
一般get请求用来获取数据,post请求用来发送数据。
HTTP请求与响应
请求
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行、请求头部、空行和请求数据四个部分组成。
请求行以一个方法符开头,以空格分开,后面跟着请求的URI和协议的版本。
第一部分:请求行,第一行明了是post请求,以及http1版本。第二部分:请求头部,第二行至第六行。第三部分:空行,第七行的空行。第四部分:请求数据,第八行。
响应
服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
第一部分:状态行,由HTTP协议版本号,状态码,状态消息三部分组成。
第一行为状态行,表明HTTP版本为1版本,状态码为200,状态消息为
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/htm,编码类型是UTF-8
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。
Http状态码
xx:指示信息--表示请求已接收,继续处理
xx:成功--表示请求已被成功接收、理解、接受
xx:重定向--要完成请求必须进行更进一步的操作
xx:客户端错误--请求有语法错误或请求无法实现
xx:服务器端错误--服务器未能实现合法的请求
常见状态码:
00OK//客户端请求成功
00BadRequest//客户端请求有语法错误,不能被服务器所理解
01Unauthorized//请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
03Forbidden//服务器收到请求,但是拒绝提供服务
04NotFound//请求资源不存在,eg:输入了错误的URL
00InternalServerError//服务器发生不可预期的错误
03ServerUnavailable//服务器当前不能处理客户端的请求,一段时间后可能恢复正常
保存会话的两种技术
。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。
Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了
Cookie应用场景
记录上次访问时间
记录用户名
显示浏览记录
当浏览器进行网络请求时,如果携带当前浏览器的cookie
服务器打给浏览器
浏览器打给服务器
存储到浏览器的文本中
在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象,注意:一个浏览器独占一个session对象(默认情况下)。在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
Session和Cookie的主要区别在于:
Cookie是把数据保存在浏览器端的内存中
Session把数据保存在服务器端的内存中
cookie与session的联系:
当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。。这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,同时也能够确保不同页面之间传值时的正确匹配。
接口测试
什么是接口测试
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
一般我们用的多的是HTTP协议的接口、WebService协议的接口,还有RPC——远程过程调用协议的接口
不管是哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们对response进行分析,这即是接口测试。
接口的分类:
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
httpapi接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
接口的组成:
请求协议:
http---普通的http请求
https---加密的http请求,传输数据更加安全
请求IP:就是指提供接口的系统所部署的服务器地址
请求端口:如果不填端口,默认是80,否则需要填写端口号
接口路径:指系统提供的接口在什么位置
接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数
接口测试的工作流程
准备阶段
拿到开发的接口文档,并理解每个接口的参数及含义
了解被测试系统的业务流程
编写接口测试用例
执行阶段
测试用例/测试场景执行
测试数据/系统数据收集
分析阶段
数据汇总/日志分析
测试报告
接口测试用例编写
接口测试用例编写要点
测试每个参数类型不合法的情况
测试每个参数取值范围不合法的情况
测试参数为空的情况
测试参数前后台定义的一致性
测试每个参数的上下限
测试每个参数取值不合理的情况
如果两个请求有严格的先后顺序,需要测试调转顺序的情况
自己和自己的交易、聊天等操作
接口文档
我们做接口测试,需要开发提供接口文档。最重要的有一下几点:
被测接口的地址接口参数,以及各个参数的说明必要的http头与http体(http头是可以自定义的,可以用来校验是否是自己人访问)接口返回什么值,以及各个返回值的说明接口是干什么的
文章为作者独立观点,不代表股票交易接口观点