黃 哲
同濟(jì)大學(xué)軟件學(xué)院,上海 201804
隨著軟件測試技術(shù)的發(fā)展,軟件的自動化測試得到了越來越多的重視[1]?,F(xiàn)代軟件規(guī)模不斷的擴大,基于面向?qū)ο蟮能浖軜?gòu)為了提高獨立性和復(fù)用性采用了多層結(jié)構(gòu)。API是處于上下層之間的接口,是開發(fā)者提供給使用者的工具[2]。API的測試直接關(guān)系到了軟件的整體質(zhì)量。API測試是驗證組成軟件的單個方法的正確性。包括邏輯的正確性,功能的正確性等。測試需要首先初始化測試的環(huán)境,然后需要調(diào)用API,最后需要對結(jié)果進(jìn)行驗證。如果對API實行手工測試那么測試工作量是非常大的,而且API本身的特點適合自動化,所以API測試的自動化研究有很大的價值。
本文針對實際的軟件測試設(shè)計并實現(xiàn)了一個API自動測試的框架,這次設(shè)計的API自動化測試框架主要分成4個部分,分別是對API的分析提取處理,測試用例的生成,用例的執(zhí)行,以及執(zhí)行結(jié)果的驗證。
系統(tǒng)主要應(yīng)用于windows平臺,整個系統(tǒng)采用C++ .NET設(shè)計實現(xiàn)。XML(Extensible Markup Language)在整個框架的作用十分關(guān)鍵,它是框架中的各個模塊之間的接口,增加模塊的獨立性,降低耦合度。XML也要用來存儲驅(qū)動用例的數(shù)據(jù)以及配置信息。XML是本文設(shè)計的框架最適合的數(shù)據(jù)存儲實現(xiàn)方式,它使用起來快捷方便。
近年對軟件測試技術(shù)的不斷研究評估,得出純自動化的測試能發(fā)現(xiàn)的軟件漏洞是相當(dāng)有限的,特別在專業(yè)知識比較強的軟件更是要大大低于手工的測試。因此,本文選擇了開發(fā)一個API測試的自動化框架。而對于測試用例的生成采用生成對應(yīng)的模板,測試人員可以結(jié)合測試的重點進(jìn)行配置。
框架主要是使用c++語言編寫實現(xiàn),提供了簡單的操作界面,框架示意圖如圖1。
圖1
系統(tǒng)的代碼分析模塊,分析模塊首先需要從源代碼的頭文件中提取出需要使用的API信息,然后生成XML文件。由于系統(tǒng)設(shè)計時針對的軟件對應(yīng)功能模塊也比較固定,XML中不僅包含了簡單的API頭文件信息,還包含了相應(yīng)API是否有顯示等信息。
測試用例生成引擎是用來生成系統(tǒng)的C++用例,LISP用例,以及C#用例的生成,生成的是一個基本模板,只需要進(jìn)行簡單的擴展就能生成實際的用例。
1)用例的自動生成配置管理
用例自動生成需要對XML中的信息進(jìn)行讀取,本文工具中實現(xiàn)了對應(yīng)格式的XML解析工具。用例是劃分在各個功能模塊下的,生成是可以按照功能模塊的不同來生成對應(yīng)的用例模板,用例最終在執(zhí)行時需要分層,按模塊來執(zhí)行,需要人工的對用例配置文件的XML進(jìn)行更改配置。
2)用例的自動生成策略
相對于某一功能的用例代碼是有較大的重復(fù)區(qū)域的,本文的系統(tǒng)對這不同的功能模塊系同來生成用例的。首先需要判定屬于哪個功能模塊,從功能模塊數(shù)據(jù)存儲的XML中讀取功能模塊數(shù)據(jù)。判定了功能模塊,用例生成引擎由不同的生成機制來生成不同的用例模板。測試人員可以根據(jù)經(jīng)驗來進(jìn)一步的完善配置用例。由于測試的用例較多因此由測試人員進(jìn)一步的完善用例是可行的[3]。
用例執(zhí)行引擎,通過分析用例生成引擎中的XML配置文件來完成對各個用例的測試配置,然后需要制定運行待測用例的執(zhí)行程序和執(zhí)行環(huán)境。在執(zhí)行引擎中還提供了調(diào)試模式可以方便測試人員及時的對生成的用例進(jìn)行調(diào)試。
測試的結(jié)果分析則是對調(diào)用了API應(yīng)該達(dá)成什么樣的預(yù)期效果的對比。測試的結(jié)果將被記錄成為數(shù)據(jù)模式。方便結(jié)果的檢測。用例紅色在用例執(zhí)行控制臺標(biāo)出測試出錯的用例。輸出錯誤的數(shù)據(jù)。供測試人員調(diào)試分析。
這里僅給出一個簡單的測試函數(shù)分析。
產(chǎn)生了包含API信息的XML ,然后根據(jù)測試數(shù)據(jù)源的XML生成對應(yīng)的測試用例。生成的測試用例則需要實現(xiàn)對draw函數(shù)中的line,circle,rectangle功能實現(xiàn)調(diào)用。Size默認(rèn)是small。也可以由測試人員進(jìn)行調(diào)試。由于篇幅所限本文不給出完整的用例代碼。
本文實現(xiàn)了API測試的自動化框架的設(shè)計,并且實現(xiàn)了針對具體軟件的API自動化的測試。相比傳統(tǒng)的API自動化測試框架,本文提出的框架更加強調(diào)了自動與手動的結(jié)合。利用手動的靈活性好,和針對性強的特點增強用例的測試功效。對軟件的質(zhì)量能提供更大的保證。
[1]張磊,王曉軍.基于STAF框架下的自動化測試[J].計算機技術(shù)與發(fā)展,2010,3.
[2]崔紅軍,饒若楠,邵培南.一種API自動化測試工具的設(shè)計與實現(xiàn)[J].計算機工程,2007,2.
[3]Brian Marick, When Should a Test Be Automated.Reliable Software Technologies.