# （五）浅谈测试用例




<br>
#### 一、什么是测试用例？
----
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果，以便测试某个程序路径或核实是否满足某个特定需求。

通俗的讲：就是把我们测试系统的操作步骤用按照一定的格式用文字描述出来。

<br>
#### 二、写测试用例有什么好处？
----
* 理清思路，避免遗漏

这里是我们认为最重要的一点，假如我们测试的项目大而复杂，我们可以把项目功能细分，根据每一个功能通过编写用例的方式来整理我们测试系统的思路，避免遗漏掉要测试的功能点。

* 跟踪测试进展

通过编写测试用例，执行测试用例，我们可以很清楚的知道我们的测试进度。

* 历史参考

在我们所做的项目中，也许会有很多功能是相同或相近的，我们对这类功能设计了测试用例，便于以后我们遇到类似功能的时候可以做参考依据。

* 重复性

我们测试一个系统不是一个人测一遍就算测完的，需要多人反复的进行测试，那么我们就需要测试用例来规范和指导我们的测试行为。

<br>
#### 三、测试用例的方法
----
好吧，咱知道啥是测试用例了，也是知道为什么要写测试用例了，那到底应该怎么写？无从下手啊。我们在写测试用例之前，先学习几种方法，它是我们写测试用例的指导思想。

* 等价类划分

等价类是指某个输入域的一个特定的子集合，在该子集合中各个输入数据对于揭露程序中的错误都是等效的，也就是说，如果用这个等价类中的代表值作为测试用例未发现程序错误，那么该类中其他数据（测试用例）也不会发现程序中的错误。

__有效等价类：__ 输入满足程序输入的要求（来自规格说明书），通俗的说就是正确的输入。

__无效等价类：__ 输入不满足程序输入的要求，即异常输入，需要系统对此有一定的容错性。

例如：

一个输入框要求输入1-10000的数字

有效等价类：可以输入1-10000之间的数来验证，如：2、5、99、8495......

无效等价类：可以输入1-10000之外的任意字符验证，如：0、10001、字母、下划线、特殊符号、空格、回车.....

* 边界值

边界值是对等价类的补充，测试工作经验告诉我们，大量的错误是出在输入输出的边界价上。我们还拿上面的例子，一个输入框要求输入1-10000之间的数。我们要测它有没有超出这个范围，如：0、-1、-2、1000、10001.....等等，来判定是否超出了我们的范围。

* 因果图

因果图方法最终生成的就是判定表，它适合于检查程序输入条件的各种组合情况。举个例子：原因：A=0，B=0，结果我就可以判定：A=B。确切的说他是一种因果关系思想。它会无形中指导这我们的测试。当然了，我们为了以免遗漏，可以把系统中的因果关系用图画出。不过系统大而复杂的话就是个体力活了。呵呵。

* 错误推测法

基于经验和直觉推测出系统可能存在的错误，从而有针对性的设计测试用例的方法。

* 其它

设计测试用例的方法有很多，我们常用就上面几种，其它的方法还有：状态迁移图、流程分析法、正交验证法等等。

<br>
#### 四、测试用例的格式与要素
----
一个测试用例应该包括：编号，标题，测试场景，测试步骤，预期结果。

当然还可加入一些它选项，如：优先级、测试阶段....

```
编号：

标题:

测试环境：

测试步骤：

预期结果：

```

关于测试用例的存放管理：

1、项目管理系统自带的用例管理，一般用例会与项目挂钩，有固定的格式，搜索、修改等功能，使用起来非常方便。如：禅道项目管理、QC、bugfree 等等都带的有用例管理功能。

2、通过world\Excel文档形式管理，这样的好处就是自己定义测试用例的格式。

面来看一个具体的测试用例。我们会有更深刻的认识。

```
编号：001

标题: 系统登录测试用例

测试环境：
Windows 10/Chrome 58


测试步骤：
1、打开浏览器，输入系统网站，打开登录页面。
2、用户名密码为空，点击登录按钮
3、输入用户名，密码为空，点击登录按钮。
4、用户名为空，输入密码，点击登录按钮。
5、用户名正确，密码错误，点击登录按钮。
....


预期结果：
1、成功打开首页。
2、系统提示：用户名密码不能为空。
3、系统提示：密码不能为空。
4、系统提示：用户名不能为空。
5、系统提示：用户名或密码错误。
....

```
<br>
__最后__ ，写好测试用例，除了掌握基本的测试方法之外，最重要的是，要去深入理解业务需求。
从需求文档中抽出测试点；另外善于总结以往测试中发现的bug，完善测试用例。




原始封面

![课程图片](https://images.unsplash.com/photo-1515378791036-0648a3ef77b2?w=300)


