跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

一种使用 Lotus Domino 数据库管理测试文件提高测试效率的方法

高效管理测试文件提高测试效率

宗 东军, 软件测试工程师, IBM
宗东军,是 IBM 中国软件开发中心的一名软件测试工程师。目前从事应用软件的功能测试工作。
刘 哲, 高级软件工程师, IBM
刘哲,2007 年加入 IBM,从事 Lotus Workforce Management 项目的研发,现在负责 Lotus Symphony 的自动化测试工作。
闫 霁, 软件测试工程师, IBM
闫霁, 是 IBM 中国软件开发中心的一名软件测试工程师。目前从事应用软件的功能测试工作。

简介: 软件测试的核心要素是测试用例和测试数据。如何对测试用例和测试数据进行管理决定测试的效率,Test Case Database 是基于 Lotus Domino 的一种测试用例管理数据库,有着广泛的应用。很多软件测试中测试数据以文件的形式存在,测试过程也就可以分解为获取测试文件和使用测试文件。如何对测试文件进行管理直接影响测试的效率,本文将介绍一种使用 Lotus Domino 数据库管理测试文件并同 Test Case Database 进行无缝整合,提高测试效率的方法。

发布日期: 2011 年 12 月 27 日
级别: 初级
访问情况 : 546 次浏览
评论: 


引言

软件测试中的核心要素是测试用例和测试数据。一般成功的软件项目中会有大量的测试用例和测试数据,如何对测试用例和测试数据进行管理决定着测试的效率。通常软件都具有输出功能,软件的输出一般以文件的形式存在,因此在测试过程中就存在测试文件,也就需要对测试文件进行管理。如何管理大量的测试文件,使其方便的应用于测试项目对测试团队有很大的价值,本文探讨如何通过管理测试文件提供测试效率


问题分析

对测试文件管理的最直观方法是:使用一台文件服务器对测试文件进行存储,通过对文件目录进行分类,通过对文件夹设置权限,赋予不同的用户不同的权限。使用测试文件时,需要用户根据测试文件存在的目录访问文件服务器,获取测试文件。当测试文件数量比较少,业务模型比较简单的情形下,使用文件服务器对测试文件进行管理,比较有效。但当测试文件达到一定的数量级后,要对上万个测试文件进行管理,不仅需要建立大量的文件目录,还需要建立很深的层次结构,每个文件夹下都会有大量文件,想要定位到一个测试文件,非常困难,因此如果仍使用文件服务器的方式对测试文件进行管理,对使用者和管理者来说都非常不容易。而且使用文件服务器进行管理,只能以一个视角来管理这些文件,无法提供多个试图来看这些文件。

使用文件服务器管理测试文件在测试过程中,测试者需要花费大量的时间去寻找对应测试用例所需的测试文件,测试管理者也无法根据不同的测试阶段和目的,去关注特有的测试文件,因此需要改进测试文件的管理方法,提高测试的效率。如图 1 所示。


图 1. 传统管理测试文件方法
图 1. 传统管理测试文件方法

解决思路

测试文件是针对于测试用例而存在的,测试根据不同的测试目的的角度可分为功能测试,性能测试,多语言测试等,根据不同测试执行方法可以分为手工测试,自动化测试等。因此不同的阶段,不同的人员对测试的需求是不同的,因此对测试文件的关注点也是不同的。单纯的文件服务器管理只能提供单一的目录信息,很难满足不同阶段,不同角色的需求。如何提高管理测试文件的效率,从而提供测试的效率,需要基于管理测试文件和测试用例的工具来判断。因为测试是一个有生命周期的过程,涉及多个方面。要改进测试文件的管理方法需要同时考虑测试用例和测试过程的管理方法。

通常改进测试流程提高测试效率需要基于特定的测试管理工具。如何提高软件测试的效率有很多种方法,一般主要涉及选择使用更先进的测试管理工具,改进测试流程等。更换测试管理工具不仅需要大量的时间和精力去把已有的测试文档和数据迁移到新的工具,还需要时间学习如何使用新的测试工具,同时也存在新的测试管理工具是适用于现在测试项目的风险。如何能在现有测试管理工具的基础上提供测试效率往往更容易被接受,而且风险很小。因此如何改进测试流程,提高测试效率具有现实的意义。因此本文主要介绍如何在使用 Lotus Test Case Database 的基础进行测试文件的管理方法。


基于 Lotus Domino 的测试文件管理方法

Lotus Test Case Database 是基于 Lotus Domino 的测试用例的管理工具,它可以在 Lotus Notes 中方便的对测试用例,测试执行进行管理,本文主要探讨如何在使用 Lotus Test Case Database 作为测试管理工具的基础上进行高效的管理测试,从而提高测试效率。Lotus Domino 有对文件进行管理的能力,而 Lotus Test Case Database 也是基于 Lotus Domino 的测试管理工具,因此本文介绍一种易于和 Lotus Test Case Database 进行整合从而增强 Lotus Test Case Database 的能力,提高测试效率的测试文件管理方法。主要包括(1)测试文件的上传;(2)测试文件管理数据库和 Lotus Test Case Database 的整合,测试文件数据库和 Lotus Test Case Db 相互通信和访问,从测试用例数据可以直接访问到测试文件,测试文件数据库使用测试用例数据库的描述信息等;(3)权限的管理,对不同的级别的用户进行有效的管理;(4)批量上传测试文件(5)批量下载测试文件(6)提供多种视图供用户使用,如自动化测试用户,只关心自动测试需要的测试文件等;(7)管理者视图。

测试文件的上传

Domino 数据库可以方便的管理文档,每个文档标识每个测试据文件,每个测试文件存储多个数据信息。我们用一个 Form 来描述测试文件包括:目录(Category),需求(Requirements),测试阶段(Test Phase),测试文件对应的软件版本(Release ),文件格式(File format),产生测试文件的操作系统(OS ),是否自动化(Automated),作者(Author),描述信息(Description),测试文件(Test file)。详细说明如表一所示:

表 1. 测试文件信息表

Category : 用于对测试文件进行组织分类
Requirements : 需求信息,用于描述是在什么需求下产生了这个测试文件
Test Phase: 用于描述测试文件可以哪个测试阶段,如 FVT,GVT,PVT 等
Release : 用于描述测试文件是用于哪个产品版本
Source : 用于描述测试文件的来源,如测试人员,客户,互联网等
File format : 文件的格式
OS : 用于描述测试文件测试文件产生的系统
Application : 用于描述测试文件生成应用程序
Automated : 用于描述测试文件是否用于自动化测试用例
Author : 用于描述测试文件的作者
Description : 其它用于描述测试文件的信息
Test file : 用于存放测试数据文件

这样一个测试文件有多个描述信息,可以根据不同的目的对测试文件进行组织和展示,满足不同用户的需求。在 Lotus Symphony 的测试项目中,我们便使用这种方法来描述每个测试文件。如图 2 所示


图 2. 测试文件
图 2. 测试文件

测试文件数据库和 Lotus Test Case Database 的整合

测试文件针对于测试用例而存在,因此测试文件管理工具和测试用例管理需要能够相互访问,集成在一起,就能更大的发挥各自的能力,提高工作效率。测试文件管理数据库需要和 Lotus Test Case Database 共享一些信息。Lotus Test Case Database 中的目录信息和需求信息是用于组织和描述测试用例,同样可以用于描述测试文件,因此我们需要读取 Lotus Test Case Database 中的目录和需求信息。下图是 Lotus Test Case Database 的一个截图,如 Macro-->API 是一个功能的划分目录。


图 3. Lotus Test Case Database
图 3. Lotus Test Case Database

读取 Lotus Test Case Database 目录核心代码片段如下


清单 1. 代码片段
				
 Dim session As New NotesSession 
  Dim workspace As New NotesUIWorkspace 
  Dim db As NotesDatabase 
  Dim collection As NotesDocumentCollection 
  Dim uidoc As NotesUIDocument 
  Dim pickdoc As NotesDocument 
  Set uidoc = workspace.CurrentDocument 

  Set db = session.CurrentDatabase 
  Set collection = workspace.PickListCollection( _ 
  PICKLIST_CUSTOM,  _ 
  False,  _ 
  "GREATWALL/OPENS",  _ 
  "S_Dir\SYMPHONY20-TCDB.nsf",  _ 
  "Functions",  _ 
  "Select Category",  _ 
  "Please select a Category." ) 
  If collection.Count = 0 Then 
  Else 
    Set pickdoc = collection.GetFirstDocument 
    Call uidoc.FieldAppendText("Category", "," + pickdoc.FullTitle(0)) 
 End If 

测试文件是为测试用例而存在的,因此需要访问测试用例的同时能方便的访问测试文件。因此需要在 Lotus Test Case DB 中访问测试文件数据库。如何把不同的信息系统进行整合从而发挥更大的作用,是当今信息系统的一个难点。而 Lotus Test Case Db 和本文介绍的测试文件管理数据库都是基于 Lotus Domino 的数据库,因此具备了相互通信,整合的基础。我们知道在 Domino 数据库中每个文档可以以 link 的形式存于在其它文档中,在其它文档中可以方便的访问此文档,因此我们只需要把测试用例所需要的测试文件对应的文档 link 保存到测试用例中,在 Lotus Test Case DB 中便可以做到快速定位到需要访问的测试文件,不需要在文件服务中那样层层访问目录,最后在众多的文件中找到所需要的文件。


图 4. 测试文件存在形式
图 4. 测试文件存在形式

权限管理

测试文件是测试团队和整个项目的重要资产,因此需要保证测试文件的安全,这就需要有访问权限管理功能。基于 Lotus Domino 我们可以方便的来对用户的访问权限进行管理,我们只需要对每个测试文件存在的文档设置 Reader 和 Editor 两个字段,只要在 Reader 和 Editor 的权限列表里的用户才可以访问相应的文档,当上传文档的时候,设置其 Reader 和 Editor 的值。


图 5. 测试文件权限
图 5. 测试文件权限

其中 Reader 和 Editor 的值如下所示:

list:=@DbLookup("":" NoCache "; "";" Source"; Source; 2); //Source 为存放用户列表的试图

listcon:=@If(@IsError(list); ""; @Unique(list));

其中 Source 用于划分目录所对应的访问者列表,如来自客户的文件只能被极少数的人访问,

测试组创建的文件可以被大部分访问等。我们用一个列表来记录权限列表,达到更低级别的权限访问控制。如 Team 代表了测试 team 创建的测试文件,其下对应的 A Group -1 代表数据库所在服务器的群组,A/Name/China/IBM 代表单个用户。这样基于 Domino 服务器可以对用户权限达到组和个人用户的权限访问控制。


图 6. 权限定义
图 6. 权限定义

批量上传

测试中会有生成和创建大量的测试文件,如果有大量的测试文件,逐个文件上传到测试文件管理数据库会浪费大量的时间,因此需要提供批量处理测试文件的能力此我们提供了批量上传文件到测试文件数据库的方法。主要代码列表如下:


清单 2. 批量上传文件
				
 Dim ws As New NotesUIWorkspace 
  Dim filenames As Variant 
  Dim collection As NotesDocumentCollection 
  Dim pickdoc As NotesDocument 
  Dim docr As NotesDocument 
  filenames = ws.OpenFileDialog(True, "Select sample Files to import database",,"c:\") 
  If Isempty(filenames) Then 
    Msgbox "Please select files!",48,"Sample Files"
    Exit Sub 
  End If  
  Dim session As New NotesSession 
  Dim db As NotesDatabase 
  Dim doc As NotesDocument 
  Dim rtitem As NotesRichTextItem 
  Dim object As NotesEmbeddedObject 
  Dim authorItem As NotesItem 
  Dim readerItem As NotesItem 
  Dim view As NotesView 
  Dim sourcedoc As NotesDocument 
  Dim curuser As NotesName 
  Dim Crprofile As NotesDocument 
  Set db = session.CurrentDatabase 
  Set curuser = session.CreateName(session.EffectiveUserName) 
  Set view = db.GetView("Source") 
  Set Crprofile = db.GetProfileDocument("dlgPhase",session.UserName) 
  If ws.DialogBox("dlgPhase",True,True,False,False,False,False,"Select......",
  Crprofile,False,False) Then 
    Forall o In filenames 
      If FileExist(db,o) = 0 Then 
        Set doc = db.CreateDocument 
        doc.form = "FileInfo"
        doc.SubmitDate = Now() 
        doc.Submiter = curuser.Abbreviated 
        doc.Category = Crprofile.Category(0) 
        doc.Requirements = Crprofile.Requirements(0) 
        doc.TestPhase = Crprofile.TestPhase(0) 
        doc.Release = Crprofile.Release(0) 
        doc.Source = Crprofile.Source(0) 

        Set sourcedoc = view.GetDocumentByKey(Crprofile.Source(0)) 
        If Not sourcedoc Is Nothing Then 
          Set readerItem = New NotesItem(doc, "Readers", "[DB Admin]",READERS) 
          Set authorItem = New NotesItem(doc, "Editors","[DB Admin]",AUTHORS) 
          Call readerItem.AppendToTextList(sourcedoc.Owners) 
          Call authorItem.AppendToTextList(sourcedoc.Owners) 
          Call readerItem.AppendToTextList(curuser.Canonical) 
          Call authorItem.AppendToTextList(curuser.Canonical) 
        End If 
      
        doc.FileFormat=Crprofile.FileFormat(0) 
        doc.OS = Crprofile.OS(0) 
        doc.Application = Crprofile.Application(0) 
        doc.Automated = Crprofile.Automated(0) 
        doc.Description = Crprofile.Description(0) 
        
        Set rtitem = New NotesRichTextItem(doc, "Attachment") 
        Set object = rtitem.EmbedObject(EMBED_ATTACHMENT, "", o) 
        seccess = doc.ComputeWithForm(False, False) 
        Call doc.Save(True,True) 
      Else 
        Msgbox o+" is already in DB, and it can not be attached."
      End If 
    End Forall 
  End If 
  Call Crprofile.Save(False, False) 

批量下载

对于不同的测试类型,不同的测试阶段,使用测试文件的方法需要也不会相同。例如对自动化测而言,只需要得到所有自动测试用例所对应的测试文件即可。也就是说自动化测设者对所有自动化测试脚本用的文件感兴趣,他们只需得到所有自动化测试脚本用的测试文件即可,不需要逐一去获取测试文件,在测试用例中去得到测试文件,为了方便下载测试文件,需要提供了批量下载测试文件的功能。部分代码如下:


清单 3. 批量下载
				
 Dim ws As New NotesUIWorkspace 
  Dim filenames As Variant 
  filenames = ws.SaveFileDialog(True, "Select sample Files to import database",,"c:\") 
  If Isempty(filenames) Then 
    Msgbox "Please select files!", 48, "Sample Files"
    Exit Sub 
  End If  
  Dim session As New NotesSession 
  Dim db As NotesDatabase 
  Dim dc As NotesDocumentCollection 
  Dim doc As NotesDocument 
  Dim rtitem As Variant 
  Set db = session.CurrentDatabase 
  Set dc = db.UnprocessedDocuments 
  If dc.Count = 0 Then 
  Else 
    Set doc = dc.GetFirstDocument 
    While Not doc Is Nothing 
      Set rtitem=doc.GetFirstItem("Attachment") 
      If rtitem.type=RICHTEXT Then 
        Forall o In rtitem.EmbeddedObjects          
          If o.Type=EMBED_ATTACHMENT Then 
            Call FolderExists(filenames(0), doc.Category(0))            
            Call o.ExtractFile(filenames(0) + "\" + doc.Category(0) + "\" + o.Source)
          End If        
        End Forall 
      End If 
      Set doc = dc.GetNextDocument(doc) 
    Wend 
  End If 

多种视图

上文中我们提到测试者在不同的阶段和不同的用户角色都有着不同的关注点,因此需要有不同的展现方式。Lotus Domino 数据库中有视图的功能,可以方便的对数据进行不同的展示,在本文介绍的测试文件管理数据库中同样使用了多个视图来展现测试文件。如一般一个测试人员负责一块产品功能,可能测试过程中一般只用到本人所创建的测试文件,这样通过 By Author,便可以按照用户创建者进行分类,从而方便的定位自己关注的测试文件。


图 7. 视图
图 7. 视图

管理者视图

数控的管理者可以对描述测试文件的信息进行定制,从而可以更好的应用于自己的项目。即对上文中介绍的如 Test Phase,OS,Application 等所对应的值进行定制。

在 Lotus Symphony 测试项目中,项目初期我们采用了 Lotus Test Case Database 作为和文件服务器来管理测试文件,之后测试文件数量达到了 2 万个以上,在测试执行过程中需要大量的时间去定位到测试用例所需要的测试文件,同时自动化测试者需要自己来收集和保存哪些文件是用于自动化测试的,需要耗费大量的时间和精力。因此我们开发了测试文件管理数据库来管理测试文件,同时和 Lotus Test Case DB 进行了集成,极大的提高了测试效率,方便了测试管理和执行。


总结

本文结合 Lotus Symphony 测试项目中遇到的问题,介绍了一种基于 Lotus Domino 的测试文件管理方法,这种方法能和 Lotus Test Case Database 进行无缝整合,大大提高了测试的效率,节省对测试进行管理和执行的时间。


参考资料

学习

讨论

作者简介

宗东军,是 IBM 中国软件开发中心的一名软件测试工程师。目前从事应用软件的功能测试工作。

刘哲,2007 年加入 IBM,从事 Lotus Workforce Management 项目的研发,现在负责 Lotus Symphony 的自动化测试工作。

闫霁, 是 IBM 中国软件开发中心的一名软件测试工程师。目前从事应用软件的功能测试工作。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Lotus
ArticleID=783101
ArticleTitle=一种使用 Lotus Domino 数据库管理测试文件提高测试效率的方法
publish-date=12272011

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。