使用TestLink管理軟件測試過程
清單 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 管理功能測試過程,請參考本系列文章的第一部分。