阅读《软件测试》书籍随手记录的笔记
-
动态黑盒测试
不深入代码细节测试软件的方法称为动态黑盒测试。动态黑盒测试常被称为行为测试,因为测试的是软件在使用过程中实际行动。
测试用例是指进行测试时使用的特定输入,以及测试软件的过程步骤。
选择测试用例是软件测试员最重要的一项任务。不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。
-
通过性测试和失效性测试
通过性测试实际上是确认软件至少能做什么,而不会考验其能力。纯粹为了破坏软件而设计和执行的测试用例称为失效性测试或错误强制测试
在设计和执行测试用例时,总是首先进行通过性测试。
-
等价类划分
等价类划分是指分步骤地把海量(无限)的测试用例集减得很小,但过程同样有效。
一个等价类或者等价划分是指测试相同目标或者暴露相同软件缺陷的一组测试用例。考虑把软件具有相似输入、相似输出、相似操作的分在一组。这些组就是等价划分。 -
数据测试
进行等价类划分,以合理减少测试用例的关键原则是:边界条件、次边界条件、空值和无效数据。
边界条件是指软件运行在计划操作界限的边界的情况。
提出边界条件时,一定要测试临近边界的有效数据,测试最后一个可能有效的数据,同时测试刚超过边界的无效数据。
有些边界在软件内部,最终用户几乎看不到,但是软件测试员仍有必要进行检查。这样的边界条件称为次边界条件或者内部边界条件。
一定要考虑建立处理默认值、空白、空值、零值或者无输入等条件的等价划分。
无效数据是指非法、错误、不正确和垃圾数据。例如:如果要求输入数字,就输入字母。如果软件只接受正数,就输入负数。如果软件对日期敏感,就看它在公元3000年是否还能正常工作。 -
状态测试
软件测试的另一方面是通过不同的状态验证的程序的逻辑流程。软件状态是指软件当前所处的条件或者模式。
1.建立状态转换图
状态转换图应该表示出以下项目:
♦软件可能进入的每一种独立状态。
这里有一个很好的经验是,如果不能判定是否为独立状态,它就可能是。如果以后发现它不是,随时可以将其剔除。
♦从一种状态转入另一种状态所需的输入和条件。
可能是按键、菜单选择、传感器信号或者电话振铃等。状态不可能无缘无故地存在,其原因正是我们在这里要寻找的。
♦进入或者退出某种状态时的设置条件及输出结果。
包括显示的菜单和按钮、设置的标志位、产生的打印输出、执行的运算等。这些是状态转换时发生的部分或全部现象。
2.减少要测试的状态及转换的数量
将大量的可能性减少到可以操作的测试用例集合有以下5种实现方法:
♦每种状态至少访问一次。
如何到达的没有关系,但是每一种状态都必须测试。
♦测试看起来是最常见和做普遍的状态转换。
尽管听起来很主观,但是其根据是进行产品说明书的静态黑盒子分析时收集到的信息。某些用户情况很可能比其他更常见。
♦测试状态之间最不常用的分支。
这些分支是最容易被产品设计者和程序员忽视的。软件测试员也许是第一个测试它们的人。
♦测试所有错误状态及其返回值。
出错条件通常难以建立。程序员常常编写代码处理某些错误,但不会测试自己的代码。错误没有得到正确处理、错误提示信息不正确、修复错误时未正确恢复软件等情况常有发生。
♦测试随机状态转换。
如果打印了状态图,就可以在上面任意做各种标记。如果有时间做得更多,可以利用测试工具自动执行状态随机转换的测试。
测试状态及其转换包括检查所有的状态变量——与进入和退出状态相关的静态条件、信息、值、功能等。 -
失败状态测试
失效性状态测试包含竞争条件、重复、压迫和重负。
竞争条件问题是指几个事件恰巧挤在一起,由于软件未预料到运行过程会被中断,以致造成混乱。
重复测试是不断执行同样的操作。这种测试主要原因是检查是否存在内存泄漏
压迫测试是使软件在不够理想的条件下运行——内存小、磁盘空间少、CPU速度慢、调制解调器速率低等。
重负测试与压迫测试相反。压迫测试是尽量限制软件,而重负测试是尽量提供条件任其发挥。让软件处理尽可能大的数据文件。 -
其他黑盒测试技术
1、像无经验的用户那样想问题;
2、在已经找到的软件缺陷的地方再找找;
3、像黑客一样考虑问题;
4、凭借经验、直觉和预感。
网友评论