1、-_产品名称Product name 密级Confidentiality level内部公开产品版本Product version Total 11pages 共11页接口协议测试总结(仅供内部使用)For internal use only拟制:Prepared by 王健立日期:Date 2006-12-17审核:Reviewed by日期:Date批准:Granted by日期:Date华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved-_修订记录Revision record日期Date修订版本Revisi
2、on version修改描述 change Description作者Author2006-12-17 1.00 初稿完成 刘明伟-_目 录Table of Contents 1测试点 .41.1 在测试过程中,最烦琐的,也是最容易测出问题的莫过于字符校验。 .41.2 边界值也是一个很重要的测试点。 .41.3 此外,还要注意关注一下字符长度的问题 .51.4 空值也是一个检查点 .51.5 对某些逻辑关系进行校验。 .51.6 当中间件对接其他外部系统时,如果对本接口有影响,也要进行测试。 .61.7 当然,最重要的功能测试也不能忘记。 .61.8 还要注意一下外系统和本系统的一致性检查
3、.71.9 对于某些定义后就不允许修改的参数进行校验。 .71.10 可以进行一些并发操作。 .71.11 对于一些异常情况,也可以适当作些测试。 .81.12 如不是用测试桩来模拟外系统,而是真正的对接外系统,那么对于数据之间的逻辑关系还要重点关注。 .82一些小技巧 .92.1 测试前先从整体上安排好各个模块的测试顺序,和测试策略。 .92.2 在局部模块测试之前首先想好一个测试策略,尽量加快测试速度。 .92.3 可以根据接口文档中对于返回码的描述,在接口测试中重现该返回码。 .92.4 可以在创建时,把所有选项都取边界值或特殊字符,然后,全流程的跑一遍,看是否会引起一些其他的问题。 .
4、92.5 可以在测试过程中,浏览一下本轮所提的问题单和以前版本所提的问题单,看是否有类似的问题在自己负责的模块也存在。 .92.6 可以联系以前自己所测试的相似产品中,曾经发现的具有普遍意义的错误,是否在当前产品中也能重现。 .103一些注意点 .103.1 在边界值测试中,一般选取非法边界值、边界值和一些典型值进行测试。 .103.2 如果在选项中需要输入时间,那么,对于时间的测试一定要注意以下几点:103.3 对于一些不允许输入的特殊字符,如果有可能的话,要尽可能都一一测试。103.4 要特别注意返回码是否都能在接口文档找到。 .10接口测试总结-_1 测试点1.1 在测试过程中,最烦琐的
5、,也是最容易测出问题的莫过于字符校验。在这部分主要关注点为:(1).对于特殊字符的校验是否和接口文档描述的一致;(2).对于字符长度的校验是否和接口文档描述一致;(3).关注各个模块中相似/相关联选项的特殊字符的字符集是否相同(比如创建查询模块中的 id的字符集是否相同) ;(4).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(5).对于各个选项的特殊字符校验顺序/策略是否合理;(6). 进行大小写字符敏感的校验;(7). 进行中英文校验;(8).进行字符类型校验,比如在 int型编辑框中输入 char型数据。1.2 边界值也是一个很重要的测试点。在这部分主要关注点为:(1)
6、.最好把所有选项都选成边界值,看后续操作中是否会导致一些相关的问题;(2).分别选取非法边界值、边界值和典型值进行测试;(3).对于时间的边界测试要格外注意,关于时间的边界值测试,在 3.2中有较详细的介绍;(4).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(5).对于各个选项的边界值的校验顺序/策略是否合理;(6).对消息的边界值进行校验(整个消息大小的边界值是属于隐含的需求,容易漏掉,往往在与外部件共同使用时才会发现问题) 。注:某些注意点在第二和第三部分中也有提及-_1.3 此外,还要注意关注一下字符长度的问题在这部分主要关注点为:(1).最好把所有选项都选成最长的字
7、符,看后续操作中是否会导致一些相关的问题;(2).分别选取超长字符、最长字符和最少字符进行测试(空值1.4有介绍) ;(3).注意对超长字符的提示信息是否准确合理,系统中对于超长字符的提示信息的风格是否一致;(4).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(5).对于各个选项的超长字符的校验顺序/策略是否合理。注:某些注意点在第二和第三部分中也有提及1.4 空值也是一个检查点在这部分主要关注点为:(1).对于必选项为空是否有校验;(2).对于非必选项为空是否有校验;(3).对于字符前后的空格是否有 trim()功能;(4).对于字符中间的空格是否有校验;(5).每次操作的
8、返回码是否和接口文档描述一致,返回信息是否清晰明了;(6).对于各个选项的校验顺序/策略是否合理;(7).此外,如果用测试桩来模拟外部接口,可以对用来表示空值,的数值(比如“-1”等)进行测试,看看数据库相应的表中存储的是不是正确。1.5 对某些逻辑关系进行校验。一般说来,中间件对于接口传来的参数不做逻辑校验,逻辑校验主要由外系统负责。所以,当我们用测试桩来模拟外部系统测试时,不必关注逻辑关系。不过对于要对数据库进行操作(比如修改等)的模块,还是要进行数据的存在校验。比如删除/修改用户就要校验该用户是否存在。在这部分主要关注点为:(1).对于不存在数据的是否有校验;-_(2).每次操作的返回码
9、是否和接口文档描述一致,返回信息是否清晰明了;(3).对于相互之间有约束关系的数据的约束关系进行校验;(4).对于非主键的所有数据重复性进行校验;(5).对于主键不可重复性进行校验;(6). 返回信息是否清晰明了。1.6 当中间件对接其他外部系统时,如果对本接口有影响,也要进行测试。比如开户就要分为对接 ca和不对接 ca两种情况进行测试。在这部分主要关注点为:(1).对于对接其他外系统时可能被影响到的所有相关的流程都要进行测试,关注其和不对接其他外系统时的区别,比如不对接 dslam时,某些 dslam相关的选项为不可输入项/非必选项,而对接 dslam时,为必选项;(2).关注对接/不对接
10、其他系统时返回码的区别; (3).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(4).对于各个选项的校验顺序是否合理。1.7 当然,最重要的功能测试也不能忘记。在这部分主要关注点为:(1).该功能是否能够正确实现;(2).数据库和日志记录是否合理;(3).日志中参数传递是否和接口文档一致;(4).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(5).对消息的重复发送进行校验;(6).数据维护成功,观察相关系统是否同步刷新。-_1.8 还要注意一下外系统和本系统的一致性检查由于这部分要根据系统实际情况来测试,所以,在此就不写出太过具体的关注点了。在这部分主要关注
11、点为:(1).对于同一个选项外系统和本系统对其校验策略是否一致;(2).外系统的页面中必选项和非必选项的设置是否和本系统一致;(3).外系统和本系统对于特殊字符的校验是否一致;(4).外系统和本系统对于边界值的校验是否一致;(5).外系统某些限制是否和本系统一致;(6).外系统定义的用户是否可以在本系统上正常使用(可以用边界值定义的用户来测试)等;(7).根据具体情况设置具体的检查项。注:这里所说的一致性,并非要求本系统必须和外部系统完全一致,要根据具体情况具体分析。 (比如,cms 上元数据录入时的限制就可以大于 mw)1.9 对于某些定义后就不允许修改的参数进行校验。在这部分主要关注点为:
12、(1).观察该字段在页面上是否可以修改;(2).观察数据库中该属性的值是否改变;(3).从日志中观察,外系统是否传送该参数; (4).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了。1.10 可以进行一些并发操作。比如,sms 正在使用某个用户登录后,准备进行某个操作,boss 对其进行删除操作,然后 sms再用该用户进行操作,看是否会有什么不良影响。由于这部分要根据系统实际情况来测试,所以,在此就不具体写出关注点了。-_1.11 对于一些异常情况,也可以适当作些测试。在这部分主要关注点为:(1).数据库中该属性的值是否改变(相关表项是否回滚) ;(2).从日志中观察,外系统是否
13、传送该参数; (3).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(4).异常可以分为:数据库异常、网络异常等;注:虽然,异常情况出现的几率比较小,但是恰恰这些出现问题几率比较小的地方一旦出现了问题往往都是比较严重的;所以,测试时还是要给予足够的重视。1.12 如不是用测试桩来模拟外系统,而是真正的对接外系统,那么对于数据之间的逻辑关系还要重点关注。在这部分主要关注点为:(1).页面是否对数据的是否存在进行校验;(2).页面是否对一些存在逻辑关系的选项进行逻辑校验;(3).操作失败后,相应的数据表项是否有回滚功能;(4).相应的操作后,数据库的纪录是否正确;(5).对于“nu
14、ll” 、 “NULL”、 “-2”等代表空值或无修改的字符,检验其是否可以正确转义(根据不同的接口协议,可能代表空值的字符不尽相同,根据具体情况具体分析)。(6).日志中参数传递是否和接口文档一致,是否有参数漏传现象;(7).每次操作的返回码是否和接口文档描述一致,返回信息是否清晰明了;(8).对消息的重复发送进行校验(比如对暂停的用户再进行暂停);(9).还可以在外系统上进行一些并发测试;-_2 一些小技巧2.1 测试前先从整体上安排好各个模块的测试顺序,和测试策略。比如,先测试增加用户,然后,用增加的用户进行恢复用户和挂起用户的操作,等到该用户不再需要时,进行删除用户的操作。这样安排,可
15、以节省很多时间和工夫。2.2 在局部模块测试之前首先想好一个测试策略,尽量加快测试速度。比如在对于一个页面的校验中,该页面包含很多编辑框,可以在其中全部输入非法的边界值,保证在不需要提交的状态下把所有的非法的值测试完毕,然后再输入合法的边界值,进行功能测试。这样测试起来就不必要一个一个的进行,很大程度上提高了速度,而且这样,我们也可以测试出不同编辑框间的校验顺序。2.3 可以根据接口文档中对于返回码的描述,在接口测试中重现该返回码。然后再对比该情况下的返回码是否和接口文档中所说的一致。2.4 可以在创建时,把所有选项都取边界值或特殊字符,然后,全流程的跑一遍,看是否会引起一些其他的问题。此外,
16、对于一些和自己所负责模块有关的参数(比如外键区域) ,在创建时,可以也都选取边界值或特殊字符,看看会不会导致什么问题。2.5 可以在测试过程中,浏览一下本轮所提的问题单和以前版本所提的问题单,看是否有类似的问题在自己负责的模块也存在。-_2.6 可以联系以前自己所测试的相似产品中,曾经发现的具有普遍意义的错误,是否在当前产品中也能重现。3 一些注意点3.1 在边界值测试中,一般选取非法边界值、边界值和一些典型值进行测试。比如对于端口号取值范围为1024-65535,那么我们可以选择以下这些点进行测试:-1,0,1,500,1023,1024,5000,65535,65536,700003.2 如果在选项中需要输入时间,那么,对于时间的测试一定要注意以下几点:(1).特殊的日期,比如 2006-02-28、2006-07-31 和 2006-08-31;(2).特殊的年份,比如闰年,特别关注闰年的 2月 29日;(3).年首和年尾;比如 2006-12-31和 2007-01-01;(4).月首月尾,2006-01-01 和 2006-01-31;(5).大小月份,比如:2006-03-31 和 2006-04-30.3.3 对于一些不允许输入的特殊字符,如果有可能的话,要尽可能都一一测试。3.4 要特别注意返回码是否都能在接口文档找到。