Testing 边界值分析-何时使用二值或三值?

Testing 边界值分析-何时使用二值或三值?,testing,boundary,Testing,Boundary,我有一些关于边值分析的问题,希望有人能帮我解决。我学习这个是为了一个基于ISTQB规范的大学考试,而不是为了现实世界的应用 第一个问题是——什么时候应该假设使用BVA的二值法和三值法?在什么时候应该使用其中一个或另一个方面有什么实际区别吗?还是取决于所问的具体问题(就考试而言),而我只需要知道如何使用这两个问题?是否有默认方法可供使用 第二,考虑这个可能的问题: 智能家居应用程序测量室内的平均温度 并针对不同的需求向住户提供反馈 平均温度范围: •高达10摄氏度–冰冷凉爽 •11摄氏度至15摄氏

我有一些关于边值分析的问题,希望有人能帮我解决。我学习这个是为了一个基于ISTQB规范的大学考试,而不是为了现实世界的应用

第一个问题是——什么时候应该假设使用BVA的二值法和三值法?在什么时候应该使用其中一个或另一个方面有什么实际区别吗?还是取决于所问的具体问题(就考试而言),而我只需要知道如何使用这两个问题?是否有默认方法可供使用

第二,考虑这个可能的问题:

智能家居应用程序测量室内的平均温度 并针对不同的需求向住户提供反馈 平均温度范围:
•高达10摄氏度–冰冷凉爽
•11摄氏度至15摄氏度-冷冻
•16摄氏度至19摄氏度-酷毙了
•20摄氏度至22摄氏度–太热
•22摄氏度以上-热且出汗
将3点BVA应用于上述温度范围。你会考虑多少个测试用例?

有人能解释一下为什么我们要在第一个分区(10度)中测试上边界,而不是在其他有效分区中测试上边界(例如15,这将导致我们测试14,15,16或19,从而导致测试18,19,20)。这是因为10的边界是该分区内的唯一边界,因为下边界是开放的吗

接下来,假设边界为:

•0摄氏度至10摄氏度–冰冷凉爽
•11摄氏度至15摄氏度-冷冻
•16摄氏度至19摄氏度-酷毙了
•20摄氏度至22摄氏度–太热
•23-40摄氏度-炎热多汗

然后测试的值是否会更改为以下值?我们是否仍然需要在第一个分区中测试上边界,或者我们现在忽略它,因为我们有一个下边界值

For the lower invalid partition -2, -1, 0
For the first valid partition: -1, 0, 1  
For the second valid  partition:   10, 11, 12
For the third valid  partition:   15, 16, 17
For the fourth valid  partition:   19, 20, 21
For the fifth valid  partition:   22, 23, 24
For the upper invalid partition: 40, 41, 42

提前谢谢你-我想我已经把事情复杂化了,并且为此绞尽脑汁了

3值边界不是严格要求的。例如,在你的例子中,9和10来自同一个等价类。就个人而言,我要么完全跳过9,要么跳过整个分区的值

在您的“提供的答案”中,“哪些案例与哪个分区相关”是任意的。11是一个“负”边界吗∞-10范围还是11-15范围的“正”边界?没有正确的答案。实际上,您只需填写以下8项检查,不标记哪一项是哪一个边界:

* 10     - Icy
* 11, 15 - Chilled out
* 16, 19 - Cool man
* 20, 22 - Too warm
* 23     - Hot and Sweaty
如果您决定使用“三值法”,并检查每个范围的非边界值,您将得到额外的5种情况,因为有5个范围

有趣的是,你的“提供的答案”是不一致的。每个等价类都检查了非边界值,除了“热汗”之外——列表上应该有24个,结果是13个

免责声明:这是一个从业者的回答。我还没有读过ISTQB,所以如果你需要这些信息来通过测试(而不是在实践中使用),请谨慎使用。

-

你说得有道理,我认为你引用的问题的作者犯了一个错误。按照ISTQB的定义(CTFL 2018,第4.2.2节):“每个边界有三个边界值:边界之前、处和上方的值。”

问题在于,几乎所有地方你看,给出的例子都是单一有效范围,两边都是无效范围(“几乎所有地方”包括Jorgensen的书,“软件测试,一种工匠的方法”,ISTQB教学大纲在本例中引用了该书作为参考)

按照上面的ISTQB定义,对于每个边界值,您需要重复“之前、之后和刚刚结束”分析。对于第一个示例,这将为您提供:

For 10 - we would test 9, 10, 11.  
For 11 - we would test 10 (already tested), 11 (already tested), 12  
For 15 - we would test 14, 15, 16
For 16 - we would test 15 (already tested), 16 (already tested), 17  
For 19 - we would test 18, 19, 20
For 20 - we would test 19 (already tested), 20 (already tested), 21
For 22 - we would test 21 (already tested), 22, 23

This would result in a a total of **14** test cases.
有一种方法可以解释答案中的12个测试,为此,你需要阅读2018年9月发行的《测试体验》杂志上RenéTuinhout的《边界值谬误》(祝你好运……我试了一下,但我找到的地方都要求我创建一个帐户)


在那篇文章之后,可以“合并”值12、14和值17、18(也就是说,使用其中一个进行测试就足以找到定义边界的代码中可能出现的错误类型)。但如果问题的作者(我理解的目标是基础层面)正在思考这个问题,我会感到非常惊讶。这绝对是一个高级主题。

谢谢您的回复。不幸的是,这是为了考试!再次感谢,是我的讲师提供给我的!
For 10 - we would test 9, 10, 11.  
For 11 - we would test 10 (already tested), 11 (already tested), 12  
For 15 - we would test 14, 15, 16
For 16 - we would test 15 (already tested), 16 (already tested), 17  
For 19 - we would test 18, 19, 20
For 20 - we would test 19 (already tested), 20 (already tested), 21
For 22 - we would test 21 (already tested), 22, 23

This would result in a a total of **14** test cases.