基于SpringBoot的抽獎系統測試報告

?一、編寫目的

本報告為抽獎系統測試報告,本項目可用于團體抽獎活動,包括了用戶注冊,用戶登錄,修改獎項以及抽獎等功能。?

二、項目背景

抽獎系統采用前后端分離的方法來實現,同時使用了數據庫來存儲相關的數據,同時將其部署到云服務器上。

前端主要有三個頁面構成:登錄頁、注冊頁、抽獎頁,以上模擬實現了較復雜的抽獎系統。其結合后端實現了以下的主要功能:登錄、增加抽獎活動、進行抽獎活動以及退出登錄等功能。
由于本項目沒有設計普通用戶注冊功能,所以所有的抽獎用戶又管理人員登錄之后再對普通用戶進行添加。
該在線抽獎系統可以實現個人用戶簡單的獲獎記錄,時間、標題、內容以及發布者等都可以進行詳細地查看。?

三、相關模塊

1.登錄模塊:登錄時用Session獲取用戶表,在獲取用戶id來使后端將用戶信息存儲在Session中,在登錄時通過獲取用戶對應的賬號以及密碼進行校驗,如果都匹配則給予token令牌放行,登錄通過,如果校驗失敗則需要重新輸入登錄信息,再次進行登錄校驗。

2.抽獎模塊:用戶通過請求發送數據到后端,后端獲取抽獎人員id并通過RequestMapping注解來處理前端的請求并返回響應。

3獎項模塊:通過后端實現了新增獎項,修改獎項,刪除獎項等功能,在修改獎項采用了批量更新,使用的方法是Mybaits批量操作,提升了效率。

四、測試環境

硬件配置

內存:8.00 GB

軟件配置

Windows11,Chrome瀏覽器(功能測試)

攔截統一:通過攔截器對http請求進行統一攔截并采用統一的響應數據格式。?

五、測試功能

該在線抽獎系統主要實現了以下幾個功能:登錄,活動中心設置,抽獎頁面設置。

登錄功能:

管理員登錄頁面實現了注冊功能,由于該活動由管理員來進行,普通賬戶注冊功能也是在管理員后臺進行信息填寫實現注冊。登錄成功后就會跳轉到活動中心頁面。在右上角有退出登錄按鍵,但是在未登錄情況下強制訪問頁面會提示用戶未登錄,強制返回到登錄頁。

活動中心頁面:

活動中心頁面分為三個模塊:活動管理、獎品管理、人員管理

活動管理:

可以查看所有活動,包括已經結束以及正在進行中的活動,可以新建抽獎活動。

獎品管理:

可以在獎項列表頁面查看獎品數量,在新建活動獎品頁面添加獎品。

人員管理:

可以在人員列表頁面查看人員信息,在人員注冊頁面填寫信息注冊參與活動的普通用戶

抽獎頁面設置:

在抽獎頁面點擊“開始”按鈕就會開始抽獎,此時就可以看到人員名稱正在翻滾,隨后產生一個中獎結果。在所有的獎項進行完畢之后,后續的活動狀態則會轉變為已經完成,頁面也會變成中獎名單以及分享結果鏈接,分享結果鏈接則是直接展現中獎頁面

六、測試過程

功能測試:

測試用例如下圖

?實際執行測試的部分操作步驟/截圖

1.正常登錄

2.用戶注冊測試

?3.跳轉到注冊頁面進行注冊

?4.登錄成功進入活動中心頁面

5.新建抽獎活動

圈選獎品

?圈選參與人員

創建活動

?創建成功

6.查看活動列表

?7.查看獎品列表

點擊下一頁,查看其他的獎品

?

8.創建獎品測試

上傳圖片

?創建獎品

?查看獎品列表

9.抽獎人員注冊測試(普通用戶注冊測試)

填寫信息

查看人員列表頁

?10.抽獎活動模塊測試

進入抽獎頁面

完成抽獎,查看該獎品的中獎人員

點擊下一步,測試下一個獎項的進行狀態

?完成所有獎品的抽獎行為之后,查看中獎名單

點擊分享鏈接,然后新建瀏覽器頁面粘貼進行訪問,查看中獎名單

?查看活動狀態轉換

自動化代碼編寫:

根據腦圖進行測試用例的編寫,可以按照每個頁面一個測試類的方式來組織。

首先,需要單獨創建一個公共屬性類,以方便進行代碼復用。

接下來,在各個測試類中進行測試用例的編寫。為了便于運行以及修改,可以使用測試套件。此外,啟動和現場截圖是頻繁進行復用的操作,因此可以單獨創建一個類進行存儲,并在需要的時候進行調用。

在編寫測試用例時,需要注意添加隱式等待,以確保頁面能夠正確加載和顯示。這樣可以有效避免因頁面未完全加載導致的測試失敗情況。

總之,按照腦圖的規劃,可以將測試用例按照頁面進行分組,結合測試套件和公共屬性類,以及單獨存儲啟動和現場截圖的類,來進行測試用例的編寫和組織。

1. 添加相關依賴pom.xml

<dependencies>
<!-- ? ? ? ?添加selenium依賴-->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.seleniumhq.selenium</groupId>
? ? ? ? ? ? <artifactId>selenium-java</artifactId>
? ? ? ? ? ? <version>4.0.0</version>
? ? ? ? </dependency>
?
? ? ? ? <!-- ? ? ? ?保存屏幕截圖需要用到的包-->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>commons-io</groupId>
? ? ? ? ? ? <artifactId>commons-io</artifactId>
? ? ? ? ? ? <version>2.6</version>
? ? ? ? </dependency>
?
? ? ? ? <!-- ? ? ? ?添加junit5依賴-->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.junit.jupiter</groupId>
? ? ? ? ? ? <artifactId>junit-jupiter</artifactId>
? ? ? ? ? ? <version>5.8.2</version>
? ? ? ? ? ? <scope>test</scope>
? ? ? ? </dependency>
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.junit.platform</groupId>
? ? ? ? ? ? <artifactId>junit-platform-suite</artifactId>
? ? ? ? ? ? <version>1.8.2</version>
? ? ? ? ? ? <scope>test</scope>
? ? ? ? </dependency>
? ? </dependencies>

2. 新建包并在包下創建測試類以及公共類
以下是所建立的是common公共包和Tests測試包:

1公共類

創建驅動、保存現場截圖
注意:在保存現場截圖的時候命名是按時間來進行文件夾的劃分,然后圖片的名稱要體現出測試類的類名,方便進行問題的追溯。
注意文件名的動態獲取,注意時間格式的設置。

2登錄頁面測試?

?創建驅動,并打開頁面
?測試頁面是否正常打開
?測試正常登錄:多參數測試
?測試用戶注冊:多參數測試

?注意測試的順序,使用Order注解指定,否則可能會因為執行順序不對導致測試失敗

3獎項頁測試

?測試獎項頁是否可以正常打開

?測試獎品是否可以正確添加
?測試強制訪問后臺頁面,順便測試了“退出”按鈕
?測試抽獎頁是否可以正常打開
?測試抽獎頁的開始按鈕是否可以正常使用
?測試抽獎頁的抽獎行為是否正常

4抽獎頁測試

測試抽獎結果是否正確

測試抽獎結果分享鏈接能否正確訪問

測試活動狀態轉換是否正確

性能測試:?

使用Jmeter進行簡單性能測試:針對登錄、查看活動列表、人員列表,獎品頁面等功能進行簡單的性能測試。

對項目功能進行性能測試

七、項目源碼

   @Test@Order(1)void  LoginSuccess() throws InterruptedException {//打開登錄界面EdgeOptions options = new EdgeOptions();options.addArguments("--remote-allow-origins=*");EdgeDriver driver = new EdgeDriver(options);driver.get("http://62.234.43.231:8539/login.html");//輸入賬號密碼driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.findElement(By.cssSelector("#username")).sendKeys("13721899916");driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.findElement(By.cssSelector("#password")).sendKeys("dudududu");//提交按鈕driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.findElement(By.cssSelector("#submit")).click();//跳轉到列表//獲取urldriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);String cur_url = driver.getCurrentUrl();driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);Assertions.assertEquals("http://127.0.0.1:9090/blogin.html",cur_url);//如果url是測試通過driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);String cur_admin = driver.findElement(By.cssSelector("#username")).getText();Assertions.assertEquals("admin",cur_admin);//展示admin}@Testvoid BlogList(){EdgeOptions options = new EdgeOptions();options.addArguments("--remote-allow-origins=*");EdgeDriver driver = new EdgeDriver(options);driver.get("http://127.0.0.1:9090/activities-list.html");

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905111.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905111.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Apache Flink 與 Flink CDC:概念、聯系、區別及版本演進解析

Apache Flink 與 Flink CDC:概念、聯系、區別及版本演進解析 在實時數據處理和流式計算領域,Apache Flink 已成為行業標桿。而 Flink CDC(Change Data Capture) 作為其生態中的重要組件,為數據庫的實時變更捕獲提供了強大的能力。 本文將從以下幾個方面進行深入講解: 什…

單片機-STM32部分:9、定時器

飛書文檔https://x509p6c8to.feishu.cn/wiki/A749wx8T0ioqfgkzZKlc9poknUf SMT32F1系列共有8個定時器&#xff1a; 基本定時器&#xff08;TIM6、TIM7&#xff09; 通用定時器&#xff08;TIM2、TIM3、TIM4、TIM5&#xff09; 高級定時器&#xff08;TIM1、TIM8&#xff09…

uniapp-商城-51-后臺 商家信息(logo處理)

前面對頁面基本進行了梳理和說明&#xff0c;特別是對驗證規則進行了闡述&#xff0c;并對自定義規則的兼容性進行了特別補充&#xff0c;應該說是干貨滿滿。不知道有沒有小伙伴已經消化了。 下面我們繼續前進&#xff0c;說說頁面上的logo上傳組件&#xff0c;主要就是uni-fil…

ideal創建Springboot項目(Maven,yml)

以下是使用 IntelliJ IDEA 創建基于 Maven 的 Spring Boot 項目并使用 YAML 配置文件的詳細步驟&#xff1a; 一、創建 Spring Boot 項目 啟動項目創建向導 打開 IntelliJ IDEA&#xff0c;點擊“File”->“New”->“Project”。 在彈出的“New Project”窗口中&#…

MATLAB中矩陣和數組的區別

文章目錄 前言環境配置1. 數據結構本質2. 運算規則&#xff08;1&#xff09;基本運算&#xff08;2&#xff09;特殊運算 3. 函數與操作4. 高維支持5. 創建方式 前言 在 MATLAB 中&#xff0c;矩陣&#xff08;Matrix&#xff09; 和 數組&#xff08;Array&#xff09; 的概…

iTwin 數據報表(只是簡單的原型不代表實現)

大概想法是 前端從schema和class中選中感興趣的property內容生成ecsql語句傳遞給后端后端解析ecsql并提供公開接口給各個分析工具&#xff0c;如excel&#xff0c;poewerBI等&#xff08;Odata或者直接選擇來自網站&#xff09;再由分析工具做進一步的處 還未想好的點 如何存…

Spring AI 系列——使用大模型對文本內容分類歸納并標簽化輸出

原理概述 利用大語言模型&#xff08;LLM&#xff09;實現文本分類&#xff0c;核心思想是通過預訓練模型理解輸入文本的語義&#xff0c;并將其映射到預先定義好的分類標簽。在這個過程中&#xff0c;我們借助 Spring AI Alibaba 提供的能力&#xff0c;使用阿里云 DashScope…

LeetCode 高頻題實戰:如何優雅地序列化和反序列化字符串數組?

文章目錄 摘要描述題解答案題解代碼分析編碼方法解碼方法 示例測試及結果時間復雜度空間復雜度總結 摘要 在分布式系統中&#xff0c;數據的序列化與反序列化是常見的需求&#xff0c;尤其是在網絡傳輸、數據存儲等場景中。LeetCode 第 271 題“字符串的編碼與解碼”要求我們設…

GitHub打開緩慢甚至失敗的解決辦法

在C:\Windows\System32\drivers\etc的hosts中增加如下內容&#xff1a; 20.205.243.166 github.com 199.59.149.236 github.global.ssl.fastly.net185.199.109.153 http://assets-cdn.github.com 185.199.108.153 http://assets-cdn.github.com 185.199.110.153 http://asset…

重生之我在2024學Fine-tuning

一、Fine-tuning&#xff08;微調&#xff09;概述 Fine-tuning&#xff08;微調&#xff09;是機器學習和深度學習中的一個重要概念&#xff0c;特別是在預訓練模型的應用上。它指的是在模型已經通過大量數據訓練得到一個通用的預訓練模型后&#xff0c;再針對特定的任務或數據…

計算機網絡 4-2-1 網絡層(IPv4)

2 IPv4分組 各協議之間的關系 IP協議(Internet Protocol, 網際協議)是互聯網的核心&#xff01; ARP協議用于查詢同一網絡中的<主機IP地址&#xff0c;MAC地址>之間的映射關系 ICMP協議用于網絡層實體之間相互通知“異常事件” IGMP協議用于實現IP組播 2.1 結構<首…

Docker中運行的Chrome崩潰問題解決

問題 各位看官是否在 Docker 容器中的 Linux 桌面環境&#xff08;如Xfce&#xff09;上啟動Chrome &#xff0c;遇到了令人沮喪的頻繁崩潰問題&#xff1f;尤其是在打開包含圖片、視頻的網頁&#xff0c;或者進行一些稍復雜的操作時&#xff0c;窗口突然消失&#xff1f;如果…

K8S cgroups詳解

以下是 Kubernetes 中 cgroups&#xff08;Control Groups&#xff09; 的詳細解析&#xff0c;涵蓋其核心原理、在 Kubernetes 中的具體應用及實踐操作&#xff1a; 一、cgroups 基礎概念 1. 是什么&#xff1f; cgroups 是 Linux 內核提供的 資源隔離與控制機制&#xff0c…

javaer快速從idea轉戰vscode

插件安裝列表 在插市場安裝下面插件 Extension Pack for JavaSpring Boot Tools 配置文件提示Database Client Database/No-SQL管理工具httpYac - Rest Client .http文件編輯、API測試工具 https://httpyac.github.io/guide/request.htmlGit Graph 圖形化Git工具XML by Red H…

[項目總結] 抽獎系統項目技術應用總結

&#x1f338;個人主頁:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;?熱門專欄: &#x1f9ca; Java基本語法(97平均質量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection與…

【趙渝強老師】TiDB SQL層的工作機制

TiDB節點的SQL層&#xff0c;即TiDB Server&#xff0c;它負責將SQL翻譯成Key-Value操作&#xff0c;將其轉發給共用的分布式Key-Value存儲層TiKV&#xff0c;然后組裝TiKV返回的結果&#xff0c;最終將查詢結果返回給客戶端。這一層的節點都是無狀態的&#xff0c;節點本身并不…

性能遠超SAM系模型,蘇黎世大學等開發通用3D血管分割基礎模型

如果把人的身體比作一座龐大的城市&#xff0c;那么血管無疑就是這座城市的「道路」&#xff0c;動脈、靜脈以及毛細血管對應著高速公路、城市道路以及鄉間小道&#xff0c;它們相互協作&#xff0c;通過血液將營養物質、氧氣等輸送到身體各處&#xff0c;從而維持著這座「城市…

git高效殺器——cz-customizable 搭配 commitlint

What is cz-customizable and commitlint? cz-customizable 一款可定制化的Commitizen插件(也可作為獨立工具),旨在幫助創建如約定式提交規范的一致性提交消息。commitlint commitlint 是一個用于檢查 Git 提交信息的工具,它可以幫助開發者保持提交信息的規范性和一致性。…

Spark 中RDD、Job,stage,task的關系

目錄 1. 概念定義1.1 Job1.2 Stage1.3 Task 2. 關系總結3. 示例分析代碼示例執行過程 4. Spark中的運行流程5. 關鍵點5.1 寬依賴和窄依賴5.2 并行度5.3 性能優化 **6. 總結****1. RDD的核心作用****1.1 什么是RDD&#xff1f;****1.2 RDD與Job、Stage、Task的關系** **2. Job、…

Kubernetes基礎(三十二):Worker節點啟動全解析

Worker節點是Kubernetes集群的"肌肉"&#xff0c;負責實際運行業務負載。本文將深入剖析Worker節點的完整啟動流程&#xff0c;并揭秘生產環境中的關鍵優化點。 一、啟動流程全景圖 二、核心啟動階段詳解 1. 系統初始化&#xff08;0-30秒&#xff09; 關鍵任務&a…