本节中讨论的功能测试方法,是一些通用的测试方法,和具体业务无关,包括:
·单运行正常值输入法。
·单运行边界值输入法。
·多运行顺序执行法。
·多运行相互作用法。
1.什么是“运行”?
功能测试方法中都提到了运行,我们该如何理解“运行”这个概念呢?
定义:
运行:在软件测试中,测试人员模拟的用户的“操作”或“行为”。
单运行:在软件测试中,测试人员模拟的用户的“一个操作”或“一个行为”。
多运行:在软件测试中,测试人员模拟的用户的“多个操作”或“多个行为”。
也就是说,“运行”是指从用户的角度来
看,有意义的操作或行为。从功能的层面来说,一个“运行”确定了“输入”和“输出”的一种可能的情况,如图4-11所示。
其中“输入A1”和“输入A2”代表“功能1”允许输入的参数;“单运行操作1”的输入是“A1”,输出为“B1”;“单运行操作2”的输入是“A2”,输出为“B2”。
实际中,“用户写了一封电子邮件”“用户发送了一封电子邮件”“用户打了一个电话”“用户发了一条短消息”“用户提交了一个购物订单”等行为,都可以被称为一个“运行”。
有时候,我们会从设计的角度来划分功能,不能为用户提供一个完整的、有意义的行为,例如“用户和邮件服务器建立了一个新的连接”“邮件服务器删掉了和用户的连接”,这种细粒度的功能即使确定了输入和输出,都不算作“运行”。这时,可以将多个功能组合起来,直到这个功能能够为用户提供完整的、有意义的行为为止。图4-12描绘了在这种情况下,功能和运行的关系。
其中“输入A1”和“输入A2”代表“功能1”允许输入的参数;“输入C1”和“输入C2”代表“功能2”允许输入的参数。“单运行操作1”的输入是“A1”和“C1”,输出为“B1”;“单运行操作2”的输入是“A2”和“C2”,输出为“B2”,它们都涉及了“功能1”和“功能2”。
将多个“单运行”操作放在一起考虑,得到的结果就是“多运行”操作。图4-13就是“多运行”操作示意图。
实际中,“用户在发送电子邮件的时候又收到了一封电子邮件”“用户正在打电话的时候收到了一条短消息”都是“多运行”的例子。
理解了“运行”之后,我们就可以开始讨论功能测试方法了。
2.单运行正常值输入法
对图4-14来说,单运行正常值输入法就是测试时输入的“A1”和“A2”是系统允许的“正常值”的测试方法。
例如,对“用户发送电子邮件”来说,“收件人的邮箱名”“发件人的邮箱名”“邮件标题”“邮件内容”和“邮件优先级”都是测试输入。使用“单运行正常值输入法”来进行测试时,我们只需要测试正确“收件人地址”“发件人地址”“邮件标题”“邮件内容”和“邮件优先级”即可。
对一个功能的输入值来说,有时候系统允许输入的正常值的个数是有限的,例如“邮件优先级”的输入就是有限的(优先级分别为“高”“中”和“低”);有时候系统允许输入的正常值的个数又是无限的,例如“收件人的邮箱名”的输入就是无穷尽的。
对输入个数有限的情况,我们需要遍历这些取值;对输入个数无限的情况,我们可以使用“等价类”的思想将输入值分类,然后在每一类中选取一些测试值来进行测试,变无限为有限。
在实际中更常见的情况是,一个“运行”中存在很多输入,这些输入有些个数是有限的,有些个数无限的,而且这些输入之间可能还存在某种逻辑关系。我们将在后续讨论测试设计方法时,在“参数类”“数据类”和“组合类”中(4.4.4节)继续和大家一起讨论相关内容。
3.单运行边界值输入法
对图4-15来说,单运行边界值输入法就是测试时输入的“A1”和“A2”是系统的“边界值”的测试方法。
相信大家对“边界值”的概念不会感到陌生,最经典的例子是,假设某处允许的输入值是一个范围[1、10],这时0、1、10和11就是我们所说的“边界值”。
和“单运行正常值输入法”相比,“单运行边界值输入法”的测试数据包含了“正常输入”(如1和10)和“非法输入”(如0和11)。因此它既能测试到正常处理,又能测试到非正常处理。
以测试“用户发送电子邮件”为例,我们考虑的边界值是:
·收件人的数目为系统支持的最大数。
·收件人的数目为系统支持的最大数+1。
·收件人的数目为1位。
·收件人为空。
·邮件名为系统支持的最大长度。
·邮件名为系统支持的最大长度+1。
·邮件名为空。
·邮件长度为系统支持的最大长度。
·邮件长度为系统支持的最大长度+1。
·邮件长度为空。
……
既然“单运行边界值输入法”也能够测试正常值,是不是“单运行边界值测试法”能够替代“单运行正常值输入法”呢?
对于与此相关的测试设计方法,我们还将在4.4.4节中继续和大家一起展开讨论。
4.多运行顺序执行法
如果大家注意分析一下产品在功能方面的缺陷,就会发现一些问题在单运行的情况下并不会发生,而是在将多个单运行组合起来的时候才会发生。例如,可能会出现用户只打电话,打电话功能正常;只接收短信,接收短信的功能也正常;但是如果正在打电话的时候,接收到了一条短信息,这时打电话(或者接收短信)的功能就会出现问题。所以在进行功能测试的时候,我们还需要测试多运行情况下的功能正确性。
按照多个单运行的组合方式的不同,多运行下的测试方法又可以分为多运行顺序执行法和多运行相互作用法。我们先来说明多运行顺序执行法是怎样工作的。
多运行顺序执行法是指在功能测试时按照一定的顺序来进行多个运行操作的测试方法,如图4-16所示。
使用多运行顺序执行法进行测试时,分析各个运行之间的顺序性,是使用该方法的关键。
例如,我们要测试“用户收到一封电子邮件”和“用户发送一封电子邮件”这两个功能。这两个功能同时也是两个运行。
我们首先将这两个运行按照顺序组合起来,有下面几种情况:
(1)用户先收到一封电子邮件后,再发送一封电子邮件。
(2)用户先发送一封电子邮件后,再收到一封电子邮件。
然后我们需要分别分析一下,两种运行的组合是否具有一定的顺序性。容易分析出,第(2)种情况中,两个运行之间并没有这种顺序性。
我们再把注意力集中到第(1)种情况下,深入分析一下就能发现第(1)种情况又包含了两种情况(我们分别用①和②来编号):
①用户收到一封电子邮件后,再接着发送这封收到的电子邮件。
②用户收到一封电子邮件后,再发送一封任意电子邮件。
显然,在第②种情况下两个运行之间也是没有顺序性的;而在第①种情况下两个运行之间是有一定的顺序性的——我们必须按照先收邮件再发送邮件的顺序来进行这个操作,这个操作才是有意义的。因此,第①种情况就是我们通过使用多运行顺序执行法分析得到的测试点。
多运行顺序执行法在和用户的操作习惯相关的地方使用非常有效。
例如,用户登录、用户选择商品、用户提交订单这几个运行,有的用户的操作习惯是先登录,再选择商品;有的用户的操作习惯可能是先选择商品然后再登录。这就需要我们先分析这些操作可能的先后顺序再来进行测试。如图4-17所示。
此外,多运行顺序执行法也比较适合使用在功能的配置测试上。
例如在防火墙产品的测试中,完成一个“数据包过滤功能”的配置。最常见的配置思路是,依次配置接口、配置安全区域、将接口加入到安全区域中、在安全区域之间配置包过滤,如图4-18所示。
也许我们对防火墙产品的业务并不熟悉,但是从这个配置顺序中,我们还是容易看出这些配置之间存在一些顺序性。
(1)只有配置了“接口”和“安全区域”后,才能将“接口加入到安全区域”中。
(2)只有将“接口加入到安全区域中”了,才能在“安全区域之间配置包过滤”。
于是得到了如图4-19所示的测试点。
在多运行操作1和多运行操作2中未写出“在安全区域间配置包过滤”这个操作,是因为配置执行到“将接口加入到安全区域”中时就失败了,没有再写下面这个步骤的必要了。
我们还可以对上面配置测试略微扩展。以“将接口加入到安全区域”这个操作为例,容易想到,既然这个操作是建立在“配置接口”和“配置安全区域”之上的,那么我们在“将接口加入到安全区域”之后,就不能删除“接口”的配置和“安全区域”的配置。这样又扩展出了如图4-20所示的几个测试点。
我们还可以继续扩展,考虑“修改接口配置”“修改安全区配置”对“将接口加入到安全区域”的影响。
大家不妨按照上述的思路,试着扩展一下“在安全区域之间配置包过滤策略”这个操作需要考虑的测试点。
5.多运行相互作用法
多运行相互作用法是指在功能测试时把多个存在相互关系的运行组合在一起进行测试的方法,如图4-21所示。
还是以测试“用户收到一封电子邮件”和“用户发送一封电子邮件”这两个功能为例,来说明多运行相互作用法的使用方法。
和多运行顺序执行法强调多个运行之间的顺序性不同,多运行相互作用法强调的是多个运行之间的关系性,这个关系可以是外在关系,如某个业务的顺利进行需要多个运行之间相互协作;也可以是内在关系,如这些运行会用相同的资源(如内存或其他硬件资源)。
接下来我们来分析一下“用户收到一封电子邮件”和“用户发送一封电子邮件”这两个运行之间是否存在一定的关系性呢?容易想到,是存在这样的场景的,例如:
用户正在发送电子邮件的时候,又接收到一封电子邮件,即用户同时在进行收发电子邮件的操作。
我们前面提到的“正在打电话的时候,又接收到了一条短消息”,也是多运行相互作用法的例子。
需要特别指出的是,不知道大家有没有注意到,我们这里的操作,都是“针对一个用户”的操作场景,而不是“两个不同的用户同时发送邮件”或是“一个用户发送邮件,一个用户接收邮件”这样的场景。事实上,前者属于功能测试的范畴,而后者属于可靠性测试的范畴,我们接下来就会详细讨论与可靠性测试相关的方法。
本文选自《测试架构师修炼之道:从测试工程师到测试架构师》第四章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
根治白癜风北京白癜风医院怎么走