


基金項目:2022年度廣東機電職業(yè)技術學院校級課題;項目名稱:技能競賽與課程教學融合共建——關于進一步提升競賽教學轉化質(zhì)量的研究;項目編號:YJZD2022-13。
作者簡介:王雅嫻(1989— ),女,廣東廣州人,助教,碩士;研究方向:軟件測試,云計算,分布式系統(tǒng)。
摘要:隨著科技的飛速發(fā)展,課程的教學手段也日新月異。在計算機相關專業(yè)課程的授課過程中,書本、幻燈片等傳統(tǒng)教學方式也逐漸不能滿足學生的學習和實踐需求。文章以“軟件測試”課程為例,根據(jù)課程需求設計了一套預埋缺陷的網(wǎng)站系統(tǒng)供學生實操。該系統(tǒng)使用Java+SpringBoot系統(tǒng)作為后端,Vue框架搭建前端,并借助云主機與彈性ELB功能加以部署,以應對學生集中訪問網(wǎng)站的瞬時壓力。
關鍵詞:軟件測試;網(wǎng)站設計;云服務
中圖分類號:TP311? 文獻標志碼:A
0? 引言
在現(xiàn)代化的教學過程中,尤其是偏向應用的課程中,以視頻、動畫、實際項目實踐為代表的立體化教學在課堂上占據(jù)的比例越來越大。一些傳統(tǒng)的教學手段,如書本學習、PPT演示正在逐漸被取代[1]。對于計算機相關的專業(yè)更是如此,如編程語言相關課程、人工智能相關課程,都需要學生通過大量實操和練習來掌握所學知識。“軟件測試”課程作為里面較為特殊的一門課,現(xiàn)成的實踐項目較為稀缺,其實踐所需要的網(wǎng)站、軟件需要預埋缺陷,即俗稱的“bug”,供學生學習缺陷的挖掘方法。且所部署的網(wǎng)站需要一定的并發(fā)能力,能夠在短時間內(nèi)承受學生的并發(fā)點擊量,且網(wǎng)站或軟件的訪問頁面、接口最好能夠假設在外網(wǎng),方便同學們課下的復習和練習。為了滿足以上需求,本文設計并實現(xiàn)了一套網(wǎng)站(后稱“被測網(wǎng)站”),使用云服務完成部署,并使用了彈性ELB功能以應對并發(fā)壓力。
1? 系統(tǒng)需求分析和功能設計
被測網(wǎng)站應是一套包含頁面、接口、數(shù)據(jù)庫的完整動態(tài)網(wǎng)站,以滿足軟件測試的基本學習需求。網(wǎng)站主題采用市面上最常見的ERP系統(tǒng),系統(tǒng)包含用戶管理、訂單管理、客戶維護等頁面,網(wǎng)站具體包含模塊用戶管理、客戶管理、訂單管理、商品管理4個大模塊,如圖1所示。其中,每個模塊的重點功能如下:
1.1? 用戶管理
管理員權限管理功能,判斷當前登錄用戶是否為管理員。管理員具有較高權限,可以對網(wǎng)站任意功能進行操作。普通用戶應只具備讀寫權限,對于一些敏感信息,如客戶信息、訂單信息不具備刪除權限;普通用戶對用戶管理模塊無訪問權限。
1.2? 客戶管理
客戶管理模塊分別對客戶的信息和訂單權限進行管理。其中,部分客戶不具備開單權限,部分客戶具備訂單所有權限。
1.3? 訂單管理
訂單管理模塊提供對客戶訂單的增刪改查功能,其中訂單號的生成和管理與商品管理的出入庫功能相關聯(lián)。
1.4? 商品管理
商品的增刪改查,列表的展示需要支持分頁。子目錄中有商品的庫存管理功能。
2? 系統(tǒng)詳細設計
2.1? 系統(tǒng)總體結構
根據(jù)前述需求,系統(tǒng)的整體結構設計如圖2所示。
為了應對多個授課班級同學同時訪問的壓力,可以預估最大的訪問瞬時壓力值Pmax如下,其中Nclass為班級數(shù)量,Nstu為班級人數(shù),F(xiàn)為網(wǎng)站的集中操作頻率:
Pmax=∑Nclass1Nstu×F
首先假設每臺云主機的帶寬為W,單人打開網(wǎng)站最大頁面所需瞬時下載流量為Wweb,可以預估云主機的數(shù)量為:
Necs=Wweb×PmaxW
由此,根據(jù)學生人數(shù)、網(wǎng)站大小和云主機帶寬可以確認所需申請云主機的數(shù)量。在單臺云主機上,需要部署從前到后的所有程序,單臺云主機上的架構如圖3所示。
其中,nginx可以配合ELB的流量分發(fā)功能,應對瞬時高訪問壓力。網(wǎng)站采用Vue框架開發(fā),使用ajax與接口層進行交互。api采取SpringBoot的mvc架構[2],提供一系列網(wǎng)站所需接口,這種前后端分離的方式能最大程度上使前后端解耦,方便后期的部署和維護。數(shù)據(jù)庫采用MySQL。
2.2? 接口和數(shù)據(jù)庫設計
由于網(wǎng)站頁面較多,這里只以訂單管理頁面為例列舉所需接口。訂單管理前端頁面部分效果如圖4所示。
為了實現(xiàn)列表的增刪改查以及訂單號生成和關聯(lián)功能,此頁面需要的接口如表1所示。
所有接口采用RESTFUL規(guī)范化設計[3],通過類型指明基本用途,再根據(jù)參數(shù)不同,使用SpringBoot的mvc架構自動路由到order.java的相關接口中。所有訂單數(shù)據(jù)都寫到后端MySQL數(shù)據(jù)庫里,涉及表為order表與guest表,其中關聯(lián)客戶接口需要做約束:
只允許關聯(lián)已經(jīng)存在于guest表中的客戶。這個約束需要在接口中實現(xiàn),核心程序邏輯如圖5所示。
在MySQL中,order表與guest表的結構分別設計如表2—3所示。
其中訂單表(order表)的guestId使用外鍵關聯(lián)到客戶表(guest表)中的同名字段,以防止訂單和無記錄的客戶相關聯(lián)。products字段記錄的是商品信息,每個訂單中包含多條商品記錄,信息以中括號+鍵值對的字符串形式存儲。
其他功能頁面采取同樣的接口設計與數(shù)據(jù)庫設計策略,此處不再贅述。
2.3? 向網(wǎng)站預埋缺陷
此網(wǎng)站的設計目的為軟件測試課程的實踐網(wǎng)站,故除了實現(xiàn)網(wǎng)站的所有正常功能之外,還要向網(wǎng)站中預埋bug。根據(jù)軟件測試中最常見的bug類型[4],可以簡單將預埋的bug分為幾類,并分布到不同的頁面中去,如圖6所示。最簡單構造bug的方法如:遺漏輸入框相關校驗、使部分頁面響應式設計失效導致布局混亂、鏈接錯誤、接口遺漏參數(shù)校驗、缺少權限處理等,可以在圖1所示網(wǎng)站頁面中隨機挑選數(shù)個頁面進行缺陷預埋。
3? 系統(tǒng)運行和測試
本程序完成之后,部署在華為云服務上,云主機采用云耀云服務器HECS,這種服務器相比于普通ECS更輕量級,適用于輕量級網(wǎng)站及應用搭建。基于學生人數(shù)和網(wǎng)站峰值流量(實際測試單人頻繁點擊網(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。云主機共兩臺,掛在ELB服務下。部署后,經(jīng)測試,網(wǎng)頁接口平均響應速度在80ms左右。使用jmeter工具對單一接口進行短時間并發(fā)訪問,在并發(fā)壓力1 000的情況下,接口響應速度在120ms左右,cpu占用10%,內(nèi)存占用93%,可以考慮適當提高云主機內(nèi)存配置。
4? 結語
本文基于云主機和ELB服務,使用Vue+ SpringBoot前后端分離的方法完成了一個軟件測試用的ERP系統(tǒng),并預埋了部分bug供學生挖掘。該系統(tǒng)架構部署靈活,易于維護和根據(jù)使用人數(shù)進行橫向拓展,通過適當修改可靈活用于多種教學和實踐場景。本系統(tǒng)已用于技能大賽的練習及軟件測試課程的日常教學。
參考文獻
[1]臧麗娜,賈蒙蒙.測試工具在軟件測試實驗教學中的應用[J].福建電腦,2023(7):122-125.
[2]姚慧廣,趙岳松.Web編程中MVC模型的應用[J].微機發(fā)展,2002(3):9-10.
[3]RICHARDSON L,RUBY S.RESTful web services[M].Cambridge:OReilly Media,2008.
[4]王蓁蓁.軟件測試理論初步框架[J].計算機科學,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