摘要:隨著瀏覽器技術(shù)的迭代更新,文檔對(duì)象技術(shù)在一些主流瀏覽器版本中不再受支持,前期設(shè)計(jì)的輕量級(jí)接口自動(dòng)化測(cè)試框架中結(jié)果統(tǒng)計(jì)分析與展示模塊因而功能不能正常使用?;诖?,本文對(duì)前期設(shè)計(jì)的輕量級(jí)接口自動(dòng)化測(cè)試框架做了一定的設(shè)計(jì)優(yōu)化,將用于記錄測(cè)試用例及結(jié)果的XML文件結(jié)構(gòu)設(shè)計(jì)優(yōu)化為MySQL數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì),將測(cè)試執(zhí)行模塊寫(xiě)數(shù)據(jù)入XML文件優(yōu)化為寫(xiě)數(shù)據(jù)庫(kù)表,將結(jié)果統(tǒng)計(jì)分析與展示模塊由前端JS讀取XML文件數(shù)據(jù)優(yōu)化為后端JSP讀取數(shù)據(jù)庫(kù)表數(shù)據(jù)。經(jīng)驗(yàn)證測(cè)試,優(yōu)化后的測(cè)試框架不再受文檔對(duì)象技術(shù)的限制,實(shí)用性更佳,能在較主流的幾款瀏覽器中正常使用,是一種有效的技術(shù)替代方案。
關(guān)鍵詞:自動(dòng)化測(cè)試框架;設(shè)計(jì)優(yōu)化;動(dòng)態(tài)Web技術(shù);JSP;MySQL
中圖分類(lèi)號(hào) TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)08-0212-03
Abstract: With the iterative update of technology, document object technology is no longer supported in some browsers, thus the function of the statistical analysis and presentation module in the interface automation test framework designed in the early stage is affected. Based on this, this paper made some optimization for the automation test framework, such as with MySQL database table structure design replacing the XML file, with writing data into database table replacing into file, with reading data from database table by back-end JSP replacing from file by front-end JS. The optimized test framework is no longer limited by browser document object technology and has better usability, could be used in a few more mainstream browsers and is an effective technical alternative.
Key words: automation test framework; design optimization; dynamical Web technology; JSP; MySQL
前期針對(duì)某后端服務(wù)產(chǎn)品接口多、內(nèi)部處理邏輯復(fù)雜且版本迭代頻繁的情況,為了實(shí)現(xiàn)短時(shí)間快速測(cè)試,基于面向?qū)ο蠹夹g(shù)、Web開(kāi)發(fā)技術(shù)等設(shè)計(jì)并實(shí)現(xiàn)了一套較實(shí)用的輕量級(jí)接口自動(dòng)化測(cè)試框架[1]。該框架由兩大部分組成,一是基于面向?qū)ο蠹夹g(shù)和XML文檔DOM開(kāi)發(fā)等技術(shù)的自動(dòng)化測(cè)試執(zhí)行模塊,主要實(shí)現(xiàn)了對(duì)測(cè)試數(shù)據(jù)批量配置、測(cè)試腳本設(shè)計(jì)、測(cè)試腳本批量執(zhí)行以及自動(dòng)生成XML格式的測(cè)試結(jié)果數(shù)據(jù)文件。另一部分是集XML、HTML、CSS和JS等集成開(kāi)發(fā)技術(shù)的測(cè)試結(jié)果統(tǒng)計(jì)分析與展示模塊,主要實(shí)現(xiàn)對(duì)測(cè)試結(jié)果文件內(nèi)數(shù)據(jù)的統(tǒng)計(jì)分析并以Web頁(yè)面形式作個(gè)性化展示。在瀏覽器支持文檔對(duì)象技術(shù)的情況下,該框架能表現(xiàn)出較好的實(shí)用性。但隨著瀏覽器版本的迭代,文檔對(duì)象技術(shù)不再受支持,如Microsoft Edge 84.0.522.52和Firefox 78.0b6,因此該框架部分功能無(wú)法正常使用。為了解決該問(wèn)題,本文對(duì)該框架作了技術(shù)優(yōu)化,將用于記錄測(cè)試用例及結(jié)果等數(shù)據(jù)的XML文件設(shè)計(jì)改為MySQL數(shù)據(jù)庫(kù)表設(shè)計(jì)[2-3],將測(cè)試執(zhí)行模塊寫(xiě)數(shù)據(jù)入XML文件改為寫(xiě)入數(shù)據(jù)庫(kù)表,將結(jié)果統(tǒng)計(jì)分析與展示模塊由前端JS讀取XML文件數(shù)據(jù)改為后端JSP[4]讀取數(shù)據(jù)庫(kù)表數(shù)據(jù)。優(yōu)化后自動(dòng)化測(cè)試框架的結(jié)果統(tǒng)計(jì)分析與展示模塊功能在Microsoft Edge 84.0.522.52、Google Chrome 84.0.4147.105和Firefox 78.0b6等幾款主流瀏覽器新版中可正常使用,是一種較好的替代方案。
1 優(yōu)化前后整體設(shè)計(jì)對(duì)比
優(yōu)化前,整套測(cè)試框架部署在客戶端。在客戶端Eclipse平臺(tái)執(zhí)行測(cè)試執(zhí)行模塊,測(cè)試執(zhí)行模塊中以接口為單位對(duì)測(cè)試用例作分類(lèi)設(shè)計(jì)與實(shí)現(xiàn),測(cè)試執(zhí)行時(shí)以一個(gè)接口為一個(gè)測(cè)試集分類(lèi)執(zhí)行各測(cè)試用例,并將測(cè)試用例及結(jié)果等數(shù)據(jù)按測(cè)試集分類(lèi)寫(xiě)入本地XML文件。測(cè)試執(zhí)行結(jié)束后,在本地瀏覽器中打開(kāi)HTML文件,加載本地的CSS文件,通過(guò)本地JS文件腳本讀取XML文件做統(tǒng)計(jì)分析并動(dòng)態(tài)更新HTML文件內(nèi)容實(shí)現(xiàn)個(gè)性化展示。
優(yōu)化后整套框架分前端客戶端程序、后端MySQL數(shù)據(jù)庫(kù)服務(wù)和后端Web動(dòng)態(tài)JSP頁(yè)面服務(wù)[5]。與優(yōu)化前一致,前端客戶端執(zhí)行測(cè)試執(zhí)行模塊,區(qū)別是將測(cè)試用例及結(jié)果等數(shù)據(jù)寫(xiě)入后端MySQL服務(wù)器數(shù)據(jù)庫(kù)表,測(cè)試執(zhí)行結(jié)束后,在前端瀏覽器中訪問(wèn)部署在遠(yuǎn)程Web服務(wù)器上的動(dòng)態(tài)JSP頁(yè)面來(lái)瀏覽測(cè)試結(jié)果及數(shù)據(jù),JSP頁(yè)面訪問(wèn)MySQL數(shù)據(jù)庫(kù),對(duì)表中數(shù)據(jù)做統(tǒng)計(jì)分析,并與CSS結(jié)合實(shí)現(xiàn)樣式個(gè)性化展示。CSS文件與優(yōu)化前一致。優(yōu)化后接口自動(dòng)化測(cè)試框架部署如圖1所示。
2 優(yōu)化前后具體設(shè)計(jì)實(shí)現(xiàn)對(duì)比
2.1 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)
優(yōu)化前,以XML文件存儲(chǔ)測(cè)試用例及結(jié)果數(shù)據(jù)。XML文件根元素包含各測(cè)試集元素,一個(gè)測(cè)試集元素對(duì)應(yīng)一個(gè)接口,以接口名作為測(cè)試集元素的唯一性標(biāo)識(shí)屬性,測(cè)試集元素下包含與該接口對(duì)應(yīng)的所有測(cè)試用例元素,以測(cè)試用例名作為測(cè)試用例元素的唯一性屬性標(biāo)識(shí),測(cè)試用例元素下包含該測(cè)試用例所對(duì)應(yīng)的接口請(qǐng)求數(shù)據(jù)元素、接口響應(yīng)數(shù)據(jù)元素、接口測(cè)試結(jié)果元素。
優(yōu)化后,數(shù)據(jù)庫(kù)表及字段設(shè)計(jì)與優(yōu)化前的XML文件數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng),包括測(cè)試集表和測(cè)試用例表。測(cè)試集表包含主鍵唯一自增id字段和testSuiteId字段。其中testSuiteId字段用于存儲(chǔ)測(cè)試集名,對(duì)應(yīng)優(yōu)化前XML文件中測(cè)試集元素的唯一性標(biāo)識(shí)屬性。測(cè)試用例表用于存儲(chǔ)各測(cè)試集下的測(cè)試用例及其與測(cè)試集表中某測(cè)試集的關(guān)聯(lián)關(guān)系,包含主鍵唯一自增id字段、testCaseId字段、testSuite_id字段、reqStr字段、resStr字段、result字段。testCaseId字段表示測(cè)試用例名,對(duì)應(yīng)優(yōu)化前測(cè)試用例元素的唯一性屬性標(biāo)識(shí)。testSuite_id字段表示該測(cè)試用例所屬測(cè)試集,與測(cè)試集表中id字段關(guān)聯(lián)。reqStr字段、resStr字段、result字段表示某測(cè)試用例對(duì)應(yīng)的接口請(qǐng)求數(shù)據(jù)、接口響應(yīng)數(shù)據(jù)、接口測(cè)試結(jié)果。result字段值為Pass表示該測(cè)試用例接口功能測(cè)試成功,F(xiàn)ail表示該測(cè)試用例接口功能測(cè)試失敗。MySQL索引的合理創(chuàng)建可提高數(shù)據(jù)庫(kù)表數(shù)據(jù)的查詢(xún)檢索速度,創(chuàng)建索引時(shí),需確保該索引是應(yīng)用在 SQL 查詢(xún)語(yǔ)句的條件[6]。對(duì)測(cè)試用例集表數(shù)據(jù)做統(tǒng)計(jì)分析時(shí),需要匯總統(tǒng)計(jì)每個(gè)測(cè)試集下所有測(cè)試用例并統(tǒng)計(jì)其中成功的用例數(shù)和失敗的用例數(shù),統(tǒng)計(jì)查詢(xún)條件是testSuite_id字段和result字段,因此,對(duì)testSuite_id字段和result字段創(chuàng)建復(fù)合索引,從而提高統(tǒng)計(jì)查詢(xún)執(zhí)行速率。復(fù)合索引只有在字段順序與查詢(xún)條件順序一致時(shí)才有效果,因此,兩個(gè)字段在復(fù)合索引中的次序與統(tǒng)計(jì)分析模塊中對(duì)數(shù)據(jù)庫(kù)表的查詢(xún)條件次序一致。
2.2 測(cè)試執(zhí)行模塊設(shè)計(jì)優(yōu)化與實(shí)現(xiàn)
優(yōu)化前,測(cè)試執(zhí)行模塊在執(zhí)行前新建XML文件并獲取文檔根元素,在每個(gè)測(cè)試集執(zhí)行前以接口名為測(cè)試集元素唯一性屬性,將測(cè)試集元素作為文檔根元素的子元素寫(xiě)入文件,在測(cè)試集下每個(gè)測(cè)試用例執(zhí)行前以測(cè)試用例名為測(cè)試用例元素唯一性屬性,以該測(cè)試用例對(duì)應(yīng)的接口請(qǐng)求數(shù)據(jù)、響應(yīng)數(shù)據(jù)、測(cè)試結(jié)果分別作為該測(cè)試用例元素的三個(gè)子元素,將該測(cè)試用例元素作為其所屬測(cè)試集元素的子元素寫(xiě)入文件。
優(yōu)化后,在.properties屬性文件中配置MySQL數(shù)據(jù)庫(kù)訪問(wèn)配置信息。測(cè)試執(zhí)行模塊在執(zhí)行前,讀取配置文件中數(shù)據(jù)庫(kù)訪問(wèn)配置并建立MySQL數(shù)據(jù)庫(kù)靜態(tài)連接[8]。在每個(gè)測(cè)試集執(zhí)行前以接口名為testSuiteId字段值,用數(shù)據(jù)庫(kù)靜態(tài)連接向測(cè)試集表插入一行數(shù)據(jù)。在每個(gè)測(cè)試用例執(zhí)行前以測(cè)試用例名作為testCaseId字段值、以該測(cè)試用例所屬測(cè)試集在測(cè)試集表中的id字段值作為testSuite_id字段值、以對(duì)應(yīng)接口請(qǐng)求數(shù)據(jù)、響應(yīng)數(shù)據(jù)、測(cè)試結(jié)果分別作為reqStr字段值、resStr字段值、result字段值,向測(cè)試用例表插入一行數(shù)據(jù)。測(cè)試執(zhí)行過(guò)程中,測(cè)試集表中將收集并存儲(chǔ)所有接口的接口名,測(cè)試用例表中將收集并存儲(chǔ)每個(gè)測(cè)試集下的所有測(cè)試用例。所有測(cè)試執(zhí)行結(jié)束后,關(guān)閉數(shù)據(jù)庫(kù)連接。
2.3 結(jié)果統(tǒng)計(jì)分析與展示模塊設(shè)計(jì)優(yōu)化與實(shí)現(xiàn)
優(yōu)化前,結(jié)果統(tǒng)計(jì)分析與展示模塊由HTML文件、CSS文件、JS文件和XML文件構(gòu)成,全部在前端客戶端部署并執(zhí)行。XML文件是數(shù)據(jù)源。HTML文件定義結(jié)果展示主界面整體布局,主要由概要區(qū)、結(jié)果匯總區(qū)、結(jié)果細(xì)節(jié)區(qū)構(gòu)成,概要區(qū)以表格形式展示測(cè)試用例總數(shù)、用例成功總數(shù)和用例失敗總數(shù)。結(jié)果匯總區(qū)以表格形式展示各測(cè)試集名及其下所含測(cè)試用例總數(shù)、用例成功總數(shù)和用例失敗總數(shù),其中測(cè)試集名為超鏈接。結(jié)果細(xì)節(jié)區(qū)默認(rèn)隱藏,點(diǎn)擊某個(gè)測(cè)試集名超鏈接后,結(jié)果細(xì)節(jié)區(qū)顯現(xiàn)且以表格形式顯示該測(cè)試集下所有測(cè)試用例及結(jié)果詳情。主界面整體層疊樣式通過(guò)引入CSS文件定義,部分樣式及子區(qū)域通過(guò)引入的JS文件根據(jù)統(tǒng)計(jì)結(jié)果作個(gè)性化動(dòng)態(tài)更新,各區(qū)內(nèi)的數(shù)據(jù)通過(guò)JS腳本根據(jù)對(duì)XML文件數(shù)據(jù)做統(tǒng)計(jì)分析后的結(jié)果作動(dòng)態(tài)更新。前端客戶端瀏覽器訪問(wèn)HTML文件,以個(gè)性化Web頁(yè)面的形式查看所有測(cè)試集下的匯總結(jié)果以及每個(gè)測(cè)試集下所有測(cè)試用例及結(jié)果詳情。
優(yōu)化后,統(tǒng)計(jì)分析與展示模塊由后端MySQL數(shù)據(jù)庫(kù)表和后端基于JSP文件與CSS文件的動(dòng)態(tài)Web服務(wù)構(gòu)成。前端瀏覽器中訪問(wèn)后端Web服務(wù)主界面JSP文件查看測(cè)試結(jié)果。統(tǒng)計(jì)分析與展示模塊與測(cè)試執(zhí)行模塊共用測(cè)試框架數(shù)據(jù)庫(kù)表,測(cè)試執(zhí)行模塊將測(cè)試集和測(cè)試用例及結(jié)果等數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)表,統(tǒng)計(jì)分析與展示模塊讀取數(shù)據(jù)庫(kù)表數(shù)據(jù)做統(tǒng)計(jì)分析。JSP文件分主界面JSP文件和結(jié)果細(xì)節(jié)JSP文件。主界面JSP文件中定義的整體布局與優(yōu)化前HTML文件中定義的基本一致,唯一區(qū)別是結(jié)果細(xì)節(jié)區(qū)不再在主界面下方顯示,而是以彈出新頁(yè)面的方式跳轉(zhuǎn)到結(jié)果細(xì)節(jié)JSP文件。主界面整體層疊樣式的處理機(jī)制與優(yōu)化前一致。主界面概要區(qū)、結(jié)果匯總區(qū)各表格數(shù)據(jù)通過(guò)JSP腳本訪問(wèn)數(shù)據(jù)庫(kù)表經(jīng)統(tǒng)計(jì)查詢(xún)后作動(dòng)態(tài)更新。查詢(xún)測(cè)試用例表中用例總數(shù)、用例成功數(shù)、用例失敗數(shù),并更新概要區(qū)表格數(shù)據(jù)。查詢(xún)測(cè)試集表中所有測(cè)試集,以一個(gè)測(cè)試集為一行,在結(jié)果匯總區(qū)表格中增加各測(cè)試集行,在測(cè)試用例表中根據(jù)測(cè)試用例表與測(cè)試集表的關(guān)聯(lián)字段testSuite_id以及result字段查詢(xún)各測(cè)試集下的用例總數(shù)、用例成功數(shù)、用例失敗數(shù),并更新結(jié)果匯總區(qū)表格數(shù)據(jù)。
結(jié)果細(xì)節(jié)JSP文件主要包括結(jié)果細(xì)節(jié)區(qū),在結(jié)果細(xì)節(jié)區(qū)以表格形式顯示某測(cè)試集下的所有測(cè)試用例細(xì)節(jié)信息。在主界面結(jié)果匯總區(qū)點(diǎn)擊某個(gè)測(cè)試集名超鏈接跳轉(zhuǎn)到結(jié)果細(xì)節(jié)JSP文件時(shí),將測(cè)試集名在測(cè)試框架數(shù)據(jù)庫(kù)測(cè)試集表中對(duì)應(yīng)的id字段值作參數(shù)傳入。結(jié)果細(xì)節(jié)JSP文件根據(jù)傳入的測(cè)試集id字段值查詢(xún)屬于該測(cè)試集的所有測(cè)試用例,以一條用例為一行,在結(jié)果細(xì)節(jié)區(qū)表格中增加各測(cè)試用例行,并將測(cè)試用例名、請(qǐng)求串?dāng)?shù)據(jù)、響應(yīng)串?dāng)?shù)據(jù)、用例執(zhí)行結(jié)果更新到結(jié)果細(xì)節(jié)區(qū)表格。
3 優(yōu)化前后結(jié)果統(tǒng)計(jì)分析與展示模塊頁(yè)面效果對(duì)比
優(yōu)化前,測(cè)試框架中結(jié)果展示主界面在Firefox 67.0b9版瀏覽器中正常加載后概要區(qū)和結(jié)果匯總區(qū)顯示效果如圖2所示。
優(yōu)化前,測(cè)試框架中結(jié)果展示主界面在Firefox 78.0b6版瀏覽器中無(wú)法正常加載時(shí)概要區(qū)和結(jié)果匯總區(qū)顯示異常效果如圖3所示。
優(yōu)化后,在瀏覽器中訪問(wèn)測(cè)試框架中部署在遠(yuǎn)程Web服務(wù)上的主界面JSP文件,主界面JSP概要區(qū)和結(jié)果匯總區(qū)在新版Firefox 78.0b6瀏覽器中可正常顯示,顯示效果與圖2一致。點(diǎn)擊某個(gè)測(cè)試集名后彈出的新頁(yè)面中結(jié)果細(xì)節(jié)區(qū)顯示效果如圖4所示。
4 結(jié)語(yǔ)
隨著瀏覽器技術(shù)的迭代更新,文檔對(duì)象技術(shù)不再受支持,前期設(shè)計(jì)的接口自動(dòng)化測(cè)試框架中部分功能使用受到影響。為了解決該問(wèn)題,本文對(duì)該自動(dòng)化測(cè)試框架做了設(shè)計(jì)優(yōu)化,將用于數(shù)據(jù)存儲(chǔ)的XML文件以MySQL數(shù)據(jù)庫(kù)表代替,將測(cè)試執(zhí)行模塊寫(xiě)XML文件改為寫(xiě)數(shù)據(jù)庫(kù)表,將結(jié)果統(tǒng)計(jì)分析與展示模塊由前端JS讀取XML文件數(shù)據(jù)改為后端JSP讀取數(shù)據(jù)庫(kù)表數(shù)據(jù)。優(yōu)化后的測(cè)試框架能在Microsoft Edge 84.0.522.52、Google Chrome 84.0.4147.105和Firefox 78.0b6等中正常使用,有更好的實(shí)用性和瀏覽器版本兼容性。
參考文獻(xiàn):
[1] 孫立哲.輕量級(jí)接口自動(dòng)化測(cè)試框架設(shè)計(jì)與實(shí)踐[J].計(jì)算機(jī)應(yīng)用與軟件,2020,37(1):27-30,36.
[2] Oracle. MySQL Reference Manual[EB/OL]. https://dev.mysql.com/doc/refman/5.6/en/column-indexes.html.
[3] 唐漢明.深入淺出MySQL[M].北京:人民郵電出版社,2014.
[4] Oracle. JavaServer Pages Technology [EB/OL].https://www.oracle.com/java/technologies/jspt.html.
[5] 陳丹丹.JSP項(xiàng)目開(kāi)發(fā)全程實(shí)錄[M].北京:清華大學(xué)出版社,2013.
[6] Baron S,Peter Z,Vadim T. 高性能MySQL[M]. 寧海元,周振興,彭立勛,等譯. 北京:電子工業(yè)出版社,2013:141-193.
[7] 黃威,聶藩,丁建完.關(guān)鍵字驅(qū)動(dòng)的測(cè)試自動(dòng)化框架模型與系統(tǒng)實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(4):57-60,64.
[8] Cay S Horstmann. Java核心技術(shù)[M]. 11版.林琪,蘇玨涵,等,譯.北京:機(jī)械工業(yè)出版社,2019.
【通聯(lián)編輯:梁書(shū)】