您认为哪种类型的测试应该是重点(对于测试人员/ QA),为什么?
维基百科的一组快速定义:
黑盒测试
从测试对象的外部透视图中获取测试用例.这些测试可以是功能性的或非功能性的,但通常是功能性的.测试设计者选择有效和无效的输入并确定正确的输出.不了解测试对象的内部结构.
白盒测试
使用系统的内部透视图来设计基于内部结构的测试用例.它需要编程技能来识别软件中的所有路径.测试人员选择测试用例输入来遍历代码并确定适当的输出.在电气硬件测试中,可以探测和测量电路中的每个节点; 一个例子是在线测试(ICT).
编辑:为了澄清一点,我意识到两者都很重要,但通常它们在开发和QA之间是分开的.
内部知识对测试人员/ QA很重要吗?我听说过用这些知识进行测试的论据使他们能够更好地测试问题,但我也听到过这样的论点,即这些知识可以分散功能需求并促进"测试代码"而不是预期的解决方案.
黑盒测试应该是测试人员/ QA的重点.
白盒测试应该是开发人员的重点(即单元测试).
回答这个问题的其他人似乎已经将这个问题解释为哪个更重要,白盒测试或黑盒测试.我也相信它们都很重要,但你可能想看看这篇IEEE文章,声称白盒测试更重要.
白盒测试等于软件单元测试.开发人员或开发级别测试人员(例如另一个开发人员)确保他编写的代码在将其集成到系统之前根据详细级别要求正常工作.
黑盒测试等于集成测试.测试仪确保系统根据功能级别的要求工作.
在我看来,这两种测试方法同样重要.
完整的单元测试将在开发阶段捕获缺陷,而不是在软件集成到系统中之后.系统级黑盒测试将确保所有软件模块在集成在一起时表现正常.开发阶段的单元测试不会发现这些缺陷,因为模块通常是相互独立开发的.
黑盒子
1重点介绍系统的功能重点介绍系统的结构(程序)
2使用的技术是:
·等价划分
·边界值分析
·猜错
·比赛条件
·因果图
·语法测试
·州过渡测试
·图表矩阵
测试人员可以是非技术性的
有助于识别功能规范中的模糊性和矛盾性
白盒子
使用的技术是:
·基础路径测试
·流程图表示法
·控制结构测试
条件测试
数据流测试
·循环测试
简单的循环
嵌套循环
连锁循环
非结构化循环
测试员应该是技术性的
帮助识别逻辑和编码问题.
QA应该专注于黑盒测试.质量保证的主要目标是测试系统的功能(功能是否符合要求?),而不是它是如何做到的.
无论如何,QA应该很难进行白盒测试,因为大多数QA人员都不是技术人员,因此他们通常通过UI测试功能(如用户).
更进一步,我认为开发人员也应该专注于黑盒测试.我不同意单元测试和白盒测试之间广泛的关联,但它可能只是一个词汇/规模的问题.在单元测试的规模上,被测系统是一个具有契约(通过其签名)的类/方法,重要的是测试它的作用,而不是如何.此外,白盒测试意味着你知道该方法将如何填补其合同,这似乎与TDD不兼容.
恕我直言,如果您的SUT非常复杂,需要进行白盒测试,那么通常是重构的时候.