6.2.1. 通用

关键术语(Terminology):

1. Unit testing
2. Regression testing
3. Integration testing
4. System testing
5. Test-driven development
6. Mock object
7. Test case
8. Test suite

单元测试(Unit testing):

根据规范测试程序单元的行为(本身)。当程序稍后由于某种原因被修改时,单元测试具有作为回归测试的重要功能,因为它们检查程序是否仍按照规范行事。

回归测试:

在对程序进行更改后运行一组测试,以检查程序的行为是否与更改之前的行为相同(当然,除了行为的任何有意更改)。单元测试作为回归测试很重要,但回归测试不仅涉及单元测试,还可能测试可能不属于正常规范的行为(例如bug-for-bug兼容性)。

集成测试:

测试一些单独开发的程序单元(假设已经单独进行过单元测试)按预期一起工作。根据所开发的系统,集成测试可能就像“只是另一级单元测试”一样简单,但也可能涉及其他类型的测试(比较系统测试)。

系统测试:

根据其规范测试完整系统的行为。具体而言,系统测试不应该要求了解有关实现的任何细节。它通常涉及测试系统行为的许多不同方面,除了基本功能,例如性能,可用性和可靠性。

测试驱动的开发:

一种程序开发技术,您可以在实现应该通过这些测试的代码之前连续编写测试。这可以帮助您专注于解决正确的问题,而不是通过让单元测试确定程序何时“完成”来实现比必要更复杂的实现:如果它满足其规范,则无需继续添加功能。

模拟对象:

有时,测试一些单元A(例如,一个函数)需要它与某些其他单元B以某种方式协作(可能作为参数或通过引用传递) - 但是B尚未实现。一个“模拟对象” - 一个对象,为了测试A的目的,看起来和行为就像一个真正的B  - 可能会被用来代替。 (当然,如果实现真实B比创建模拟对象要多得多,那么这当然有用。)

测试用例:

一个明确定义的单一测试,可以通过某种方式进行唯一识别。执行时,测试用例通过或失败;测试报告应准确确定哪些测试用例失败。

测试套件(Unit testing):

一组测试用例,通常具有特定的,共同的测试目标,例如单个函数,模块或子系统。 测试套件也可以由较小的测试套件递归组成。