有的同学会问:我们协议还不稳定,error code也不明白,有些输入也不知道相应什么error code,怎么破?别急。后面告诉大家。
5. 生成mock数据
完毕了以上准备工作以后,剩下的就是生成我们mock须要的response json数据了。
解析Wiki协议中的json模版,给相应的json字段赋上生成的值。这里须要写一段代码来完毕,在此不做赘述。
番外篇:工具的二次开发
在使用过程中。我们发现工具PICT不能满足业务场景的复杂度要求,主要有两点:
- 异常输入测试的时候,不能同一时候输入多个异常值
在case设计中多个异常值输入是非经常见的测试场景。尽管pict提供负面测试(negative testing)功能。即假设模型文件里,有值被标记为异常值(默认的异常值标识符为“~”),则case中会随机出现一个异常输入的值,可是PICT限制每一个case仅仅能有一个异常值存在,原因是多数异常值的组合尽管可能会引发问题,可是代码在catch了一个异常值造成的异常后,不会再去处理还有一个异常值。
先通过一个演示样例来感受一下pict的负面测试。演示样例模型文件例如以下:
Destination: Canada, Mexico, USA, ~Japan
Class: Coach, Business Class, First Class
Seat Preference: Aisle, Window, ~Door
产生的case例如以下:
通过上图能够看出,PICT同一时候保证了正常值的组合,也保证了异常值的组合,可是我们不难发现,每一个case仅仅会出现一个异常值,那么 ~Japan,First Class, ~Door的case就会遗漏,显然case覆盖率不够,不能满足我们的需求。
针对这个问题,在对PICT的源代码进行了具体的解读后,我们对代码进行了二次开发,扩展了负面测试的覆盖范围。彻底攻克了这个问题,改动后的模型文件例如以下:
Destination: Canada, Mexico, USA, ~Japan
Class: Coach, Business Class, First Class
Seat Preference: Aisle, Window, ~Door
~{Destination, Seat Preference}
//添加一行公式,在模型文件里指定了Destination和Seat Preference两个字段能够进行异常值组合,数量不限。
扩展后的case生成是这种:
正则表达式过于简单。不支持复杂的语句
PICT支持IF[ ] THEN[ ]格式的约束规则。可是约束规则中LIKEkeyword的通配符操作仅仅支持*和?(分别表示随意多个字符和随意一个字符)。显然简单的通配符操作限制了约束规则的表达能力。
因此,我们在原有的基础上,引入C++的regex库支持正则表达式,改动后支持了更丰富的正则表达式。
例如以下演示样例中,添加一条规则。假设Destination字段为数字类型(”\d”),那么Seat Preference字段也为数字类型。
Destination: Canada, Mexico, USA, 3
Class: Coach, Business Class, First Class
Seat Preference: Aisle, Window, 4
If [Destination] like "\d" then [Seat Preference] like "\d";
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-81263-5.html
中国是一个爱好和平的国家