如今,软件测试已成为创建产品的关键过程之一。 无论您以何种方式使用方法论,方法,过程或软件测试,都始终存在于过程中。 近年来(甚至十年),软件测试已演变为一个单独的IT领域,并在全球范围内不断发展。
是的,今天我们将讨论普通的手动(功能)测试仪,而不会偏向自动化,工作量和其他技术测试类型!现在,手动测试人员的职业是最受欢迎的IT流程之一,也是进入IT的最简单方法之一。
怎么了
因为测试人员什么都不做,所以他们不需要知识。 每个人都可以测试!因为在初始阶段,手动测试人员的职业不需要特定的知识和技能。 测试人员的主要“知识”是“破坏”和分析思维的能力。 最重要的是-具有非标准的心态,找到针对任务的平凡解决方案。 一个知道如何粉碎和破坏的怪物:)
总是可以教硬技能,但不幸的是,软技能很难教,因为这是人的性格,对事物的态度等。 通常,我会对那些正在招募手工测试硬技能专家的经理们产生疑问。 你为什么这样做? (您可以在评论中留下答案)好吧,让我们继续:)
如果我们考虑手动测试人员应该知道的测试技术特征,那么它们可以分为两个主要部分,
也许很多人会与我不同意,他们会大声疾呼,这是你的错,测试非常困难 -这是为测试和测试做准备。
我们将考虑测试中最有趣,最有趣的部分-准备测试。 在测试过程的这一部分,它取决于您自己执行测试的程度和正确性,发现必要的缺陷并确保
客户(或合作伙伴的产品)的
满意面容,实施后任务
的质量。
你们中的许多人以一种或另一种方式参与测试,正在为测试做准备。 通常差异仅在于您在测试过程的这一阶段正式化了多少。 如果您正在进行研究测试,请不要编写测试脚本,它们会
为您提供一个系统,并且您立即进入战斗状态,无论如何,您都在为测试做准备。 通常,在简单的项目中,测试人员可能不会注意到这一点,因为分析和测试准备阶段是在无意识的水平上进行的。 但是即使如此,他仍然在那里。
在本系列文章中,我们将讨论这一点。
在我的工作场所中,我经常为手持式测试仪提供培训,并且遇到一些情况,每个人似乎都听说过测试设计技术,但没人在工作中使用它们。
看起来像这样:
- 为什么我们需要测试设计技术?
- 正确识别测试的验证。
- 您在工作中使用它们吗?
- 明确没有,我们自己确定需要检查的内容。
为什么会这样呢? 毕竟,测试设计技术是测试脚本编写的基础。 这与能够驾驶汽车相同,但不知道交通规则。 测试人员为什么不在工作中使用它们?
答案很简单。
首先,当测试人员在测试课程中学习(或在书本和文章上进行自学)时,他们会被告知如何将测试设计技术应用于基本示例。 这种培训的主要问题是测试人员无法将获得的知识转移到他们的实际任务中。 也就是说,在日常工作中使用测试设计技术。
其次,在教授测试设计技术时,此过程非常正规化,似乎测试人员需要将其工作中的所有内容都正规化。 通常没有人需要这个。
简而言之,测试设计技术是一组规则,可让您正确地确定要进行测试的检查列表。 最重要的是
始终随地使用这些规则:)以便能够在直观的水平上应用这些规则。 出色的测试人员才是“在头脑中进行分析”的能力!
在我的组织中,以及公认的标准和实践,测试设计的任务是:
- 测试要求和风险分析
- 定义测试支票
- 以测试脚本的形式对检查进行形式化
- 优先检查
- 定义测试方法
在本系列文章中,我将不仅向您介绍测试设计技术,还向您介绍如何在实践中使用所有这些技术(即全部使用,而不是特定的一种或两种),包括银行功能的示例。 如何使用大型系统和过程的测试设计技术生成测试检查。 最重要的是,您将获得何时何地应用测试设计技术的答案。
因此,让我们开始吧。
我们将从最简单的一种开始,即每个人都听说过的两种主要的测试设计技术,我相信它们已经应用了,但很可能是在他们的工作中以直观的方式进行的。
这些是等价类和边界值。
什么是等效类?
等效类是一组输入(或输出)软件数据,这些数据由程序根据一种算法处理或导致一个结果。
也就是说,这是一组值,您可以在程序中替换它们并获得相同的结果。 结果不仅可以是特定值,程序操作,还可以是范围。 因此,将测试分为的最简单的对等类是2个主要类:正面和负面场景。
他们总是在那里。 每个测试人员将支票划分为这些类,但并非每个测试人员都知道为什么要这样做。 答案是等效类。
此外,每个等效类可以划分为其他类,等等。 直到检查不会导致具体的测试结果为止。
考虑一个例子:评分系统根据客户的年龄计算其贷款利率,格式如下:
- 18至25岁-18%
- 25至45岁-16%
- 45年以上-20%
我们定义了2个主要类别-这些是
正面和负面场景。
正方案将是导致结果的所有值,负方案将是其结果未描述为预期结果的值。
接下来,我们将积极情景的类别分为输入值18-24、25-44和45 +的3个类别
在否定场景类中,我们根据检查程序失败的需要来形成值,因此我们有0、1-17,负值,字符输入等。
此分区的结果将是一个值或一个值范围,其中我们只需要对数据范围中的任何值执行一次检查。 可能会出现诸如范围内单个值之类的情况。 这也是一个单独的等效类,还需要验证。
总共有。
- 肯定检查:输入值:19、30、48(值可以是班级中给定范围的任何值)
- 否定检查:0、3,-1,A等。
测试设计技术不能独立于其他技术应用,这一点非常重要! 现在,我们分别研究它们,但最后我将教您如何一起使用它们。
等价类的另一个特征是它们的应用。 我区分了测试设计技术的3个应用级别,以准备进行测试。
- 第一层是检查系统的元素(例如,字段,复选框,按钮等)
- 第二级 -在将数据合并到系统元素中时检查系统逻辑
- 第三层是检查系统的业务流程和程序的逻辑。
在视觉上,它看起来像这样:
等效类与第一级更相关,并且用于测试程序元素。 但是从思想上讲,这种方法可以应用于其他级别。
检查任何元素的组成部分是另一种技术-
边界值 。
边界值是对等价类的补充,从而完全覆盖了软件元素的检查。
边界值是一种测试设计技术,它通过在条件边界处进行附加检查来补充等效类。
看来一切都很简单!
让我们回到前面的例子。
评分系统根据客户的年龄计算其贷款利率,格式如下:
- 18至25岁-18%
- 25至45岁-16%
- 45年以上-20%
这里的边界是什么?
如果您在哈布拉(Habra)页面上考虑字段的长度,或者在温暖的国家度假,我想让您感到不安,这不是真的:)
确定边界值还需要其他什么。 即,确定哪些值是我们班级的起点和终点。 和最重要的事情! 在测试领域的多年研究表明,大多数缺陷是由测试人员在改变程序工作条件的值的交界处发现的。
因此,除了边界值之外,我们还使用另外两个值进行测试:边界之前的值和边界之后的值。
结果,我们有:
我们班级的界限:17、18、19、24、25、26、44、45、46和最高。
另外,我们有一个负数类,它是从0到18。因此,在这里,我们还必须使用边界值进行测试:-1、0、1、17、18
接下来,我们排除重复值,并获得用于检查数据输入元素的值。
-1,0,1,17,17,18,19,24,25,26,44,45,46,max。
最大值通常由客户或分析师指定。 如果您无法提供,则应将其删除而不进行检查,您需要选择与常识相对应的值(几乎没有人会在100岁时就贷款)。
下一步是在等价类的值上施加边界值,使用“一个值足以检查一个类”规则排除不必要的检查,并最终确定列表。
如果之前我们为3类19、30和48有3个值,那么在确定边界值之后,我们可以从列表中排除值30和48,并用边界前值替换它们,例如26(而不是30)和46(而不是48)。
不仅为数字值确定边界值,而且还为字母值(例如,字母和编码的边界),日期和时间以及语义值确定边界值。 数值的边界取决于输入格式,如果您有整数,例如2,则边界值将是1和3。如果是小数,则数字2的边界将已经是1.9(1.99)或2.1( 2.01)等
1级测试设计技术简单明了。 我想您会说这很容易,但是为什么要彻底检查每个元素。 而且你会是对的!
它们通常用于新软件的开发中,因为一旦在开发过程中检查了系统的元素,它们随后就不会经常在元素级别上发生变化。 您无需经常检查程序每个屏幕中的每个元素值,但请记住,如果程序元素的处理逻辑发生了变化,则需要重新验证是否正确处理了元素值。
好吧,太容易了??? 现在,我们将开始分析更复杂的技术,并做好准备。测试软件时,级别2的测试设计技术人员负责数据的可变性和组合性。
测试设计的主要技术是
分段测试(成对测试) 。 该技术的本质是最大程度地减少足以确保高质量软件的检查组合的可变性。
简而言之,在此技术中应用了Pareto规则,仅20%的数据组合检查就可以实现80%的质量。
该技术是通过IEEE在系统缺陷原因分析领域超过15年的研究而开发的。 研究结果表明,当输入数据对或一个输入参数发生冲突时,所有缺陷中的98%会发生。
为什么选择这对夫妇?
潜入数学统计和概率论的丛林中寻找答案 。
当然,我们今天不会去那里。概率论对于简单的IT专家来说太复杂了,一切都很简单,用6张面孔的普通骰子游戏。
令值2的损失为缺陷,则投掷立方体时发生缺陷的概率为1/6 = 0.167。
如果我们掷出2个骰子,那么落下2个破洞(2个缺陷)的概率变得更低,等于0.167 * 0.167 = 0.028,其中3个已经为0.005,依此类推。
事实证明,由3个或更多参数组成的组合出现缺陷的可能性很小,可以将其丢弃。
当我们测试程序时,总是有n个影响结果的元素,例如,用于填写贷款申请数据的表单。 有n个字段可共同给出结果。 填写我们使用成对测试检查的字段时,它是数据的组合。
让我们看一个银行中远程卡设计功能的例子。
如果我们仔细看,我们将看到五个数据字段:
我们使用一级技术的任务是确定程序可以采用的等效类的列表。
重要的是,在使用成对测试技术时,我们并不是在谈论测试结果。 对我们而言,在填写应用程序时检查数据的可变性很重要。
所以
全名字段可以采用值(类):
如果测试人员不受输入能力的限制,那么很多时候测试人员都不知道该选择哪种值。 例如,如果我们有机会选择一个人的性别M或F,那么一切都很简单,有2种含义。 但是,当我们有一行数据输入时,则在成对测试中,我们不会检查填充特定字段的正确性,因为 这些检查应在测试设计的第一级进行(或将其与成对测试结合使用)。 我们在此字段中使用等价类,因为我们不在乎它的价值是什么。
我们走得更远,
生日 ,
手机,系列和护照号码也可以有3个状态:
因为
电子邮件是可选的,此字段具有2个值:
复选框通常只有两种状态-Y或N。
要检查此表格的所有组合,我们需要进行1000多个测试,但是使用成对测试,我们仅需要9个测试!
魔术,我不认为:)
下一步是用数据组合组成正交数组。 编译数组的最简单方法是成对填充数据,从具有最大数量值的元素开始然后递减。 由于在我们的示例中,有4个元素具有相同数量的值,因此我们可以选择任何一对。
我们采用全名和护照号码系列。 我们的任务是对给定对中的所有值进行排序:
遍历一对后,我们创建另一对,并开始遍历值(例如,手机号码)
我们连接下一个元素,依此类推,直到整个表格完全填满,如下所示:
因此,我们获得了9个具有特定等效类的测试,可以引入这些测试来测试表单的数据可变性。 我们可以使用第1级测试设计技术将您获得的特定值填充到类中。
在本文的总结中,我将说,所审查的测试设计技术仅涵盖测试程序的部分检查,即检查程序元素的正确操作及其在操作过程中组合的结果。 在第二部分中,我们将继续进行测试设计技术,使您能够运用测试的奇迹来测试程序和流程的逻辑。 这是手动测试的非常重要的组成部分,而正是您经常在工作中进行测试!
希望对您有所帮助!