什么是SUT,它的来源是什么?

98

我看到很多人谈论SUT这个词,但不理解为什么他们使用那个术语。

SUT是你想要测试的东西吗?

这个术语来自哪里,意思是什么?

例如,在这个测试中,我的SUT是什么?

[TestMethod]
public void UsersAction_should_return_IndexAction()
{
    const long id = 1;

    UsersViewModel viewModel = new UsersViewModel()
    {
        SelectedUsers = new long[] { 1, 2, 3, 4 }
    };

    ActionResult result = _controller.Users(id, viewModel);

    result.AssertActionRedirect().ToAction("Index");
}
6个回答

115

从单元测试的角度来看,被测系统(SUT)代表测试中的所有参与者(即一个或多个类),这些参与者不是模拟对象或存根。在您的示例中,这将是控制器。


当然,模拟和存根不是被测试系统的一部分。这并不是SUT的定义,也没有解释为什么这个术语存在。正确的定义由xUnit测试模式提供,您可以在此处找到:http://xunitpatterns.com/SUT.html。 - Hadi Brais

17

这很可能意味着“测试系统”,即被测试的系统,与其交互但未明确进行测试(因为这是其他人的责任)。


15

这个术语起源于哪里?

DUT(被测设备)和UUT(被测单元)是测试工程师(非软件测试工程师)中非常常见的缩写词。这就是 SUT(被测系统)和 CUT(被测代码)应该来自的地方。

相关:
2008 年 MSDN 博客文章“命名 SUT 测试变量”


13

我之前也从未听说过这个术语,但是快速搜索得到:

被测系统 (SUT) 是指正在测试正确操作的系统。[...] 这个术语主要用于软件测试。

软件系统的一个特例是应用程序,在测试中被称为被测应用程序。

SUT 这个术语还可以指软件的成熟度阶段,因为系统测试是测试周期中集成测试的后继。

以上内容来自于古老可靠的Wikipedia


现在快速搜索指向这个页面 ;) - malat

3

被测试系统,英文缩写为SUT

在你的单元测试示例中,如果你真的想讨论 SUT,那么可能是指 UsersAction。然而,在谈论单元测试时,我还没有遇到过任何人使用 SUT 这个词。对我来说,这听起来更像适用于集成/系统/性能测试或类似测试的术语。

例如,对于性能测试。在这里,你可以说 SUT 是整个硬件/软件系统,或者它可能只是其中一个,具体取决于你在该特定性能测试中要测试什么。


2

区分被测系统和测试系统是很重要的。
被测系统可以是测试系统的一部分,如下图所示:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接