接口测试自动化总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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命令,记录整个过程并分析处理,生成测试用例和测试结果文件,人工查看和整理。(涉及平台环节更多,更锻炼。)