当涉及到JUnit测试时,我正在尝试理解黑盒和白盒测试意味着什么。下面的代码会是白盒测试的一个例子吗?
UserTest.java:
@Test
public void test() {
assertEquals("John", User.name);
}
User.java:
public class User {
private final String name = "John";
}
如果有人能为我提供一个使用JUnit进行白盒测试和黑盒测试的具体例子,那就太好了,因为我看不清其中的区别。
最近,我参加了我的硕士课程软件工程课程的期末考试,其中一个问题是:
Unit Testing is considered:
a. White-box Testing
b. Black-box Testing
c. Either
在我7年的软件开发经验中,单元测试总是采用白盒方法。在编写测试时,测试人员始终对单元的实现有充分的了解。黑匣子测试总是以集成、系统和验收测试的形式出现。
然而,对考试的正确答案(根据教授)是,单元测试可以是白测试,也可以是黑箱测试。
我做了一些研究,似乎很多情况下“黑匣子单元测试”被用来描述一种测试优先的方法,其中单元测试是在代码编写之前编写的。然而,在我看来,这仍然是
我从迭代函数的角度学习了白盒和黑匣子测试。现在,我需要对几个递归函数(在F#中)进行白盒和黑匣子测试。以下是gcd的递归算法:
gcd (m, n)
if (m % n) = 0 then
n
else
gcd n ( m % n)
对于白盒测试:我如何准确地覆盖算法的不同分支?天真地可以说有两个分支,但是当函数被调用不止一次时,可能的分支就会明显增加。我是否应该使用导致不同数量递归调用的参数进行测试,或者如何准确地确定要测试的值?
黑匣子:我知道黑匣子测试的一般概念.我们应该考虑可能的值,我们可能想用它来调用函数,而不知道它的内部工作。在