10.1. 测试用例

测试人员一直背负着效率低下的恶名。在大多数公司中,他们是中最不受重视的一个角色,在出现软件危机时,也是最先要受到“株连”的。我的一位担任测试经理的朋友,对此是深有感触。下面是他的牢骚:

您是否也遇到了同样的问题呢?

我们来帮助他寻找一下问题的症结所在吧。是什么原因导致测试的工作没有得到足够的重视呢?是因为看不到测试工作的价值。这又是为什么呢?测试工作没有秩序的,难以及时发现问题,当软件产品抱着极大的期望值上市的时候,漏洞百出,人们当然习惯性的反推,为什么没有能够测试出来?进一步会问,到底测试了哪些功能?如果这时测试部门回答不出,那么可能就要有人要承担责任了。这当然不一定是测试的错。但是测试部门能够拿出一整套测试用例文档,告诉项目经理,这些都是我们测试通过的。那么问题的焦点就回到了分析测试用例上了。是不是有发现问题的测试用例?如果有,是哪个测试人员的疏忽导致问题没有找到?如果是测试用例没有覆盖到,那么就应该借这个代价昂贵的机进一步补充和完善测试用例,确保不会再出现类似问题。

如果以上的分析大致正确的话,测试用例文档的积累,是重树测试部门形象的良机。DocBook正好适合这种需要持续积累的技术文档的撰写,再配合版本控制软件,建立一套可行的测试用例撰写和维护规范应该不难。当我把DocBook介绍给我的这位担任测试经理的朋友之后,他真的用 DocBook 改进了他的工作,得到领导的赏识。这不能不说是一个奇迹。

下面是改进的测试部门的工作流程:

图9-1,是一个DocBook撰写测试用例的示例,后面是其代码。

测试用例

图9-1. 用DocBook编写可以持续维护的测试用例

测试用例的 DocBook 源代码

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.2b1//EN"  [
<!ENTITY compname "<ulink url='mailto:yourname@email.address'>某某公司</ulink>">
]>
<article>
<articleinfo>
  <title>B2B网站测试用例汇总</title>
  <author><firstname>测试部</firstname></author>
  <revhistory>
    <revision>
      <revnumber>1.1</revnumber>
      <date>2002/12/11</date>
      <authorinitials>David</authorinitials>
      <revremark>添加测试用例2</revremark>
    </revision>
    <revision>
      <revnumber>1.0</revnumber>
      <date>2002/12/10</date>
      <authorinitials>Johnson</authorinitials>
      <revremark>添加测试用例1</revremark>
    </revision>
  </revhistory>
  <abstract>
    <para>
    本文档作为公司的测试部门的测试用例汇总,是测试部门测试工作中的参考。有任何补充和更改的需要,请用 CVS 从服务器中Checkout本文档的源代码,修改完毕后,提交 CVS 服务器。测试部门的内部网站会在每小时重新编译改动过的文档。
    </para>
    <para>
    &compname;, $Revision$, $Date$
    </para>
  </abstract>
</articleinfo>

<sect1><title>TESTB2B-0001</title>
<informaltable  frame='all'>	1
<tgroup cols='8' align='left' colsep='1' rowsep='1'>
  <colspec colname='c1'/>
  <colspec colname='c2'/>
  <colspec colname='c3'/>
  <colspec colname='c4'/>
  <colspec colname='c5'/>
  <colspec colname='c6'/>
  <colspec colname='c7'/>
  <colspec colname='c8'/>
<tbody>
  <row>
    <entry>项目编号</entry>
    <entry>B2B</entry>
    <entry>项目名称</entry>
    <entry>电子商务网站测试</entry>
    <entry>测试日期</entry>
    <entry></entry>			2
    <entry>测试人员</entry>		
    <entry></entry>
  </row>
  <row>
    <entry>测试用例编号</entry>
    <entry>TESTB2B-0001</entry>
    <entry>测试用例名称</entry>
    <entry>用户登录测试</entry>
    <entry>作者</entry>
    <entry>Johnson</entry>
  </row>
  <row>
    <entry>测试用例描述(方法和目的)</entry>
    <entry namest="c2" nameend="c8">
      <para>测试登录界面对不同浏览器的兼容性;</para>
      <para>测试异常输入对CGI的影响;</para>
    </entry>
  </row>
  <row>
    <entry>测试环境设置</entry>
    <entry namest="c2" nameend="c8">
      <para>测试平台:Windows 98 + IE4.0;Windows 98 + IE5.0;Windows 98 + IE6.0;Windows 2000 + IE5.0;Linux + Mozilla</para>
    </entry>
  </row>
</tbody>
</tgroup>
</informaltable >

<table  frame='topbot'><title>测试步骤</title>
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
  <colspec colwidth='1*'/>
  <colspec colwidth='20*'/>
  <colspec colwidth='10*'/>
  <colspec colwidth='5*'/>
<thead>
  <row>
    <entry>序号</entry><entry>操作</entry><entry>预期结果</entry><entry>实际结果</entry>
  </row>
</thead>
<tbody>
  <row>
    <entry>1</entry>
    <entry>
      <para>Windows 98 + IE4.0登录开发服务器:"http://10.0.0.99/servlet/login";</para>
      <para>输入用户名密码:test/test555</para>
    </entry>
    <entry>
      <para>登录成功,进入用户自定义界面。</para>
    </entry>
    <entry>
    </entry>
  </row>
  <row>
    <entry>2</entry>
    <entry>
      <para>Windows 98 + IE5.0登录开发服务器:"http://10.0.0.99/servlet/login";</para>
      <para>输入用户名密码:test/test555</para>
    </entry>
    <entry>
      <para>登录成功,进入用户自定义界面。</para>
    </entry>
    <entry>
    </entry>
  </row>
  <row>
    <entry>...</entry>
    <entry>
      <para>...</para>
      <para>...</para>
    </entry>
    <entry>
      <para>...</para>
    </entry>
    <entry>
    </entry>
  </row>
</table>

<note>
  <para>
  其他注意事项:
  </para>
</note>
</sect1>


<sect1><title>TESTB2B-0002</title>	3
<para>
...
</para>
</sect1>

</article>

1

不带标题行的表格。

2

作为模板,此项留空,在实际测试过程中,该表格打印,手工填写存档。

3

以追加方式增加新的测试用例。