单元测试和功能测试之间的区别是什么?单元测试也可以测试函数吗?
当前回答
我认为它是这样的:单元测试确定代码执行了您希望代码执行的操作(例如,您想要添加参数A和b,实际上是将它们相加,而不是减去它们),功能测试测试所有代码一起工作以获得正确的结果,因此您希望代码执行的操作实际上在系统中获得了正确的结果。
其他回答
单元测试——测试单个单元,例如类中的方法(函数),模拟所有依赖项。
功能测试——又名集成测试,测试系统中的一部分功能。这将测试许多方法,并可能与数据库或Web服务等依赖项交互。
根据ISTQB的说法,这两者没有可比性。功能测试不是集成测试。
单元测试是测试级别的一种,功能测试是测试的一种。
基本上:
一个系统(或组件)的功能是“它做什么”。这是 通常在需求规范中描述的是功能性的 规范,或者用例。
而
组件测试,也称为单元、模块和程序测试, 查找软件的缺陷,并验证软件的功能 (例如模块、程序、对象、类等),它们是分开的 可测试的。
根据ISTQB,组件/单元测试可以是功能性或非功能性:
组件测试可能包括功能测试和特定的非功能特征,如资源行为(例如内存泄漏)、性能或健壮性测试,以及结构测试(例如决策覆盖率)。
引用自软件测试基础- ISTQB认证
我们可以很简单地说:
黑盒:用户界面测试,比如功能测试 白盒:类似单元测试的代码测试
点击这里阅读更多。
TLDR:
回答这个问题:单元测试是功能测试的一个子类型。
有两大类:功能测试和非功能测试。我发现的最好的(非详尽的)例子是这个(来源:www.inflectra.com):
(1)单元测试:测试小段代码(函数/方法)。它可以被认为是(白盒)功能测试。
当功能放在一起时,你创建了一个模块=一个独立的部分,可能有一个可以测试的用户界面(模块测试)。一旦你有了至少两个独立的模块,然后你把它们粘在一起,然后就来了:
(2)集成测试:当你把两个或多个(子)模块或(子)系统放在一起,看看它们是否能很好地发挥作用。
然后你整合了第3个模块,然后是第4和第5个模块,按照你或你的团队认为合适的顺序,一旦所有的拼图碎片放在一起,就完成了
(3)系统测试:对软件进行整体测试。这差不多就是“所有部件的集成测试”。
如果没问题,那就来吧
(4)验收测试:我们实际构建了客户要求的东西吗?当然,验收测试应该在整个生命周期中进行,而不仅仅是在最后一个阶段,在这个阶段,你意识到客户想要一辆跑车,而你建造了一辆货车。
单元测试告诉开发人员代码的工作是正确的;功能测试告诉开发人员代码正在做正确的事情。
你可以在单元测试与功能测试中阅读更多内容
单元测试和功能测试在现实生活中的类比可以描述如下:
Many times the development of a system is likened to the building of a house. While this analogy isn't quite correct, we can extend it for the purposes of understanding the difference between unit and functional tests. Unit testing is analogous to a building inspector visiting a house's construction site. He is focused on the various internal systems of the house, the foundation, framing, electrical, plumbing, and so on. He ensures (tests) that the parts of the house will work correctly and safely, that is, meet the building code. Functional tests in this scenario are analogous to the homeowner visiting this same construction site. He assumes that the internal systems will behave appropriately, that the building inspector is performing his task. The homeowner is focused on what it will be like to live in this house. He is concerned with how the house looks, are the various rooms a comfortable size, does the house fit the family's needs, are the windows in a good spot to catch the morning sun. The homeowner is performing functional tests on the house. He has the user's perspective. The building inspector is performing unit tests on the house. He has the builder's perspective.
总结一下,
单元测试是从程序员的角度编写的。它们用于确保类的特定方法(或单元)执行一组特定的任务。
功能测试是从用户的角度编写的。它们确保系统按照用户的期望运行。
推荐文章
- 尝试模拟datetime.date.today(),但不工作
- 如何用python timeit对代码段进行性能测试?
- Angular 2单元测试:找不到名称“describe”
- 如何断言两个列表包含相同的元素在Python?
- 使用XUnit断言一个异常
- 断言对象是特定类型
- 如何使用Jest测试对象键和值是否相等?
- 确定bash中是否存在一个函数
- 使用Moq验证特定参数
- 如何为python模块的argparse部分编写测试?
- python中的assertEquals和assertEqual
- 如何使用“测试”包打印Go测试?
- 如何在IntelliJ中为整个项目配置“缩短命令行”方法
- toBe(true) vs toBeTruthy() vs toBeTrue()
- 使用Mockito测试抽象类