# 软件测试的基本概念

**本小节介绍一些软件测试领域内的常识性知识。**

## Fault-Error-Failure

在软件测试领域，通常会细分三个词：

1. Fault: an anomaly in the source code of a program that&#x20;

   may lead to an error
2. Error: the runtime effect of executing a fault, which may result in a failure
3. Failure: the manifestation of an error external to the program

下图能够帮助理解这三个概念间的关系。

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F011b8003dd51a07b00621b771f0a63c817d49805.png?generation=1603642631423495\&alt=media)

**还是太过抽象？没关系，我们来看一个实际的例子。**

下图这一小段代码隐藏有bug吗？

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F207a407c50c844543b4e05451eba814bcbd380ae.png?generation=1603642627635710\&alt=media)

圈中的地方就是Fault，它是错误的起源。

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2Fe7bbe3f9c2fd5d16ee0b7ee0c44a00aa7f504abf.png?generation=1603642617507455\&alt=media)

在选择了合适的测试用例的情况下，我们能在运行时获得Error，并且观察到Failure。

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F02dae3858d05262d9726921d250a3c1855b61e0c.png?generation=1603642627199248\&alt=media)

**注意：当选用的测试用例不合适时，尽管程序中有Fault，但我们不一定能观察到Failue。**

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F9f41d6ed334f6e0496c1f3155de7335e536a8ffc.png?generation=1603642632593992\&alt=media)

## 软件测试的目的

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F9a1ae3b8823ea8f34df36e0fe1ecda8c197d1e76.png?generation=1603642618506860\&alt=media)

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2Fba55d8c6f13f50221f1d96e78bda5d53a54f0607.png?generation=1603642619440402\&alt=media)

## 软件测试与开发的关系

常见的软件测试的过程模型有V模型，W模型，H模型和X模型等，一句话概括就是，测试活动应当与开发活动同时进行。对应的有两个经典概念：TDD和CI/CD。

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F19c85e1ce10cbc5c4293cf5cda51acd02385c84f.png?generation=1603642626804850\&alt=media)

![](https://1964533161-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKVXqbwDe9FvGtStGBP%2Fsync%2F2dc5ff9c641c6e283a615633bc2b875fb3fac3bb.png?generation=1603642629028554\&alt=media)
