测试用例的设计

什么是测试用例呢?测试用例对测试工作会起到怎样的作用呢?测试用例与需求文档之间存在什么样的关系呢?

 

测试用例的格式

举例说明

测试用例的设计_测试点

 

如果现在要对这个登录模块进行功能测试,那应如何测试呢?以下4个测试点是某同学在没有任何测试经验的情况下想出来的。

(1)输入正确的用户名和错误的密码测试能否登录成功。

(2)输入错误的用户名和错误的密码测试能否登录成功。

(3)用户名和密码都不输入的情况下测试能否登录成功。

(4)输入正确的用户名和正确的密码测试能否登录成功。

 

针对以上4个测试点,从中任选一个测试点来分析一下,例如直接选择第一个测试点:输入正确的用户名和错误的密码测试能否登录成功。

 

第一个问题,“输入正确的用户名和错误的密码测试能否登录成功”,这个测试点是针对邮箱的哪个模块进行测试的呢?在测试点中没有明确说明。

 

第二个问题,测试时如果网络不通畅,是无法进行这个登录测试的,所以测试前提条件就是要保证网络通畅,这一点也没有在测试点中说明。

 

第三个问题,邮箱登录功能是在什么环境下测试的呢?是在Mac操作系统上还是在Windows 10操作系统上测试的,用的是Safari浏览器还是Chrome浏览器,具体的测试环境在测试点中没有说明。

 

第四个问题,在输入用户名和密码前,测试人员是通过什么网址打开登录页面的,这一点在测试点中也没有说明。

 

第五个问题,“输入正确的用户名和错误的密码测试能否登录成功”,对测试人员而言是期望它登录成功还是登录失败呢?这在测试点中也没有明确写清楚。

 

对于以上几点,所以测试人员在最初设计测试点时,一定要把测试所针对的模块、测试的前提条件、测试所用到的环境、测试的具体步骤、以及测试人员想到得到一个什么样的预期结果等这些关键元素写清楚,以便在后期执行测试用例时能够顺利进行。结合以上几点,便可对“输入正确的用户名和错误的密码测试能否登录成功”这个测试点进行完善,具体内容如下。

 

此测试点针对的是某邮箱的登录模块,测试之前,确保网络是通畅的。首先在Windows 10操作系统中打开IE11浏览器,并在浏览器网址中输入该邮箱登录页面的网址http://mail.***.com,然后打开邮箱的登录页面,接着在用户名输入框中输入一个正确的用户名“test123”,在密码输入框中输入一个错误的密码“123456”,单击登录按钮,查看是否登录成功。测试人员期望的结果:邮箱登录不成功,并提示用户名和密码错误。

 

这样编写测试点后,就细致了很多,因为测试的关键元素都被写出来了。依据这个测试点的描述,即使不是测试人员,也能顺利执行。但这里有一个问题,如果每个测试点都写成一段话,那么登录模块的所有测试点会像是一篇文章,写的时候费力,读的时候也费时,无形地增加工作量。为了增强测试点的可写性和可读性,可以把一个测试点所必须包含的内容划分成9个基本元素,并通过表格的形式将它们展示出来

 

测试用例的设计_测试人员_02

从上表可以看到,这9个基本元素分别是测试序号、测试模块、前置条件、测试环境、操作步骤和数据、预期结果、实际结果、是否通过、备注。而原先测试点中的内容也被相应地分割,并把分割后的内容放置在了相对应的元素下面,这就构成了一个标准的测试用例。每个公司的规范可能不一样,有的还包括测试时间、测试人员、软件的版本名称、优先级等一些附加元素。

 

至此,已介绍完测试点演变成测试用例的整个过程了。通俗来讲,测试点就是一个测试用例的中心思想,或者说测试点就是设计测试用例的大纲;而测试用例是在测试点的基础上进一步细化了其中的内容。在实际的工作中,测试人员可采用Excel表格编写测试用例,也可以使用相应的测试管理工具编写。

 

测试用例的作用

开发人员在拿到通过评审的需求文档后,就会按照需求文档进行概要设计和详细设计的工作,然后再进入编码阶段,在开发人员进行软件开发的这段时间里,测试人员会设计出各模块的测试用例。待开发人员开发完成软件之后,测试人员就可以依据之前设计好的测试用例测试软件是否有问题,而不是等开发软件完成后,测试人员再去设计测试用例。

 

测试用例是测试人员具体执行测试的依据,它是非常关键的文档,它作为测试的标准并指导测试人员进行测试工作。测试人员会按照测试用例中的操作步骤和具体数据逐一执行测试用例,发现问题并提交Bug单,最终完善软件的质量。

 

测试用例与需求的关系

测试人员在设计软件测试用例时,这个软件并没有完成开发,没有明显的参照物可以给到测试人员,那此时测试人员是依据什么来设计测试用例的呢?其实测试人员是依据需求文档来进行测试用例的设计的。

 

需求文档包含了软件的所有需求规格,包括功能需求和非功能需求(例如性能安全方面的需求)等,其信息量很大,可能大部分的需求内容是初级软件测试人员暂时不涉及的,过早的展示会影响测试人员的学习理解。而初级软件测试人员需要关注的是需求文档里每个功能模块的需求,因为初级软件测试人员主要做的是功能测试。接下来,就选取某需求文档中的一个片段,该片段描述的是某网站登录模块的功能需求说明。

 

(1)功能描述:对用户进行身份验证,只有输入了正确的用户名和密码的用户才能成功登录到网站首页;当输入错误的用户名或密码时,则无法登录到网站首页,并会给出相应的提示信息。

 

(2)该网站登录原型界面如图

测试用例的设计_用户名_03

(3)输入项:登录模块的输入项包括用户名输入框、密码输入框、确认登录按钮。

(4)输出项:登录模块的输出项有两个情景,一个是成功登录到网站首页,另一个登录失败时的提示信息。


  • ① 登录成功:用户直接进入到网站首页。
  • ② 登录失败:系统将给出提示的信息

测试用例的设计_功能需求_04

(5)输入框限制:用户名和密码的取值范围

测试用例的设计_测试人员_05

上面的需求项似乎有点多,把以上的需求项整合一下就变成了如下图的形式,这样就清晰了很多。

 

测试用例的设计_测试人员_06

在这里只展示了登录模块的功能需求,需求文档会对软件中每个模块的功能都进行相应的需求说明,这些说明包括每个模块的功能描述、原型界面、输入项、输出项、数据的取值范围等信息,所以测试人员不用担心没有“参照物”。

 

有了需求文档这一详细的“参照物”后,测试人员就有了设计测试用例的依据。(补充一点:正如前文所述,工作中如发现需求文档中有不详细或存在歧义的地方,要及时与产品人员沟通确认。)