劉善田 張偉 張燕 王岳 張彬
(1.國(guó)家網(wǎng)絡(luò)軟件產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心(濟(jì)南) 山東省濟(jì)南市 250000 2.濟(jì)南市市場(chǎng)監(jiān)督管理局 山東省濟(jì)南市 250101)
完善有效的測(cè)試用例是保障軟件測(cè)試質(zhì)量的關(guān)鍵因素,所以測(cè)試用例設(shè)計(jì)活動(dòng)歷來(lái)受到重視,常作為一項(xiàng)重要的指標(biāo)來(lái)評(píng)估測(cè)試活動(dòng)的有效性。本文從工程實(shí)踐角度對(duì)組合測(cè)試技術(shù)進(jìn)行了深入探索并提出一種新型測(cè)試用例設(shè)計(jì)模式,使之融入更多測(cè)試用例設(shè)計(jì)技術(shù)手段,實(shí)現(xiàn)測(cè)試用例廣泛的兼容,在此基礎(chǔ)上設(shè)計(jì)開(kāi)發(fā)組合測(cè)試支持系統(tǒng),以服務(wù)于實(shí)際軟件測(cè)試工程,并跟蹤使用情況,對(duì)測(cè)試用例編制數(shù)據(jù)進(jìn)行了統(tǒng)計(jì)分析,科學(xué)驗(yàn)證了組合測(cè)試及其支持系統(tǒng)的適用性和有效性,為組合測(cè)試大規(guī)模應(yīng)用進(jìn)行了工程示范和新型工具支持。
組合測(cè)試領(lǐng)域一直是軟件測(cè)試領(lǐng)域的研究熱點(diǎn),我國(guó)于2020年發(fā)布了關(guān)于組合測(cè)試的國(guó)家標(biāo)準(zhǔn)[1](GB/T38639‐2020),為組合測(cè)試技術(shù)的應(yīng)用提供了重要依據(jù)和支持。組合測(cè)試就是對(duì)n 個(gè)參數(shù)產(chǎn)生組合測(cè)試用例,使得對(duì)于任意t(通常2 ≤t ≤n 較小的整數(shù))個(gè)參數(shù)的所有可能的值域的組合至少被一個(gè)測(cè)試用例覆蓋,稱(chēng)為t‐way 組合測(cè)試[3]。組合測(cè)試不僅解決了測(cè)試用例的自動(dòng)生成問(wèn)題,同時(shí)解決了測(cè)試用例的精簡(jiǎn)問(wèn)題,因此對(duì)組合測(cè)試的研究和應(yīng)用是非常有價(jià)值的,在軟件測(cè)試?yán)碚摏](méi)有突破性進(jìn)展的背景下,應(yīng)用組合測(cè)試是提升軟件測(cè)試質(zhì)量的快捷、經(jīng)濟(jì)之道。
但是,盡管組合測(cè)試有著誘人的應(yīng)用前景,卻始終未得到規(guī)模化應(yīng)用,究其原因主要是以下方面:
(1)組合測(cè)試算法、技術(shù)、工具離散化,選擇多反而難選擇;
(2)市面上知名軟件測(cè)試工具大多沒(méi)有對(duì)組合測(cè)試的直接支持;
(3)組合測(cè)試的內(nèi)涵,局限了其應(yīng)用范圍。
因此,深入理解組合測(cè)試,解決以上壁壘使組合測(cè)試技術(shù)無(wú)縫融合到軟件測(cè)試活動(dòng)過(guò)程中,為軟件測(cè)試質(zhì)量保障提供新手段具有重要意義。
我國(guó)頒布的GB/T 25000.51‐2016 《系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評(píng)價(jià)(SQuaRE)第51 部分就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測(cè)試細(xì)則》[2]標(biāo)準(zhǔn)中對(duì)測(cè)試用例的編制要素有著詳細(xì)的說(shuō)明,由于該標(biāo)準(zhǔn)等同采用了國(guó)際標(biāo)準(zhǔn)(編號(hào):ISO/IEC 25051:2014)因此標(biāo)準(zhǔn)中給出的測(cè)試用例設(shè)計(jì)模型是具有廣泛的代表性的。
結(jié)合工程實(shí)踐和標(biāo)準(zhǔn)測(cè)試用例相關(guān)說(shuō)明,測(cè)試用例設(shè)計(jì)模型可分為定義層和執(zhí)行層兩個(gè)層面,說(shuō)明如下:
(1)定義層:測(cè)試需求,定義測(cè)試目標(biāo);測(cè)試用例規(guī)格定義測(cè)試用例的唯一性標(biāo)識(shí)、系統(tǒng)的預(yù)期行為、測(cè)試用例的預(yù)期輸出、結(jié)果解釋的準(zhǔn)則、用于判定測(cè)試用例的肯定或否定結(jié)果的準(zhǔn)則、先決條件等[2];
(2)執(zhí)行層:描述測(cè)試用例的詳細(xì)實(shí)施步驟及該步驟執(zhí)行所需要的數(shù)據(jù)。
基于該模型進(jìn)行測(cè)試用例編制活動(dòng)存在一定局限性,無(wú)法實(shí)現(xiàn)前文所述的組合測(cè)試技術(shù)的融合,也無(wú)法有效跟蹤組合測(cè)試用例與測(cè)試需求、測(cè)試用例規(guī)格的關(guān)聯(lián)性。因此,需要對(duì)上述測(cè)試用例設(shè)計(jì)模型進(jìn)行改進(jìn)。改進(jìn)后的測(cè)試用例設(shè)計(jì)模型增加表示層,表示層在層次上介于測(cè)試用例規(guī)格和手工測(cè)試步驟之間,是測(cè)試用例規(guī)格的外在呈現(xiàn)形式。新的測(cè)試用例設(shè)計(jì)模型可以將功能測(cè)試、性能測(cè)試(或稱(chēng)效率測(cè)試)、安全測(cè)試等統(tǒng)一到測(cè)試設(shè)計(jì)活動(dòng)中,使軟件測(cè)試進(jìn)程更加緊湊、可控,實(shí)現(xiàn)設(shè)計(jì)上的統(tǒng)一。
一個(gè)軟件功能總體上可以識(shí)別為表現(xiàn)層、服務(wù)層、數(shù)據(jù)層。表現(xiàn)層定義軟件交互界面,可以識(shí)別功能輸入、輸出元素,并應(yīng)用邊界值、等價(jià)類(lèi)等基本測(cè)試方法對(duì)元素取值進(jìn)行定義,此層次上的分析工作將為實(shí)施組合測(cè)試提供基礎(chǔ);服務(wù)層可以識(shí)別功能對(duì)應(yīng)的接口服務(wù),可以是REST API,也可以是動(dòng)態(tài)鏈接庫(kù)、命令行等;數(shù)據(jù)層識(shí)別功能對(duì)應(yīng)的數(shù)據(jù)操作對(duì)象,可以是文件系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)等。
組合測(cè)試支持系統(tǒng)包括項(xiàng)目實(shí)施端、測(cè)試管理端及運(yùn)維端三部分,說(shuō)明如下:
4.1.1 項(xiàng)目實(shí)施端
面向普通測(cè)試人員、項(xiàng)目管理人員、開(kāi)發(fā)人員、質(zhì)量保證人員等,服務(wù)于一個(gè)具體UTS 的測(cè)試實(shí)施管控,包括測(cè)試計(jì)劃、測(cè)試方案、測(cè)試實(shí)施及測(cè)試報(bào)告四個(gè)功能。
(1)測(cè)試計(jì)劃:定義UTS 測(cè)試任務(wù),分配人力資源、時(shí)間資源及任務(wù)交叉約束等。圍繞測(cè)試計(jì)劃推進(jìn)測(cè)試各環(huán)節(jié)活動(dòng)是本系統(tǒng)的一個(gè)特色,有助于為項(xiàng)目管理人員提供“作戰(zhàn)室”功能,實(shí)現(xiàn)資源統(tǒng)籌、任務(wù)統(tǒng)籌,及時(shí)做出行動(dòng)指揮管理,智慧決策。
(2)測(cè)試方案:提供測(cè)試分析、測(cè)試規(guī)格說(shuō)明定義、交互界面元素分析、服務(wù)接口分析、測(cè)試用例編制等功能,實(shí)現(xiàn)功能分解及分層用例設(shè)計(jì),應(yīng)用邊界值、等價(jià)類(lèi)分析等技術(shù)實(shí)現(xiàn)組合測(cè)試元素取值定義,啟動(dòng)組合測(cè)試后開(kāi)啟組合測(cè)試集成開(kāi)發(fā)環(huán)境,系統(tǒng)自動(dòng)讀取界面元素及其取值,實(shí)現(xiàn)組合測(cè)試腳本的自動(dòng)生成,選擇系統(tǒng)支持的算法或工具自動(dòng)生成組合測(cè)試用例。
(3)測(cè)試實(shí)施:測(cè)試實(shí)施模塊根據(jù)測(cè)試計(jì)劃靈活定義測(cè)試策略,并復(fù)制測(cè)試方案模塊設(shè)計(jì)的測(cè)試用例形成執(zhí)行鏡像,這部分用例可稱(chēng)之為執(zhí)行用例,將設(shè)計(jì)用例與執(zhí)行用例分離,避免污染設(shè)計(jì)用例,同時(shí)可以保證測(cè)試用例執(zhí)行的高度靈活性。
(4)測(cè)試報(bào)告:測(cè)試報(bào)告執(zhí)行測(cè)試數(shù)據(jù)的采集與分析,并可以根據(jù)測(cè)試管理端定義的測(cè)試模版自動(dòng)生成圖文測(cè)試報(bào)告。
4.1.2 測(cè)試管理端
面向測(cè)試組織管理人員,測(cè)試管理端主要用于被測(cè)系統(tǒng)(UTS)管理及公共資源的定義及配置,包括UTS管理、測(cè)試標(biāo)準(zhǔn)、模版管理、日程日志、個(gè)人中心、自定義支持等。
4.1.3 運(yùn)維端
面向平臺(tái)維護(hù)者,提供組織管理、權(quán)限管理、用戶管理支持。
組合測(cè)試支持系統(tǒng)在技術(shù)架構(gòu)上分為展現(xiàn)層、服務(wù)層、支持層及數(shù)據(jù)層(如圖1所示),采用當(dāng)前流行的微服務(wù)架構(gòu)技術(shù),實(shí)現(xiàn)系統(tǒng)各個(gè)服務(wù)單元的低耦合,可以靈活配置系統(tǒng)以實(shí)現(xiàn)不同的用戶使用目標(biāo)。

圖1:支持系統(tǒng)技術(shù)架構(gòu)
(1)展現(xiàn)層:展現(xiàn)層綜合應(yīng)用VUE、JQuery 等多種主流前端技術(shù),為用戶提供良好的應(yīng)用體驗(yàn)。
(2)服務(wù)層:通過(guò)對(duì)軟件測(cè)試全生命周期活動(dòng)的綜合調(diào)研分析,將軟件測(cè)試各活動(dòng)進(jìn)行粒度切割,抽取共性,進(jìn)行微服務(wù)封裝。系統(tǒng)底層Web 支持使用Spring Cloud 及Spring Boot,Spring Cloud 封裝了Netflix 公司開(kāi)發(fā)的Eureka 模塊來(lái)實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn),所有微服務(wù)在Eureka 服務(wù)注冊(cè)服務(wù)中心完成注冊(cè),對(duì)外提供各項(xiàng)功能服務(wù)。
(3)支持層:支持層融合多種底層技術(shù),用于支持系統(tǒng)業(yè)務(wù)流程及數(shù)據(jù)存儲(chǔ)需求。為保障系統(tǒng)性能,本系統(tǒng)采用前端緩存、后端緩存等多級(jí)緩存技術(shù),為系統(tǒng)帶來(lái)高效的訪問(wèn)體驗(yàn)。
組合測(cè)試支持系統(tǒng)在核心銀行系統(tǒng)的功能測(cè)試期間進(jìn)行了大范圍應(yīng)用,本次應(yīng)用主要用于核心銀行業(yè)務(wù)系統(tǒng)的貸款模塊的功能測(cè)試,貸款業(yè)務(wù)是核心銀行業(yè)務(wù)系統(tǒng)中的核心模塊,業(yè)務(wù)最復(fù)雜,選擇在貸款模塊中大范圍應(yīng)用組合測(cè)試技術(shù)具有重要的示范意義。
測(cè)試人員在邊界值分析、等價(jià)類(lèi)劃分的基礎(chǔ)上編制組合測(cè)試模式文件。系統(tǒng)提供智能語(yǔ)法高亮編輯器,左側(cè)是模式文件編輯區(qū)域,支持PICT[4]語(yǔ)法高亮顯示;右側(cè)區(qū)域是工作區(qū),包括以下部分:元素標(biāo)簽顯示交互界面分析獲得的輸入元素及取值規(guī)則;信息標(biāo)簽定義當(dāng)前腳本的基本屬性,如名稱(chēng)、版本、適用組合測(cè)試工具或算法;版圖標(biāo)簽提供簡(jiǎn)單的版本管理功能,可實(shí)時(shí)顯示當(dāng)前模式文件的版本分支圖。
系統(tǒng)應(yīng)用WEB 即時(shí)通訊技術(shù),可以快速推送用例生成結(jié)果給終端用戶。以PICT 為例,在模式文件編輯就緒后選擇組合工具PICT,設(shè)置組合深度及隨機(jī)數(shù),執(zhí)行后系統(tǒng)調(diào)用后臺(tái)服務(wù),自動(dòng)生成組合測(cè)試用例,并將組合測(cè)試用例生成結(jié)果推送給前端用戶。
以貸款業(yè)務(wù)編號(hào)為3001 的功能項(xiàng)為例,在第一階段通過(guò)人工編制測(cè)試用例獲得了30 個(gè)正向用例(正常業(yè)務(wù)用例)、29 個(gè)負(fù)向用例(違反業(yè)務(wù)規(guī)則或者數(shù)據(jù)約束的異常用例),使用PICT 組合測(cè)試技術(shù)自動(dòng)生成測(cè)試用例,從表中數(shù)據(jù)可見(jiàn)在組合深度為2 的情況下,已完全覆蓋了人工編制用例數(shù)量(如表1所示)。

表1:3001 用例比對(duì)
將貸款業(yè)務(wù)的測(cè)試用例編制數(shù)據(jù)與其他功能進(jìn)行橫向比對(duì)(如圖2所示),貸款業(yè)務(wù)的測(cè)試用例數(shù)量也處在前列,證明組合測(cè)試技術(shù)在用例生成方面完全是可靠的。

圖2:核心銀行系統(tǒng)測(cè)試用例數(shù)量橫向比較
本文對(duì)組合測(cè)試技術(shù)在大型應(yīng)用系統(tǒng)中的應(yīng)用進(jìn)行了實(shí)際深入探索,驗(yàn)證了其有效性和可行性,在此基礎(chǔ)上設(shè)計(jì)開(kāi)發(fā)了組合測(cè)試支持系統(tǒng)。綜合國(guó)內(nèi)外最新研究成果,并對(duì)同類(lèi)軟件進(jìn)行了比對(duì)分析,創(chuàng)造性提出全新用例設(shè)計(jì)模型,與現(xiàn)行軟件測(cè)試技術(shù)進(jìn)行有機(jī)融合,既為組合測(cè)試技術(shù)的落地應(yīng)用開(kāi)辟了空間,也帶來(lái)更好的用戶體驗(yàn),使軟件測(cè)試人員可以在一個(gè)集中、統(tǒng)一的平臺(tái)上應(yīng)用組合測(cè)試技術(shù)實(shí)現(xiàn)復(fù)雜的測(cè)試用例設(shè)計(jì)工作,使測(cè)試更科學(xué)嚴(yán)謹(jǐn)、測(cè)試覆蓋度更高。