自動化元件測試
自動化元件測試
“元件測試”或“子系統測試”驗證系統的各個部分,可能需要安裝整個系統或某些外部依賴關係,如資料庫、檔案系統或網路終端等。這些測試驗證元件間的互動能產生預期的組合行為。典型的元件測試需要底層資料庫支援,甚至可能跨越架構邊界。因為每個測試用例執行的程式碼量更大,每個測試的程式碼覆蓋率也更大,所以這些測試一般比單元測試執行的時間長。
程式碼清單6-3展示了一個元件測試的例子,它利用DbUnit框架來生成資料庫中的基底資料,然後嘗試基於資料庫中的內容找到資料。DbUnit使用了一些XML檔案,它讀入這些檔案並將對應的資料插入到匹配的資料庫表中。
程式碼清單6-3 使用DbUnit的元件測試
public class DefaultWordDAOImplTest extends DatabaseTestCase {
protected IDataSet getDataSet() throws Exception {
return new FlatXmlDataSet(new File("test/conf/wseed. xml"));
}
protected IDatabaseConnection getConnection() throws Exception {
final Class driverClass =
Class.forName("org.gjt.mm.mysql.Driver");
final Connection jdbcConnection =
DriverManager.getConnection(
"jdbc:mysql://localhost/words",
"words", "words");
return new DatabaseConnection(jdbcConnection);
}
public void testFindVerifyDefinition() throws Exception{
final WordDAOImpl dao = new WordDAOImpl();
final IWord wrd = dao.findWord("pugnacious");
for(Iterator iter =
wrd.getDefinitions().iterator();
iter.hasNext();){
IDefinition def = (IDefinition)iter.next();
TestCase.assertEquals(
"def is not Combative in nature; belligerent.",
"Combative in nature; belligerent.",
def.getDefinition());
}
}
public DefaultWordDAOImplTest(String name) {
super(name);
}
}
元件級的測試比單元測試用到更多的依賴關係,但不一定像更高階的系統測試(稍後定義)用到的那麼多。元件級的測試透過API來執行程式碼,但這些API可能暴露給客戶,也可能不暴露給客戶。在程式碼清單6-3中,主要透過暴露出的介面測試了資料訪問物件(DAO)層的一個物件。另一個元件測試的例子透過StrutsTestCase框架測試了Struts架構中一個動作類,如程式碼清單6-4所示。這個測試明顯需要一個資料庫才能執行,但Web容器則是虛擬的,執行的API也不必暴露給客戶。
程式碼清單6-4 使用StrutsTest的元件測試
public class ProjectViewActionTest extends DeftMeinMockStrutsTestCase {
public void testProjectViewAction() throws Exception {
this.addRequestParameter("projectId", "100");
this.setRequestPathInfo("/viewProjectHistory");
this.actionPerform();
this.verifyForward("success");
Project project = (Project)this.getRequest()
.getAttribute("project");
assertNotNull(project);
assertEquals(project.getName(), "DS");
}
protected String getDBUnitDataSetFileForSetUp() {
return "dbunit-seed.xml";
}
public ProjectViewActionTest(String name) {
super(name);
}
}
在程式碼清單6-4中,StrutsTestCase框架與DbUnit一起提供了向資料庫填充基底資料的功能和一個虛擬的容器。DeftMeinMockStrutsTestCase類是一個模板,它要求實現getDBUnitDataSetFileForSetUp方法。
這種型別的測試也被稱為“整合測試”。這種型別的測試與系統測試的不同之處在於,整合測試(或元件測試、子系統測試)並不總是執行那些期望公開的API。例如,系統測試可以透過Web應用程式的Web頁面執行它,但元件測試可以執行應用程式Web頁面底下的業務層。
本文節選自《持續整合:軟體質量改進和風險降低之道》一書
圖書詳細資訊:http://space.itpub.net/?uid-13164110-action-viewspace-itemid-732714
[美]Paul M. Duvall (保羅.M. 杜瓦爾)Steve Matyas (史蒂夫.邁耶斯) Andrew Glover(安德魯.格洛弗) 著
王海鵬 譯
電子工業出版社出版
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-733185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動化測試系列 —— UI自動化測試UI
- 【自動化測試入門】自動化測試思維
- 自動化測試畫布控制元件找不到控制元件
- App自動化測試:高階控制元件互動技巧APP控制元件
- 自動化裝置測試與自動化測試的區別
- 如何做自動化測試?什麼是自動化測試?
- 軟體測試:自動化測試
- airTest自動化測試AI
- selenium自動化測試
- 自動化測試篇
- python自動化測試Python
- API自動化測試API
- 自動化測試框架框架
- 自動化測試理解
- 自動化測試思路
- jest 自動化測試
- 介面自動化測試
- 測試開發之自動化篇-自動化測試框架設計框架
- 如何學習自動化測試?從手工測試到自動化測試的過程…
- 自動化測試面試點面試
- 小程式自動化測試--測試3
- 手工測試和自動化測試 BattleBAT
- 自動化測試系列(三)|UI測試UI
- “自動化測試解放雙手”,測試自動化好處大盤點!
- Web自動化-Selenium自動化測試-4-編寫測試用例Web
- Python 介面自動化測試Python
- 淺談自動化測試
- Selenium自動化測試(3)
- 自動化測試工具QTPQT
- 自動化測試平臺
- 面經-自動化測試
- 自動化測試框架指南框架
- 自動化測試的方向
- 採用自動化測試的情形及自動化測試的優缺點
- API自動化測試平臺,高效實現對API的自動化測試API
- AutoRunner 功能自動化測試專案實訓之自動化測試原理(一)
- 自動化測試如何管理測試資料
- 利用tox打造自動自動化測試框架框架
- 功能測試、自動化測試、效能測試的區別