内容


根据自动化回放报告自动创建缺陷

来自 IBM Rational Software Architect 测试周期的一个案例分析

Comments

IBM® Rational® Software Architect 基于 Eclipse 平台,为设计 Java™、C++、BPMN 和基于 Web 的应用程序提供了一个建模和开发环境。它提供了一个平台来使用基于 UML(Unified Modeling Language,统一建模语言)的模型和图表及模型驱动的开发功能,以便创建应用程序的架构。

“为了测试 Rational Software Architect 对新 UML 模型和图表的支持,我们使用了一个自动化流程来围绕相关功能运行测试案例。但是,我们需要手动创建缺陷来对失败的测试案例进行归档。为了节省时间和提高效率,我们创建了脚本来自动化缺陷归档流程。”

本文将介绍如何使用两个实用程序来创建和使用一个自动化的缺陷创建流程,这两个实用程序包括一个基于 Selenium 的工具和一个基于 Rational Team Concert API 的自定义工具。

完成此流程的要求

要开发一个自动化的缺陷创建流程,请确保您满足以下前提条件:

  • 输入文件:一个包含缺陷数据的 Excel 电子表格,如图 1 所示。
图 1. 包含缺陷数据的 xcel 文件
示例输入文件的屏幕截图
示例输入文件的屏幕截图
  • 遇到过缺陷的情形:一个在运行自动化测试之后创建的 Excel 电子表格。故障以某种特定格式存储在该电子表格中,包括一个屏幕截图的链接,如果适用的话,还可以包括一个堆栈轨迹。
  • 再现缺陷的步骤:来自为其运行自动化脚本的测试案例的步骤。如果自动化脚本失败,则会在 Excel 电子表格的 Description 列中包含该测试案例的链接。
  • 测试脚本是否符合条件:指示能否根据有关联的缺陷是否已解决来运行测试脚本。

在本文中,IBM® Rational® Functional Tester 是回归套件的自动化工具。它在每次自动运行之后创建输入文件。

自动化创建缺陷的实用程序和流程流

可以使用两个实用程序之一来自动化缺陷创建流程。两个实用程序都接受使用一个 Excel 电子表格作为输入,二者都被连接到缺陷管理工具(在本例中为 Rational Team Concert)来创建包含所需数据的缺陷。

如图 2 所示,该实用程序是完全自动化测试周期所需的最后一步。

图 2. 使测试周期完全自动化的实用程序
测试周期的自动化的流程图
测试周期的自动化的流程图

两个实用程序使用的输入文件

两个实用程序都从 Excel 电子表格读取数据,并存储用于创建缺陷的变量。清单 1 显示了一个使用 Java™ 编程语言编写的简单脚本。此代码逐行读取数据,将数据传递给该实用程序来创建缺陷。

清单 1. 从 Excel 电子表格读取输入的示例代码
for(int row=1;row<sheet.getRows();row++){
defSummary = sheet.getCell(0, row).getContents();
pRodVersion = sheet.getCell(1, row).getContents();
defFeature = sheet.getCell(2, row).getContents();
defDescrition = sheet.getCell(3, row).getContents();
defScreenshot = sheet.getCell(4, row).getContents();
defStackTrace = sheet.getCell(5, row).getContents();
defSeverity = sheet.getCell(6, row).getContents();
foundDuring = sheet.getCell(7, row).getContents();
automationVersion = sheet.getCell(8, row).getContents();
howFound = sheet.getCell(9, row).getContents();
}

基于 Selenium 的实用程序

此实用程序独立于缺陷管理工具。它仅要求缺陷管理工具有一个 Web 界面。清单 2 给出了专门为 Rational Team Concert 的 Web 界面编写的代码。该代码使用变量(在清单 1 中定义)作为输入数据,这些数据被提交给 Rational Team Concert 来创建工作项。

清单 2. 使用基于 Selenium 的实用程序在 Rational Team Concert 中创建缺陷的示例代码
//Defect Creation page

//Populate defect's summary
driver.findElement(By.xpath(".//*[@id='
com_ibm_team_workitem_web_mvvm_view_editor_RichTextEditorView_0']/div[2]")).sendKeys(defSummary) ;

//Populate defect's severity
Select sevDropdown = new Select(driver.findElement(
By.xpath(".//*[@id='com_ibm_team_workitem_web_mvvm_view_ComboAttributeView_0']/select")));
      sevDropdown.selectByVisibleText(defSeverity);

//Populate defect's how found property
Select hwFound = new Select(driver.findElement(By.xpath(
".//*[@id='com_ibm_team_workitem_web_mvvm_view_ComboAttributeView_2']/select")));
      hwFound.selectByVisibleText(howFound);

//Populate defect's found in property
Select foundInDrop = new Select(driver.findElement(By.xpath(
".//*[@id='com_ibm_team_workitem_web_mvvm_view_ComboAttributeView_2']/select")));
      foundInDrop.selectByVisibleText(foundIn);

//Populate defect's filed against property
driver.findElement(By.xpath(".//*[@id='category']")).sendKeys(fileAgainst) ;

//Populate defect's description
driver.findElement(By.xpath(".//*[@id=
'com_ibm_team_workitem_web_mvvm_view_editor_RichTextEditorView_1']/div[2]"
)).sendKeys(defDescrition) ;

//Submit the defect
driver.findElement(By.xpath(".//*[@id=
'com_ibm_team_workitem_web_ui_internal_view_editor_WorkItemEditorHeader_0'
]/div[1]/span[1]/button[2]")).submit() ;

基于 Rational Team Concert 的实用程序

这个实用程序创建来使用 Rational Team Concert API 访问和创建缺陷,该应用程序基于来自 Excel 电子表格的数据创建工作项。基于 Rational Team Concert API,可以在 Rational Team Concert 的客户端或服务器端调用这个 Java 程序。清单 3 中的 Java 代码是在客户端上调用的,缺陷使用 Rational Team Concert API 创建。

清单 3. 使用 Java 实用程序在 Rational Team Concert 中创建缺陷的示例代码
private String defSummary;
private ICategoryHandle defFileAgainst;
private IWorkItemType defType;
private String defSeverity;
private String defFoundIn;
private String defDescription;

public CreateWorkItem(String summary, ICategoryHandle category, IWorkItemType type, 
String severity, String foundIn, String description) {

   defSummary = summary;
   defFileAgainst = category;
   defType = type;

   defSeverity = severity;
   defFoundIn = foundIn;
   defDescription = description;
   
}

@Override
protected void execute(WorkItemWorkingCopy workingCopy, IProgressMonitor monitor) 
throws TeamRepositoryException {

   //Getting handle to IWorkItem interface, which in turn provides access to the 	
   //required fields and properties to create a defect
   IWorkItem workItem= workingCopy.getWorkItem();
//Populate defect's summary
   workItem.setHTMLSummary(XMLString.createFromPlainText(defSummary));

   //Populate defect's filed against property
   workItem.setCategory(defFileAgainst);

   //Populate defect's type
   workItem.setType(defType);

   //Populate defect's severity
   workItem.setSeverity(defSeverity);

   //Populate defect's found in property
   workItem.setFoundIn(defFoundIn);

   //Populate defect's description
   workitem.setHTMLDescription(XMLString.createFromPlainText(defDescription));
}

结束语

自动化的缺陷创建流程提供了多种好处:

  • 自动化最终的手动流程:自动化的缺陷创建流程消除了测试周期最后的手动操作部分。
  • 提高生产力:自动化的缺陷创建流程节省了测试团队的时间和精力,使他们可以集中精力改善自动化和测试。
  • 自动化手动测试的缺陷创建:此流程可用于为手动测试时期间发现的问题创建缺陷。如果缺陷管理工具发生故障,那么测试人员可以将测试数据添加到输入文件中,在缺陷管理工具恢复在线状态时运行该实用程序。因此,测试人员可以在服务中断期间继续测试和创建缺陷。
  • 提供测试进度快照:管理团队可以监视产品的健康情况并了解测试进度。
  • 保持与缺陷管理工具的独立性:基于 Selenium 的实用程序可用于自动化任何缺陷管理工具上的缺陷创建,只要这些工具具有 Web 界面。

相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=985582
ArticleTitle=根据自动化回放报告自动创建缺陷
publish-date=10092014