您的位置:软件测试 > 开源软件测试 > 开源测试管理工具 > Testlink
使用TestLink管理软件自动化测试过程
作者:网络转载 发布时间:[ 2016/3/29 14:16:26 ] 推荐标签:测试管理工具 自动化测试

  从测试计划中获取测试用例信息
  测试计划 TestPlan 是使用 TestLink 管理自动化测试过程的切入点,通过指定测试计划的名称作为参数,编写代码自动化获取测试用例的信息,进而获取测试用例的脚本文件信息并完成脚本文件的执行。本部分介绍如何通过编程从测试计划中获取测试用例信息。本文使用第三方 Java 程序 TestLink Java API 请参考本系列的第一部分。
  在调用 TestLink Java API 之前,需要先实例化 TestLinkAPI 实例对象,代码清单如下。关于如何获取个人访问密钥 devKey ,请参考本系列文章的第一部分。
  清单 1. 获取 TestLinkAPI 实例
public class APIObject {
private static Logger logger = Logger.getLogger(APIObject.class);
private static TestLinkAPI api = null;
public static TestLinkAPI getAPI() {
if (null == api) {
String url = "http://localhost/testlink/lib/api/xmlrpc.php";
String devKey = "92b9cc5fc38e1ebde8813ff219ce5a07";
logger.debug("URL=" + url);
logger.debug("devKey=" + devKey);
try {
api = new TestLinkAPI(new URL(url), devKey);
} catch (TestLinkAPIException te) {
logger.error(te.getMessage(), te);
} catch (MalformedURLException mue) {
logger.error(mue.getMessage(), mue);
}
}
return api;
}
}
  借助上述实例化 api 对象,接着可以获取测试计划中的测试用例信息。使用测试计划获取测试用例信息的代码清单如下。需要指定的参数为测试项目的名称和测试计划的名称,返回的是测试用例数组。。在调用 getTestCasesForTestPlan() 方法时,只使用了执行类型 ExecutionType.AUTOMATED 对返回的测试用例数组进行过滤,可以根据项目组情况,添加更多的过滤条件。
  清单 2. 获取测试用例信息
  String planName="kenneth 测试计划 ";
  String projectName= " 测试演示 ";
  TestLinkAPI api = APIObject.getAPI();
  TestPlan tl = api.getTestPlanByName(planName,projectName);
  TestCase[] tcs=api.getTestCasesForTestPlan(tl.getId(), null, null,null,null,null,
  null,null,ExecutionType.AUTOMATED,null,null);
  for(TestCase tc:tcs){
  logger.debug(tc.toString());
  }
  测试脚本上传
  使用 TestLink 管理自动化测试脚本的优势之一是,很容易复用维护在 TestLink 上的功能自动化测试用例。自动化测试团队负责对现有的测试用例进行分析,划定需要作为自动化测试执行的用例部分。编写自动化测试用例脚本,并上传到相应的测试用例的附件部分。这样自动化测试与其相应的自动化测试脚本文件可以一一对应起来。编写完毕自动化测试脚本后,访问 Testlink 站点,点击主页的 Test Specification 链接,导航到相应的测试用例节点上,双击定位到的用例,可以进入用例编辑页面。手工上传附件非常简单,如图 2 所示。上传之后,显示附件的标题,附件的文件名称,文件大小,文件的 MIME 类型和附件的上传日期等。点击附件标题超链接可以下载附件到本地。


图 2. 手工上传附件到测试用例

  除了手工上传测试用例脚本文件外,还可以通过类似下面的编程代码来实现同样的功能。示例代码如清单 1 所示。需要提供的参数为测试用例对象 TestCase tc,上传文件的本地文件路径 file,上传附件的标题 title,上传附件的描述信息 desc,附件的文件名字 fileName 和上传附件的文件 MIME 类型。对于 XML 文件,文件的类型为 text/xml。调用清单 3 中的方法即可完成附件的上传,代码实现也非常简单。首先,读取本地脚本文件转换为字节数组 byteArray,然后对该字节数组进行 Base64 编码并转换为字符串类型的 fileContent。后,调用 TestLinkAPI 的 uploadTestCaseAttachment() 方法完成附件的上传。代码中使用到了 Commons IO 开源类库文件中的 FileUitls 类。
  清单 3. 上传测试用例附件
private static TestLinkAPI api = APIObject.getAPI();
public static void testUpload(TestCase tc, String file, String title,
String desc, String fileName, String fileType) {
File attFile = new File(file);
String fileContent = "";
try {
byte[] byteArray = FileUtils.readFileToByteArray(attFile);
fileContent = new String(Base64.encodeBase64(byteArray));
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
Attachment attachment = api.uploadTestCaseAttachment(
tc.getId(), // 测试用例编号
title, // 上传附件的标题
desc, // 附件的描述信息
fileName, // 附件的文件名称
fileType, // 上传附件的 MIME 文件类型
fileContent); // 附件的文件内容
logger.debug(" 附件上传完成," + attachment.toString());
}
  清单 3 的代码是上传附件到测试用例附件区的核心代码,为了批量完成为多个用例分别上传附件,需要在测试用例和需要上传的本地附件文件做一个映射,循环调用清单 3 中的方法依次完成全部的附件上传。具体的代码实现留给读者完成。
  需要注意的是,TestLink 的版本管理特性可以对测试用例进行版本控制,但不支持对附件也做版本控制,即一个用例的所有版本都共享同样的附件文件。如果读者需要为用例的不同版本做自动化测试,可以在上传脚本文件时为文件名称附加上版本信息。下载用例脚本文件时,根据版本信息对脚本文件进行过滤。本文假设所有的版本可以共享同一份脚本文件,随时保持附件文件的更新即可。
  测试脚本文件下载
  通过完成上述操作,自动化测试用例脚本文件已经维护在 TestLink 测试用例附件区。在使用自动化测试工具执行计划的测试用例之前,需要下载测试用例脚本文件到本地文件系统,以方便自动化测试工具对其进行解析运行。使用 TestLink 管理自动化测试用例脚本的优势之一是,通过编写简单的代码很容易完成脚本文件的下载。下载用例脚本文件的代码见清单 4,为下载方法指定 TestCase tc 参数,即可完成该测试用例的附件下载任务。代码很简单,首先根据测试用例实例 tc 获取附件数组 atts,对数组进行循环,依次获取附件 att 的文件名称和文件内容,并保存到本地工作目录下的 UseCases 文件夹下。
  清单 4. 下载测试用例附件
private static TestLinkAPI api = APIObject.getAPI();
public static void getAttachments(TestCase tc) {
String dir = System.getProperty("user.dir") + File.separator
+ "UseCases";
File file = new File(dir);
if (!file.exists()) {
file.mkdirs();
}
Attachment[] atts = api.getTestCaseAttachments(tc.getId(), null);
for (Attachment att : atts) {
byte[] decoded = Base64.decodeBase64(att.getContent().getBytes());
FileOutputStream fos;
try {
fos = new FileOutputStream(new File(dir + File.separator
+ att.getFileName()));
logger.debug(" 测试用例附件保存为 =" + dir + File.separator
+ att.getFileName());
fos.write(decoded);
fos.close();
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
  测试脚本执行
  下载完毕测试用例脚本文件,下一环节是使用自动化测试工具执行这些用例文件。关于如何运行基于 XML 格式的自动化测试用例,推荐读者阅读 IBM developerWorks 文章《使用 XML 维护 Selenium 自动化测试脚本》。测试用例执行完毕,自动化测试工具生成执行日志信息、测试结果信息等。相应测试用例的执行结果状态,如 passed、failed、blocked 等,需要传给下一环节,用于自动修改 TestLink 上测试用例的执行结果状态,完成标示结果的工作。
  回传测试结果
  上述步骤中,通过使用第三方自动化测试工具执行完毕自动化测试用例,收集到测试结果。下面需要进行的是,通过编写代码自动化地修改维护在 TestLink 上的自动化测试用例的执行结果状态。代码如清单 5 所示,运行下面的代码会自动把 TestLink 中测试计划下的测试用例在构建"my build"上运行的测试执行结果标记为"通过"。演示程序中,测试计划编号等数据为硬编码,读者需要根据自己的情况去完善回传测试结果的程序。如果运行失败,测试结果则标为"失败"状态,并和集成的缺陷管理系统进行自动化进行缺陷数据同步。
  清单 5. 自动上传测试结果的代码清单
private static TestLinkAPI api = APIObject.getAPI();
public static void testReport() {
// 测试计划
Integer planID = 7;
// 测试测试的构建
String buildName="my build";
// 测试计划
Integer tcID = 3;
ReportTCResultResponse response = api.reportTCResult(tcID, null,
planID, ExecutionStatus.PASSED, null, buildName,
" 自动化上传结果的备注 ", null, null, null, null, null, null);
logger.debug("response=" + response);
}
  结束语
  通过上面对 TestLink 的介绍,我们了解到了如何基于 TestLink 管理自动化测试过程。本文详细介绍了基于 TestLink 的自动化测试解决方案的核心实现,分析了架构流程图并对主要的部分给出了代码示例。关于如何使用 TestLink 管理功能测试过程,请参考本系列文章的第一部分。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd