局部探索式测试法
2015-07-15 22:04
232 查看
读了《探索式软件测试》这本书,觉得非常不错,把我已看的部分总结一下。
首先需要明白,所有的软件测试都会执行4个基本任务:接收输入、产生输出、存储数据、进行运算。
这里阐述一下用户输入的定义:输入必须导致软件运行代码,并以某种方式作为相应(不响应也是响应的一种)
关于合法输入和非法输入
一般需求文档中针对某个字段,会规定使用的字符类型。如测试电话号码,输入中文、英文就是非法输入。开发也必须要十分精确地知道什么是合法输入。针对非法输入,开发一般会写一段error-handling代码(实际上也许开发并不喜欢写这些代码,更喜欢写功能代码)。
开发处理非法输入的三种方式:
1、输入筛选器 ;2、输入检查 ;3、使用异常处理
-
1、输入筛选器:会屏蔽掉非法输入,在我测试过程中,常见的有如下3种:a、使用下拉框,只让用户选择不能输入,如用户能从篮球、足球中选择
<select> <option value ="basketball">篮球/option> <option value ="football">足球</option> </select>
b、对字符数进行限制,如控制input框中最多允许输入55个字符,
<input type="text" name="email" maxlength="55" />
c、对字符类型进行限制,控制input框中只能输入数字,如:
<input id="Text1" type="text" onkeypress="return IsNum(event)" /> <script language="javascript" type="text/javascript"> function IsNum(e) { var k = window.event ? e.keyCode : e.which; if (((k >= 48) && (k <= 57)) || k == 8 || k == 0) { } else { if (window.event) { window.event.returnValue = false; } else { e.preventDefault(); //for firefox } } } </script>
从测试的角度,需要检查如下方面:
a、开发是否正确实现了此功能,如果不小心把一个非法输入放到合法输入中,后果是很严重的。
b、是否可以绕过屏蔽器。如通过控制台编辑html源码修改选择的值,这都是很严重的问题。
2、输入检查:它会接收一个输入值,如果(if)输入合法,则会处理它,否则(else)就产生一条比较精确的错误信息并中止处理。
仔细阅读每一条错误信息,或许就能找到开发的实现思路,再不济也可以检查该信息是否写错了。此外,信息一般会指出当前值不合法的原因以及怎样修改会变成正确的值。
3、异常处理:不是针对一条具体的输入进行检查,而是把一段代码当做一个整体对待,产生的错误信息也比较笼统。
如果发现这种信息,可以反复测同一段函数,或稍微修改,看看会不会出错,或者是运行其他一些调用该函数的用例。比如,你在测试修改单据时,填了某个数字报404,此时可以试着把数字减到1000以内,或者更高。我曾测过一个大于1000的数前端没有格式化千分符,导致传入后端报错,使单据新增报404.
相关文章推荐
- 如何能使xcode拥有自动注释并生成文档的功能
- 各种Adapter的用法
- Angular.js VS. Ember.js:谁将成为Web开发的新宠?
- css text-overflow
- Tomcat调优总结
- Http的GET和POST请求
- SQLite的使用详解
- 七七四十九劫,九九八十一难
- CSS3 伸缩布局盒模型记
- 推荐python的ORM框架peewee(转)
- ffmpeg的tutorial中文版学习笔记(三)
- Java语言基础1--综合案例(数字加密问题):
- http权威指南笔记第二章URL
- hadoop的namenode无法启动的解决办法
- Spark与Scala学习
- 设计模式之迭代器模式
- java学习&复习 2015/07/15
- mongodb备份数据库
- Mysql数据库存储引擎
- 【LintCode】Recover Rotated Sorted Array 恢复旋转排序数组