今天写了很多,但是发表的时候页面提示了一个错误,偏偏自己复制的内容由有问题。哎,郁闷阿。所以找了这个工具来写。
这一章主要是讲黑盒测试。主要讨论了一下几个问题:
- 什么是动态黑盒测试
- 如何通过等价类的划分减少测试用例的数量
- 如何判断故障的边界条件
- 使用良好的数据引入缺陷
- 如何测试软件状态和状态转换
- 如何使用重复、压迫和重负方法找出缺陷
- 缺陷的一些秘密隐藏之处
5.1 什么是动态黑盒测试。
动态:是指在软件运行情况下的测试。
黑盒:输入数据,测试结果,不考虑中间的处理过程。
5.2 通过性测试和失效性测试
通过性测试:确认软件至少可以做什么,不考虑其能力,不用项办法让其崩溃。
失效性测试:找出软件在那些情况下无法正常工作。
问题:为什么需要做通过性测试?
答案:做通过性测试是十分必要的,首先看其是否可以完成基本的功能。往往在通过性测试上就会发现很多缺陷。
5.3 等价类划分
如何选择测试用例是测试人员一个十分重要的工作,而选择用例的方法就是等价类划分。他把海量的测试用例减少到很少,但是这种减缩,必须是可控制,且仍然足以测试软件。所以说这种划分是有一定风险的。当然越有经验的人,划分的越合理。
5.4 数据测试
划分测试用例的关键原则为:
边界条件
什么是边界条件
边界条件的类型:
一些可以参考的边界:
第一个/最后一个 最小值/最大值 开始/完成 超过/在内
空/满 最短/最长 最慢/最快 最早/最迟
最大/最小 最高/最低 相邻/最远
查找边界的方法:尝试在边界的情况下增加一个或者减少一个,找出边界。
次边界条件
次边界条件:用户无法看到,但是在软件内部,测试人员有必要检查的这些边界条件。
我认为这样的定义,是比较模糊的,大概是除去界,上的那些边界条件吧。不过一下子也想不到什么可以套在这个定义上的例子。书中的例子个人认为也比较没有说服力。 不过ASCII码和 UNICODE这个例子倒是不错,有时候是会出现这种错误,对输入的中文字符处理不好。
空值和无效数据
默认、空白、空值、零值、无
(程序员常忽视在什么都没有输入的时候 按Enter键,所提示的错误)
非法、错误、不正确、垃圾数据
(输入垃圾数据,这是一种失效性测试,没有什么具体的规则。用户在使用软件的时候不会为自己的随意操作负责)
5.5 状态测试
软件测试是指当前所处的条件或者模式。测试人员必须测试软件的状态和状态的转换。
第一次看这些的时候,是用自己接触过的具体来对照理解的。感觉这个状态是很难理解的一个东西,感觉自己现在做的MIS系统划分这些状态是没有什么必要的。但是对于书中的例子,确实比较好的,以画图软件来说,选择一个工具就进入了一个状态。软件是多样化的,思考的时候也要想到各种各样的软件,比如游戏软件,另一些软件,不要把自己固化在一MIS这个范围里。
测试软件的逻辑流程
建立软件转换图
图的制作可以用不同的方法做,没有固定的格式。但是应该表示出以下项目:
- 软件可能进入的每一种独立状态
- 从一种状态转入另一种状态所需要的条件
- 进入或者退出某种状态试的设置条件及输出结果
减少要测试的状态及转换的数量
原则:
- 每种状态都要访问一次
- 测试常用的转化
- 测试最不常用的分支
- 测试所有错误状态及其返回(这里指测试对错误的处理)
- 测试随即状态的转化
失败状态测试
竞争条件:在同别的程序产生竞争的情况下。
和时序错乱:
重复测试:不断重复的执行一个操作,甚至成千上万次。有时在一个操作处理一点时间后,性能会下降。比如内存泄露这样的问题。
压迫测试:使软件在不够理想的条件下运行。比如:CPU慢,内存少,网络条件差。
重负测试:提供条件给软件发挥,让其处理最大的能处理的数据。(时间也是一种重负测试)
5.6 其他黑盒测试技术
- 像笨拙的用户那样做
- 在已经找到软件缺陷的地方找找
- 像黑客那样考虑问题
- 凭借经验、直觉、和预感
本章只是测试的开始。