Logo Trilium Web Clipper

什么是 Unit Testing?- Unit Testing 详解 - AWS

文章图片

单元测试是一个代码块,用于验证较小、孤立的应用程序代码块(通常是函数或方法)的准确性。单元测试旨在根据代码块背后的开发人员理论逻辑检查其是否按预期运行。单元测试只能通过输入和捕获的断言(true 或 false)输出与代码块进行交互。 

单个代码块也可以有一组单元测试,称为测试用例。一整套测试用例涵盖了代码块的全部预期行为,但并不总是需要定义完整的测试用例集。

当一个代码块的运行需要系统的其他部分时,不能将单元测试与此外部数据结合使用。单元测试需要隔离运行。代码的功能可能需要其他系统数据,例如数据库、对象或网络通信。如果是此情况,则应该改用数据存根。为逻辑上简单的小型代码块编写单元测试是最简单的工作。

单元测试策略#

若要创建单元测试,您可以遵循一些基本技巧来确保涵盖所有测试用例。

逻辑检查#

给定正确的、预期的输入,系统是否执行正确的计算并遵循通过代码的正确路径? 给定的输入是否涵盖通过代码的所有路径?

边界检查#

对于给定的输入,系统如何响应? 系统如何响应典型输入、边缘用例或无效输入?

假设您期望输入的整数介于 3 和 7 之间。当您使用 5(典型输入)、3(边缘用例)或 9(无效输入)时,系统会如何响应?

错误处理#

当输入中出现错误时,系统会如何响应? 是否提示用户输入其他内容? 软件是否会崩溃?

面向对象的检查#

如果通过运行代码更改任何持久对象的状态,则该对象是否正确更新?

单元测试示例#

以下是 Python 中一个非常基本的方法的示例,以及一些带有相应单元测试代码的测试用例。

Python 方法#

def add_two_numbers(x, y):

    return x + y

对应的单元测试#

def test_add_positives():

    result = add_two_numbers(5, 40)

    assert result == 45

def test_add_negatives():

    result = add_two_numbers(-4, -50)

    assert result == -54

def test_add_mixed():

    result = add_two_numbers(5, -5)

    assert result == 0  


文章图片

单元测试是一个代码块,用于验证较小、孤立的应用程序代码块(通常是函数或方法)的准确性。单元测试旨在根据代码块背后的开发人员理论逻辑检查其是否按预期运行。单元测试只能通过输入和捕获的断言(true 或 false)输出与代码块进行交互。 

单个代码块也可以有一组单元测试,称为测试用例。一整套测试用例涵盖了代码块的全部预期行为,但并不总是需要定义完整的测试用例集。

当一个代码块的运行需要系统的其他部分时,不能将单元测试与此外部数据结合使用。单元测试需要隔离运行。代码的功能可能需要其他系统数据,例如数据库、对象或网络通信。如果是此情况,则应该改用数据存根。为逻辑上简单的小型代码块编写单元测试是最简单的工作。

单元测试策略#

若要创建单元测试,您可以遵循一些基本技巧来确保涵盖所有测试用例。

逻辑检查#

给定正确的、预期的输入,系统是否执行正确的计算并遵循通过代码的正确路径? 给定的输入是否涵盖通过代码的所有路径?

边界检查#

对于给定的输入,系统如何响应? 系统如何响应典型输入、边缘用例或无效输入?

假设您期望输入的整数介于 3 和 7 之间。当您使用 5(典型输入)、3(边缘用例)或 9(无效输入)时,系统会如何响应?

错误处理#

当输入中出现错误时,系统会如何响应? 是否提示用户输入其他内容? 软件是否会崩溃?

面向对象的检查#

如果通过运行代码更改任何持久对象的状态,则该对象是否正确更新?

单元测试示例#

以下是 Python 中一个非常基本的方法的示例,以及一些带有相应单元测试代码的测试用例。

Python 方法#

def add_two_numbers(x, y):

    return x + y

对应的单元测试#

def test_add_positives():

    result = add_two_numbers(5, 40)

    assert result == 45

def test_add_negatives():

    result = add_two_numbers(-4, -50)

    assert result == -54

def test_add_mixed():

    result = add_two_numbers(5, -5)

    assert result == 0