《软件测试》[(美)Ron Patton]第五章阅读总结

第五章 带上眼罩测试软件

一、动态黑盒测试:带上眼罩测试软件

  • 定义:不深入代码细节测试软件的方法。
  • 黑盒——测试时不知道程序如何工作——戴上了眼罩;动态——程序在运行——测试员像用户一样使用它。
  • 又称行为测试,因为测试的是软件在使用过程中实际行为。
  • 测试工作就是进行输入、接受输出、检验结果。
  • 步骤:
    1)首先了解需求文档或产品说明书
    2)定义测试用例(指进行测试时使用的特定输入,以及测试软件的步骤),选择正确、合理的测试用例(不正确的选择可能导致测试量过大或过小,甚至测试目标不对),把无穷尽的可能性减少到可以控制的范围。
    用例过多,测试量大,效率低;用例过少,测试的质量得不到保证。
  • 在没有产品说明书的情况下使用探索测试
    把软件当产品说明书对待,先采用静态黑盒测试,在采用动态黑盒测试。

二、通过性测试和失效性测试

1.通过性测试(首先)

定义:确认软件至少能做什么(软件的基本功能),而不考验其能力(能做到什么程度,软件的极限:性能)。
只运用最简单直观的测试用例。

2.失效性测试(错误强制测试)

采取各种手段通过搞垮软件来找出缺陷,纯粹为了破坏软件而设计和执行的测试用例(蓄意攻击软件的薄弱环节)。

三、等价类划分

  • 定义:又称等价分类,指分步骤地把海量(无限)的测试用例集缩减的很小(可控制且仍然足以测试软件的小范围内),但过程同样有效。
  • 作用:选择测试用例
  • :指测试相同目标或者暴露相同软件缺陷的一组测试用例。
  • :在寻找等价划分时,考虑把软件中具有相似输入、相似输出、相似操作的分在一组。这就是等价划分。
  • 等价类划分可能主观。不同测试员可能会得出两种等价划分区间。
  • 等价类分类:
    1.有效等价类:需求说明书中、有意义、合理的数据所构成的集合。
    2.无效等价类:需求说明书中、不合理、无意义的数据所构成的集合。
  • 等价类划分原则:
    1)按区间划分:规定了输入条件的取值范围或数量,确定一个有效等价类(区间里面)和2个无效等价类(区间外面)。
    2)按数值划分:程序要对每一个输入值分别进行处理。则每一个输入值是一个有效等价类,一个无效等价类为不允许的输入值。
    3)按输入集合划分:规定了输入值的集合,确定一个有效等价类(集合里面任意一个)和一个无效等价类(不在集合里面的)
    4)按限制条件或规则划分:规定了输入数据必须遵守的规则或限制条件,则可确定一个有效等价类(符合规则),若干个无效等价类(从不同角度违法规则)。
    5)每次只覆盖一个无效等价类:有多个输入框时,只针对其中一个设计无效等价类,如果程序出现bug,方便定位错误的位置。

四、数据测试

软件可分成两部分:

  • 数据(范围):键盘输入、鼠标单击、磁盘文件、打印输出等
  • 程序:可执行的流程、转换、逻辑和运算
    对数据进行软件测试,就是在检查用户输入的信息、返回的结果以及中间计算结果是否正确
    关键原则:边界条件、次边界条件、空值、无效数据
1、边界条件
  • 定义:指软件运行在计划操作界限的边界的情况。
1、边界条件类型
  • 技巧:通过要选择在等价划分中包含哪些数据,就根据边界来选择
2、测试边界
  • 技巧:提出边界条件时,一定要测试靠近边界的有效数据,即测试最后一个可能有效的数据,同时测试刚超过边界的无效数据
  • :在软件的每一个部分不断寻找边界是极为重要的,寻找做的越多,边界就会发现得越多,可能找出的软件缺陷就越多
  • 缓冲区溢出就是由边界条件缺陷引起的,是造成软件安全问题的头号原因
  • 边界值分析是针对边界值进行测试的。使用等于、小于或大于边界值的数据对程序进行测试。
  • 测试步骤如下:
    1)通过分析规格说明书,找出所有可能的边界条件;
    2)对每一个边界条件,给出满足和不满足边界的输入数据;
  • 如果输入条件规定了值的范围,应取刚刚到达这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据,比如需求上规定学生学号区间为[1,10],选择数据时,考虑边界点:1.刚刚到达:1和10,2.刚刚超越:2、0和9、11。
2、次边界条件
  • 定义:又称内部边界条件,在软件内部,最终用户几乎看不到,但是软件测试员有必要进行检查。
  • 要求:大体了解软件的工作方式
3、默认、空白、空值、零值和无
  • 好的软件通常将输入内容默认为边界内的最小合法值,或者在合法划分中间的某个合理智,或者返回错误提示信息
  • 技巧:一定要考虑建立处理默认值、空白、空值、零值或者无输入等条件的等价划分
4、非法、错误、不正确和垃圾数据
  • 垃圾数据:数据测试最后一种类型,失效性测试的对象
  • 此类测试没有实际的规则,只是设法破坏软件,发挥创造力走偏门。

五、状态测试

  • 软件测试一方面测试数据,另一方面通过不同的状态验证程序的逻辑流程。
  • 软件状态:指软件当前所处的条件或模式
  • :软件测试员必须测试程序的状态及其转换
1、测试软件的逻辑流程
1、建立状态转换图
  • 注:状态转换图可能会变得非常庞大。许多开发小组在办公室墙上贴满了打印纸。如果预计状态图会如此复杂,那就找一些商业软件来绘制和管理
  • 状态转换图可表示:
    1)软件可能进入的每一种独立状态。如果不能断定是否是独立状态,他就可能是,不是再剔除
    2)从一种状态转入另一种状态所需的输入和条件。状态不可能无故存在,其原因使我们所寻找的
    3)进入或者退出某种状态时的设置条件及输出结果。
  • 提示:因为正在进行黑盒测试,所以不必了解代码中设置的底层变量。从软件用户的角度建立状态图即可
2、减少要测试的状态及转换的数量

五种实现方法:

  • 每种状态至少访问一次。如何到达不管,但是每种状态都必须测试
  • 测试看起来是最常见和最普遍的状态转换。
  • 测试状态之间最不常用的分支。
  • 测试所有错误状态及其返回值。
  • 测试随机状态转换。
3、怎样进行具体测试

测试状态及其转换包括检查所有的状态变量——与进入和退出状态相关的静态条件、信息、值、功能等。

2、失败状态测试

找到使测试软件失败的案例,如竞争条件、重复、压迫和重负

1、竞争条件和时序错乱
  • 多任务指操作系统设计用来同时执行多个独立的进程。
  • 定义:是指几个事件恰巧挤在一起,由于软件未预料到运行过程会被中断,以致造成混乱,也就是时序发生错乱。通俗而言就是——多个进程向终点线冲刺,不知道谁会首先到达。
  • 注:竞争条件测试难以设计,最好是首先仔细查看状态转换图中的每一个状态,以找出哪些外部影响会中断该状态。
2、重复、压迫和重负
  • 测试目标:处理那些程序员没有考虑到但在极端恶劣条件下可能发生问题的状态。
    1、重复测试
  • 定义:不断操作执行同样的操作。如不停启动关闭程序
  • 主要原因:检查是否存在内存泄露
    2、压迫测试
  • 定义:是软件在不够理想的条件下运行——内存小、磁盘空间少、CPU速度慢、调制调解器速率低等。
  • 将支持降到最低限度,目的在于尽可能的限制软件的必要条件。
    3、重负测试
  • 与压迫测试相反。压迫是尽量限制,重负是提供条件任其发挥。
  • 定义:尽量提供条件任其发挥,让软件处理尽可能大的数据文件。最大限度的发掘软件的能力,让他不堪重负。时间也是。
    :重复、压迫和重负测试应联合使用,同时进行。
    重复、压迫和重负测试有两个重要事项
  • 项目经理和小组程序员可能不完全接受软件测试员这样破坏软件的做法。
  • 无数次打开和关闭程序对于手工操作是不可能的。

六、其他黑盒测试技术

1、像笨拙的用户那样做

输入程序员无法想象的数据、中途变卦退回去执行其他操作、不遵循任何规则也不做任何假定

2、在已经找到软件缺陷的地方再找找

原因

  • 找到软件缺陷越多,就说明那里的软件缺陷越多。
  • 许多程序员倾向于只修复报告出来的软件缺陷,不多也不少。
3、像黑客一样考虑问题

从另外的角度考虑问题,如有价值的东西,黑客进入的方法等

4、凭借经验、直觉和预感

随着在职业生涯中不断提高,学习测试不同类型和规模的产品,就会得到各种提示和技巧以便更有效的找出令人技术哦的软件缺陷。按照与感性是,直至证实这是错误为止。

小测验

1、判断是非:在没有产品说明书和需求文档的条件下可以进行动态黑盒测试。
对。该技术称为探索测试,基本上把软件用作产品说明书。这不是理想的过程,但是急了也能用。最大的风险是不知道特性是否被遗漏。
2、如果测试程序向打印机输送打印内容,应该选用哪些通用的失效性测试用例?
可以尝试打印时不加纸或者使其卡纸。可以脱机打印,拔掉电源,断开打印机电缆。可以尝试在墨粉不足的条件下,甚至不加墨盒。为了明确所有的可能性,可以查看打印机的操作手册,找出支持的错误处理,设法建立使用的错误情况。
3、启动Windows写字板程序,并从File菜单中选取Print命令,打开如图5-12所示的对话框。左下角显示的Print range(打印区域)特性存在什么样的边界条件?
如果选择Page选项,From和To文本域就变为可用状态。明显的边界条件是零到99999,即文本域的最大值和最小值。参加测试254、255、256、1023、1024和1025等内部边界是明智的做法。此外,还有其他的内部边界。试着从只有6页的文档打印第1~8页。注意在本例中,软件必须在打印完第6页之后停止,是因为数据没有了,而不是接到停止命令。这是一个不同的内部边界。看看是否还能想出别的。
4、假设有一个文本框要求输入10个字符的邮政编码,如图5-13所示。对于该文本框应该进行怎样的等价划分?
至少应该有以下的等价划分,但是还可以想出更多:

  • 合法的5位数字邮政编码。合法是指所有字符都是数值,不是指投入使用的现有邮政编码—但这可以构成另一个区间。
  • 合法的九位数字(带连线的九位数字)邮政编码。
  • 5位以下数字。例如只有4位数字。
  • 9位以下数字。例如只有8位数字。
  • 5位以上数字。例如不带连线的8位数字。这是否与9位以下数字区间相同呢?
  • 9位以上数字,尽管不可能输入9位以上带连线的数字,但是测试员应该尝试一下。
  • 10位数字,无连线。与9位以上数字区间稍有差别。
  • 连线位置不对。
  • 连线不止一条。
  • 无数字和无连线。
    5、判断是非:访问程序的所有状态也确保了遍历各种状态之间的转换。
    错。想象游览遍布美国的50个不同城市。可以制定到达每个城市的旅游计划,但是不可能走遍所有城市之间的道路—这将是走遍美国的所有道路。
    6、绘制状态转换图有多种不同的方法,但是他们都具有三个相同要素是什么?
  • 软件可能处于的每一个状态。
  • 从一个状态转移到另一个状态所需的输入和条件。
  • 当进入和退出状态时产生的条件、变量和输出。
    7、Windows计数器程序的初始状态变量有哪些?
    初始显示值和内部中间值置为0。存储寄存器(MC、MR、MS和M+按钮)置为0。剪切板内容(暂存剪切、复制和珍粘贴数据)保持不变。
    另一个初始状态变量是计算机启动时出现在屏幕上的位置。打开计算器程序的多个副本,注意其位置不一定相同(至少Windows95/98中如此)作为一个探索测试的一个练习,看能否找出计算器打开时出现位置的规则。
    8、当设法显露竞争条件软件缺陷时,要对软件进行何种操作?
    尝试同时做几件事。他们可以是相关的,例如从一个应用程序同时向两台打印机输出打印;也可以是无关的,例如在计算机计算时按各种键。所做的目的是迫使软件执行某一功能时出现与自己竞争的状况。
    9、判断是非:在进行压迫测试的同时进行重负测试是不合情理的。
    错。任何测试都是合理的。软件测试员的任务是发现软件缺陷。但是,由于软件测试的实质,在这种情况下发现的任何缺陷可能都不会修复。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值