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