基金項(xiàng)目:2022年度廣東機(jī)電職業(yè)技術(shù)學(xué)院校級(jí)課題;項(xiàng)目名稱:技能競賽與課程教學(xué)融合共建——關(guān)于進(jìn)一步提升競賽教學(xué)轉(zhuǎn)化質(zhì)量的研究;項(xiàng)目編號(hào):YJZD2022-13。
作者簡介:王雅嫻(1989— ),女,廣東廣州人,助教,碩士;研究方向:軟件測試,云計(jì)算,分布式系統(tǒng)。
摘要:隨著科技的飛速發(fā)展,課程的教學(xué)手段也日新月異。在計(jì)算機(jī)相關(guān)專業(yè)課程的授課過程中,書本、幻燈片等傳統(tǒng)教學(xué)方式也逐漸不能滿足學(xué)生的學(xué)習(xí)和實(shí)踐需求。文章以“軟件測試”課程為例,根據(jù)課程需求設(shè)計(jì)了一套預(yù)埋缺陷的網(wǎng)站系統(tǒng)供學(xué)生實(shí)操。該系統(tǒng)使用Java+SpringBoot系統(tǒng)作為后端,Vue框架搭建前端,并借助云主機(jī)與彈性ELB功能加以部署,以應(yīng)對(duì)學(xué)生集中訪問網(wǎng)站的瞬時(shí)壓力。
關(guān)鍵詞:軟件測試;網(wǎng)站設(shè)計(jì);云服務(wù)
中圖分類號(hào):TP311? 文獻(xiàn)標(biāo)志碼:A
0? 引言
在現(xiàn)代化的教學(xué)過程中,尤其是偏向應(yīng)用的課程中,以視頻、動(dòng)畫、實(shí)際項(xiàng)目實(shí)踐為代表的立體化教學(xué)在課堂上占據(jù)的比例越來越大。一些傳統(tǒng)的教學(xué)手段,如書本學(xué)習(xí)、PPT演示正在逐漸被取代[1]。對(duì)于計(jì)算機(jī)相關(guān)的專業(yè)更是如此,如編程語言相關(guān)課程、人工智能相關(guān)課程,都需要學(xué)生通過大量實(shí)操和練習(xí)來掌握所學(xué)知識(shí)?!败浖y試”課程作為里面較為特殊的一門課,現(xiàn)成的實(shí)踐項(xiàng)目較為稀缺,其實(shí)踐所需要的網(wǎng)站、軟件需要預(yù)埋缺陷,即俗稱的“bug”,供學(xué)生學(xué)習(xí)缺陷的挖掘方法。且所部署的網(wǎng)站需要一定的并發(fā)能力,能夠在短時(shí)間內(nèi)承受學(xué)生的并發(fā)點(diǎn)擊量,且網(wǎng)站或軟件的訪問頁面、接口最好能夠假設(shè)在外網(wǎng),方便同學(xué)們課下的復(fù)習(xí)和練習(xí)。為了滿足以上需求,本文設(shè)計(jì)并實(shí)現(xiàn)了一套網(wǎng)站(后稱“被測網(wǎng)站”),使用云服務(wù)完成部署,并使用了彈性ELB功能以應(yīng)對(duì)并發(fā)壓力。
1? 系統(tǒng)需求分析和功能設(shè)計(jì)
被測網(wǎng)站應(yīng)是一套包含頁面、接口、數(shù)據(jù)庫的完整動(dòng)態(tài)網(wǎng)站,以滿足軟件測試的基本學(xué)習(xí)需求。網(wǎng)站主題采用市面上最常見的ERP系統(tǒng),系統(tǒng)包含用戶管理、訂單管理、客戶維護(hù)等頁面,網(wǎng)站具體包含模塊用戶管理、客戶管理、訂單管理、商品管理4個(gè)大模塊,如圖1所示。其中,每個(gè)模塊的重點(diǎn)功能如下:
1.1? 用戶管理
管理員權(quán)限管理功能,判斷當(dāng)前登錄用戶是否為管理員。管理員具有較高權(quán)限,可以對(duì)網(wǎng)站任意功能進(jìn)行操作。普通用戶應(yīng)只具備讀寫權(quán)限,對(duì)于一些敏感信息,如客戶信息、訂單信息不具備刪除權(quán)限;普通用戶對(duì)用戶管理模塊無訪問權(quán)限。
1.2? 客戶管理
客戶管理模塊分別對(duì)客戶的信息和訂單權(quán)限進(jìn)行管理。其中,部分客戶不具備開單權(quán)限,部分客戶具備訂單所有權(quán)限。
1.3? 訂單管理
訂單管理模塊提供對(duì)客戶訂單的增刪改查功能,其中訂單號(hào)的生成和管理與商品管理的出入庫功能相關(guān)聯(lián)。
1.4? 商品管理
商品的增刪改查,列表的展示需要支持分頁。子目錄中有商品的庫存管理功能。
2? 系統(tǒng)詳細(xì)設(shè)計(jì)
2.1? 系統(tǒng)總體結(jié)構(gòu)
根據(jù)前述需求,系統(tǒng)的整體結(jié)構(gòu)設(shè)計(jì)如圖2所示。
為了應(yīng)對(duì)多個(gè)授課班級(jí)同學(xué)同時(shí)訪問的壓力,可以預(yù)估最大的訪問瞬時(shí)壓力值Pmax如下,其中Nclass為班級(jí)數(shù)量,Nstu為班級(jí)人數(shù),F(xiàn)為網(wǎng)站的集中操作頻率:
Pmax=∑Nclass1Nstu×F
首先假設(shè)每臺(tái)云主機(jī)的帶寬為W,單人打開網(wǎng)站最大頁面所需瞬時(shí)下載流量為Wweb,可以預(yù)估云主機(jī)的數(shù)量為:
Necs=Wweb×PmaxW
由此,根據(jù)學(xué)生人數(shù)、網(wǎng)站大小和云主機(jī)帶寬可以確認(rèn)所需申請(qǐng)?jiān)浦鳈C(jī)的數(shù)量。在單臺(tái)云主機(jī)上,需要部署從前到后的所有程序,單臺(tái)云主機(jī)上的架構(gòu)如圖3所示。
其中,nginx可以配合ELB的流量分發(fā)功能,應(yīng)對(duì)瞬時(shí)高訪問壓力。網(wǎng)站采用Vue框架開發(fā),使用ajax與接口層進(jìn)行交互。api采取SpringBoot的mvc架構(gòu)[2],提供一系列網(wǎng)站所需接口,這種前后端分離的方式能最大程度上使前后端解耦,方便后期的部署和維護(hù)。數(shù)據(jù)庫采用MySQL。
2.2? 接口和數(shù)據(jù)庫設(shè)計(jì)
由于網(wǎng)站頁面較多,這里只以訂單管理頁面為例列舉所需接口。訂單管理前端頁面部分效果如圖4所示。
為了實(shí)現(xiàn)列表的增刪改查以及訂單號(hào)生成和關(guān)聯(lián)功能,此頁面需要的接口如表1所示。
所有接口采用RESTFUL規(guī)范化設(shè)計(jì)[3],通過類型指明基本用途,再根據(jù)參數(shù)不同,使用SpringBoot的mvc架構(gòu)自動(dòng)路由到order.java的相關(guān)接口中。所有訂單數(shù)據(jù)都寫到后端MySQL數(shù)據(jù)庫里,涉及表為order表與guest表,其中關(guān)聯(lián)客戶接口需要做約束:
只允許關(guān)聯(lián)已經(jīng)存在于guest表中的客戶。這個(gè)約束需要在接口中實(shí)現(xiàn),核心程序邏輯如圖5所示。
在MySQL中,order表與guest表的結(jié)構(gòu)分別設(shè)計(jì)如表2—3所示。
其中訂單表(order表)的guestId使用外鍵關(guān)聯(lián)到客戶表(guest表)中的同名字段,以防止訂單和無記錄的客戶相關(guān)聯(lián)。products字段記錄的是商品信息,每個(gè)訂單中包含多條商品記錄,信息以中括號(hào)+鍵值對(duì)的字符串形式存儲(chǔ)。
其他功能頁面采取同樣的接口設(shè)計(jì)與數(shù)據(jù)庫設(shè)計(jì)策略,此處不再贅述。
2.3? 向網(wǎng)站預(yù)埋缺陷
此網(wǎng)站的設(shè)計(jì)目的為軟件測試課程的實(shí)踐網(wǎng)站,故除了實(shí)現(xiàn)網(wǎng)站的所有正常功能之外,還要向網(wǎng)站中預(yù)埋bug。根據(jù)軟件測試中最常見的bug類型[4],可以簡單將預(yù)埋的bug分為幾類,并分布到不同的頁面中去,如圖6所示。最簡單構(gòu)造bug的方法如:遺漏輸入框相關(guān)校驗(yàn)、使部分頁面響應(yīng)式設(shè)計(jì)失效導(dǎo)致布局混亂、鏈接錯(cuò)誤、接口遺漏參數(shù)校驗(yàn)、缺少權(quán)限處理等,可以在圖1所示網(wǎng)站頁面中隨機(jī)挑選數(shù)個(gè)頁面進(jìn)行缺陷預(yù)埋。
3? 系統(tǒng)運(yùn)行和測試
本程序完成之后,部署在華為云服務(wù)上,云主機(jī)采用云耀云服務(wù)器HECS,這種服務(wù)器相比于普通ECS更輕量級(jí),適用于輕量級(jí)網(wǎng)站及應(yīng)用搭建?;趯W(xué)生人數(shù)和網(wǎng)站峰值流量(實(shí)際測試單人頻繁點(diǎn)擊網(wǎng)站的峰值流量<20KB/s),根據(jù)2.1中公式,本次系統(tǒng)部署使用HECS配置如下:1核CPU,2 GB內(nèi)存,2Mb/s公網(wǎng)帶寬。搭載EulerOS2.0 linux系統(tǒng)。Java環(huán)境為1.8.0_342。云主機(jī)共兩臺(tái),掛在ELB服務(wù)下。部署后,經(jīng)測試,網(wǎng)頁接口平均響應(yīng)速度在80ms左右。使用jmeter工具對(duì)單一接口進(jìn)行短時(shí)間并發(fā)訪問,在并發(fā)壓力1 000的情況下,接口響應(yīng)速度在120ms左右,cpu占用10%,內(nèi)存占用93%,可以考慮適當(dāng)提高云主機(jī)內(nèi)存配置。
4? 結(jié)語
本文基于云主機(jī)和ELB服務(wù),使用Vue+ SpringBoot前后端分離的方法完成了一個(gè)軟件測試用的ERP系統(tǒng),并預(yù)埋了部分bug供學(xué)生挖掘。該系統(tǒng)架構(gòu)部署靈活,易于維護(hù)和根據(jù)使用人數(shù)進(jìn)行橫向拓展,通過適當(dāng)修改可靈活用于多種教學(xué)和實(shí)踐場景。本系統(tǒng)已用于技能大賽的練習(xí)及軟件測試課程的日常教學(xué)。
參考文獻(xiàn)
[1]臧麗娜,賈蒙蒙.測試工具在軟件測試實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].福建電腦,2023(7):122-125.
[2]姚慧廣,趙岳松.Web編程中MVC模型的應(yīng)用[J].微機(jī)發(fā)展,2002(3):9-10.
[3]RICHARDSON L,RUBY S.RESTful web services[M].Cambridge:OReilly Media,2008.
[4]王蓁蓁.軟件測試?yán)碚摮醪娇蚣埽跩].計(jì)算機(jī)科學(xué),2014(3):12-16,35.
(編輯? 王雪芬)
Design and implementation of software-testing exercise website based on cloud service
Wang? Yaxian
(Guangdong Mechanical & Electrical Polytechnic, Guangzhou 510550, China)
Abstract:? With the rapid development of technology, teaching methods in courses have also been evolving. Traditional teaching methods such as textbooks and slides are gradually becoming insufficient to meet the learning and practical needs of students, especially in computer-related disciplines. In this paper, taking the software testing course as an example, a website system with pre-embedded defects was designed to facilitate students hands-on practice according to the course requirements. The system utilizes Java and SpringBoot as the backend, Vue framework for the front end, and leverages cloud hosting and Elastic Load Balancer (ELB) functionality to handle the momentary surge in website traffic when students access the system simultaneously.
Key words: software testing; website development; cloud service