接口测试自动化总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

接口自动化测试设计

文档管理信息表

主题接口自动化测试

版本TIBCO_Adapter_V1.0

内容设计

关键字接口

参考文档单元测试

创建时间2008-03-21

创建人冯昌建

职位SDETest主管

最新发布日期2008-04-02

(一)测试背景概述

新项目结构大致是:

即产品1和产品2为待测试对象,抽象出来可以归结为【http json协议接口测试】与【http web功能测试】。

其中【http web功能测试】针对未曾接触的一种数据库,还包含了大量数据库和SQL 级别的专有操作测试内容,此处不予讨论。

测试对象无论是由C/C++还是Java还是JS/Html实现,对于协议测试和功能测试(白盒测试和单元测试另当别论),都不需要深入了解该语言,熟悉任一种高级语言(最好还有一种脚本语言)+自动化思维意识

+快速学习能力,完全能实施测试自动化策略。

网上查了一下:

JSON(JavascriptObjectNotation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。常应用于http通信和数据传输,应用如Apache开源搜索引擎ElasticSearch等。

JSON建构有两种结构:

1.“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。

2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

*Linux C/C++单元测试和覆盖率统计参见:/w565911788/article/details/7617099

即使对上面一无所知,先来分析一下【http json协议接口】的特点。

(二)测试需求分析

1.Web页面(即产品2)HTTP请求数据包(post/put)格式如:

POST‘http://home/cm_api’-d

‘{"task":"login",

"token":"ae873897a0a9a2afb9bb12a49c4237744a82ea77049df67c9b58d7acc5c0c7527926f 07dd201b6aa",

"id":"admin","password":“123456",

"clientver":"8.4"}‘

POST‘http://home/cm_api’-d

‘{"task":"startinfo",

"token":"ae873897a0a9a2af11077f40cf303d7406ec4d40b90b3a041b8a4edfd63d0fbe7926f0 7dd201b6aa"}’

2.Web Service(即产品1)响应数据包格式,除以下其余未知:

(1)格式错误,不响应;(http json协议层判定)

(2)token(每个用户每次登录时取得,唯一)错误或者连接、数据库等其他问题,响应status:failure

(3)token正确,其他正确,响应status:success

如:

{"__EXEC_TIME":"1ms","note":"none",

"status":"success",

"task":"authenticate",

“token”:“ae873897a0a9a2afdb676eefe4e864e2b0e3abb07cd73cf0944e77d6c792b1aa7926f07dd201b6aa”}–登录成功,响应status:success,并取得token值

{"note":"Request is rejected due to invalid token.Please

reconnect.",

"status":"failure",

“task”:“startinfo”}

–token错误,响应status:failure

3.接口会扩展,增加或改变(数百个)。

4.几乎所有接口有严格执行顺序(如顺序执行:login->optimized->stopdb->logout),login成功获取该用户本次动态token,后面每个接口请求包使用此token。动态token,即测试数据和结果都不是固定的,故Fitnesse等一些接口测试工具难以实现。

5.用例中可含自定义的任意参数变量,如针对Linux:$DBNAME=/home/DBNAME,$DBNAME_DATABASES

=/home/DBNAME/databases,…;Windows:$DBNAME=C:\DBNAME,$DBNAME_DATABASES=C:\DBNAME\databases,…

6.成本1(=不熟悉à找测试工具à学习测试工具à执行测试)>成本2(=自己花部分时间写个测试程序或工具[灵活可控:生成自定义测试用例和判定结果、报告])

7.最后解决方案确定:自己花部分时间写个测试程序或工具[灵活可控:生成自定义测试用例和判定结果、报告]

(三)设计和技术细节准备

1.

测试用例和测试结果生成,我希望按以下数据格式生成文件,固定分隔符分割(便于excel 打开),token错误响应status:failure则Pass,token正确响应status:

success则Pass,Fail的记录status手工核查(扩展:每条接口用例设定一个字段表示期望值,检查收到期望值则Pass,收不到则Fail)。

Case-ID:CMS-145

Interface Name:updateattribute

Preconditions:correct

token:

ae873897a0a9a2afd540113d7e03001469caacde0c9322491cd95e57cef94f427926f07dd201b6aa Step:curl

-POST‘http://home/cm_api’-d ‘{"task":"updateattribute","token":"ae873897a0a9a2afd540113d7e03001469caacde0c9322491cd9 5e57cef94f427926f07dd201b6aa","dbname":"demodb","classname":"athlete"}’

Result:{"__EXEC_TIME"

:"11ms","note":"Failed to connect to database server,‘demodb’,on the following host(s): localhost:localhost","status":"failure","task":"updateattribute"}

P/F:F

Remark:status:

"failure"

2.

测试输入数据(开发维护):

数据包文件列表(根据接口名字命名,增加一个接口相应增加一个)

接口顺序文件json_list(接口名的执行顺序列表,根据此文件中接口顺序执行)

3.

动态token获取:

longin响应保存tokenà读取jsonlist保存列表à根据jsonlist顺序读取对应接口名数据包文件,并替换token字段值à请求和响应à检查响应结果的状态和其他内容(断言)

4.两种方式实现(C#):

—方式一:封装开源Ssh库登录一台Linux调用Curl命令,记录整个过程并分析处理,生成测试用例和测试结果文件,人工查看和整理。(涉及平台环节更多,更锻炼。)

相关文档
最新文档