zoukankan      html  css  js  c++  java
  • 接口测试基础

    2016-04-06 08:50:22

    在百度百科中,接口定义是:

    接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方法。人类与电脑等信息机器或人类与程序之间的接口称为用户界面。电脑等信息机器硬件组件间的接口叫硬件接口。电脑等信息机器软件组件间的接口叫软件接口。

    显然,这说的太抽象了,没明白是什么意思,我的理解是接口类似于我们的黑盒功能测试,即内部具体结构你不知道,但你需要知道我输入什么,之后的输出什么才是对的、什么才是错的。我们关注的是输入什么,预期结果ok 不 ok。

    接口类型主要有两种:HTTP和webservice。

    HTTP接口基于http协议,应用十分广泛,可以通过post和get得到我们想要的内容(get方式:输入一个url网址,从服务器上获取数据;post方式:例如在登陆表单里填入用户名、密码,把数据提交给服务器);处理数据效率较高;当我们要调用一个本服务内容、不涉及到跨域问题的时候,使用HttpService的方式。

    对于WebService,可能大家有些陌生,举个例子介绍下:

          假若,有两个公司,每个公司都有自己的一个项目,一个公司使用 . Net 开发,一个使用 Java 开发。本来这两个公司是相互独立的、井水不犯河水,但是有一天,这两个公司给合并了,合并后的老总发现,如果把两个项目结合起来将会大大的赚一笔,为此,如何做?因为要把两个项目结合在一起,那么这两个项目之间总应该通通信吧!可这两个项目又是基于不同的平台,怎么通信呢?如果一个公司使用的服务器是 Windows Server 2008, 一个公司使用的是 Linux 服务器呢?对的,使用webservice!

    WebServices 提供一个建立分布式应用的平台,使得运行在不同操作系统和不同设备上的软件,或者是用不同的程序语言和不同厂商的软件开发工具开发的软件,所有可能的已开发和部署的软件,能够利用这一平台实现分布式计算的目的。WebServices的思想是:使得应用程序也具有 Web 分布式编程模型的松散耦合性

    webservice是使用soap协议得到我们想要的内容(它不分get和post,只是基于soap协议包装出来的);webservice传递的数据只能是序列化的数据,典型的就是xml数据;它能处理较复杂的数据类型;如果我们需要在后台调用一个其它应用的服务,可以用webSerivice的方式来调用。

    WebService在文章 http://blog.csdn.net/zhuizhuziwo/article/details/8153327 里讲解的很清楚。

     

    尽管这两种方式涉及很多知识,例如数据的包装、传递、协议规定等等,但我们还是那句话:不需要知道里面的具体实现,但要知道接口的输入和输出、请求和响应。

    下面介绍下http协议的请求报文和响应报文

    get方式:

    打开火狐--百度搜索“‘接口测试’”--打开“接口测试实战-虫师-博客园”,右键firebug查看元素

     

    可以看到是get形式的请求,4790294.html 是请求的网址,响应状态码200,还有

    Accept:客户端可识别的内容类型列表,

    Accept-Encoding:客户端浏览器可以支持的web服务器返回内容压缩编码类型

    User-Agent:产生请求的浏览器类型,

    Accept-Language:客户端浏览器用来展示返回信息所优先选择的语言,

    Host:请求的web服务器域名地址,

    cookie:把保存在该请求域名下的所有cookie值一起发送给web服务器,

    Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面,等等

    相应的,在响应头信息里有

    Content-Length:web服务器返回消息正文的长度,

    Content-Type:返回数据的类型和字符编码格式,

    Date: 显示当前的时间等等。

    响应体返回的实际是html的文件,经过前端的解析和渲染后,变成我们看到的有样式的页面了。

    post方式:

    登陆163邮箱,用户名12345,密码12345 

    选择post选项卡,看到post给服务器的参数,即提交的用户名、密码。这里的url是登录前的页面(登录后可以跳转到原访问页面),登陆失败的话会跳到163主界面。

     

    还有一点,connection,它表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点。当页面包含多个元素时(例如 Applet,图片),Keep-Alive功能避免了建立或者重新建立连接,显著地减少下载所需要的时间。

    在规定的Keep-Alive时间内,连接是不会断开的,例如设置 Keep-Alive: 300。

  • 相关阅读:
    C# 复制(深拷贝、浅拷贝)
    Nunit-Writing Tests
    Thread.Sleep vs. Task.Delay
    AutoMapper Getting started
    设计:抽象类类还是接口
    C++Primer第五版——习题答案详解(八)
    C++Primer第五版——习题答案详解(七)
    C++Primer第五版——习题答案详解(六)
    C++Primer第五版——习题答案详解(五)
    C/C++中的函数指针的使用与总结
  • 原文地址:https://www.cnblogs.com/kanhaiba/p/5357774.html
Copyright © 2011-2022 走看看