【在線OJ項目測試報告】

朋友們、伙計們,我們又見面了,本期來給大家帶來關于在線OJ項目的測試報告,如果看完之后對你有一定的啟發,那么請留下你的三連,祝大家心想事成!

C 語 言 專 欄:C語言:從入門到精通

數據結構專欄:數據結構

個? 人? 主? 頁?:stackY、

C + + 專 欄? ?:C++

Linux 專?欄? :Linux

目錄

1. 項目介紹

2. 測試計劃

3. 測試工具

4. 涉及到的測試動作?

5. 設計測試用例

6. 執行測試

6.1 功能性測試

6.2 兼容性測試

7. 自動化測試?

7.1 common模塊實現

7.2 tests模塊實現

7.2.1?OJ首頁自動化測試?

7.2.2?題目列表頁自動化測試

7.2.3?刷題頁面

7.2.4 結合測試

8. 項目測試bug簡述

9. 測試結論?


1. 項目介紹

在線OJ項目我主要是通過模仿牛客、LeetCode等在線OJ平臺自主實現的一個刷題網站,雖然目前里面沒有多少題目,但是后面會慢慢添加一些比較有意思的題目;

我們這個項目主要實現的功能就是在線判題:

我們點擊任意的題目列表,就可以跳轉到題目的具體描述頁面;

在這個頁面我們可以對題目進行閱讀并寫出對應的代碼然后點擊提交,并得到代碼運行的結果;


項目源碼:https://gitee.com/yue-sir-bit/load-balancing-type---oj

項目博客:https://blog.csdn.net/Yikefore/article/details/145696953?spm=1001.2014.3001.5501

2. 測試計劃

項目完成之后,我們本篇對我寫的在線OJ項目進行一下測試;

我們的測試計劃是:

  • 1. 設計測試用例
  • 2. 根據測試用例進行對應的測試
  • 3. 編寫自動化測試腳本

接下來就一一進行實現:

3. 測試工具

Pycharm、selenium、chrome-driver(本地)、Chrome、Edge

4. 涉及到的測試動作?

功能測試:覆蓋了在首頁點擊按鈕跳轉到題目列表頁,在題目列表頁點擊指定題目進入刷題頁面,在刷題頁面可以可以寫代碼并提交代碼;

自動化測試:使用自動化測試接口來檢查首頁、題目列表頁、刷題頁面是否存在BUG。?

5. 設計測試用例

?對于在線OJ項目設計測試用例,我主要從以下幾個方面進行了設計:?

  • 功能測試
  • 界面測試
  • 性能測試
  • 易用性測試
  • 兼容性測試
  • 安全性測試
  • 弱網測試

??????

6. 執行測試

設計出了測試用例之后,接下來對對照測試用例來進行具體的測試(由于我的設備有限,所以我只能把我所能測的設計用例進行測試):

6.1 功能性測試

??


??


??


??


??


??


6.2 兼容性測試

?


剩下的測試用例就不一一展示了;?

7. 自動化測試?

在自動化測試這里我使用本地的Chrom瀏覽器驅動;

Chrome版本:

自動化測試用例:

自動化測試這里我一共測試了三個頁面

OJ首頁、題目列表頁、指定題目的刷題頁;


測試文件的設計:

  • common模塊:進行瀏覽器驅動的創建以及公共方法(屏幕截圖)的實現;
  • tests模塊:對需要測試的頁面分文件單獨編寫自動化測試腳本;
  • images:存放屏幕截圖并對屏幕截圖按照日期進行分類,并以調用方法和調用時間給對應的屏幕截圖命名(方便查找)

7.1 common模塊實現

我在Utils.py文件中實現了對于chrome驅動的創建以及屏幕截圖的實現:

Utils.py:

import datetime
import os
import sysfrom selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Serviceclass Driver:driver = ""def __init__(self):chrome_driver_path = "E:\\Python\\chromedriver-win64\\chromedriver.exe"  #本地驅動所在路徑options = Options()options.add_argument("--remote-allow-origins=*")self.driver = webdriver.Chrome(service=Service(chrome_driver_path), options=options) #創建驅動self.driver.implicitly_wait(2)   #查找時的隱式等待#屏幕截圖功能# ../images/當前日期/調用函數名-當前具體日期.pngdef GetScreenShot(self):dirname = datetime.datetime.now().strftime("%Y-%m-%d")# 判斷是否存在,如果不存在則創建if not os.path.exists("../images/" + dirname):os.mkdir("../images/" + dirname)# 截圖文件名前面添加調用方法的名稱filename = sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"self.driver.save_screenshot("../images/" + dirname + "/" + filename)
#創建單例
OJDriver = Driver()

7.2 tests模塊實現

在這個模塊主要對三個頁面進行自動話測試,最后再將三個頁面結合測試;

7.2.1?OJ首頁自動化測試?

對與OJ首頁的測試,我做了以下一個工作:

通過url訪問到OJ首頁,然后對頁面元素依次進行了查找,并進行了屏幕截圖;

自動化測試代碼:

OJHomePage.py

7.2.2?題目列表頁自動化測試

在題目列表頁我主要做了以下工作:

通過url訪問到題目列表頁,依次查找頁面元素,并截圖,然后點擊任意一個題目查看能否進入;

OJListQuestionsPage.py:

import timefrom selenium.webdriver.common.by import Byfrom common.Utils import OJDriverclass OJListQuestions:url = ""driver = ""def __init__(self):self.url = "http://124.70.16.162:8080/all_questions"  #題目列表頁urlself.driver = OJDriver.driver                         #創建驅動self.driver.get(self.url)                             #訪問道題目列表頁# 測試題目列表頁面def ListQuestionsPage(self):# 檢查頁面元素actual = self.driver.find_element(By.CSS_SELECTOR, "body > div > div.question_list > h1").text# 斷言是否存在assert actual == "OnlineJudge題目列表"#檢查題目列表元素#編號self.driver.find_element(By.CSS_SELECTOR, "body > div > div.question_list > table > tbody > tr:nth-child(1) > th:nth-child(1)")#標題并self.driver.find_element(By.CSS_SELECTOR, "body > div > div.question_list > table > tbody > tr:nth-child(1) > th:nth-child(2)")#難度self.driver.find_element(By.CSS_SELECTOR, "body > div > div.question_list > table > tbody > tr:nth-child(1) > th:nth-child(3)")# 截圖保存OJDriver.GetScreenShot()#找到任意一個題目并點擊self.driver.find_element(By.CSS_SELECTOR, "body > div > div.question_list > table > tbody > tr:nth-child(2) > td:nth-child(2) > a").click()

7.2.3?刷題頁面

在刷題頁面我主要做了以下工作:

通過url進入到任意一個題目的刷題頁面,然后依次查找個元素,點擊提交按鈕查看能否提交,并截圖,因為我的這個代碼編輯區域是第三方插件,所以自動化測試這里就沒有進行寫代碼的測試;

OJOneQuestionPage.py:

7.2.4 結合測試

將上面三個頁面的自動化測試結合起來,一次性跑完三個頁面的自動化測試:

RunTest.py:

8. 項目測試bug簡述

界面測試:在刷題頁面題目描述和返回結果背景都為白色,不能很好進行區分;

兼容性測試:對于移動端用戶來說頁面不能伸縮導致豎屏使用時體驗感差,題目文字被遮擋嚴重。

9. 測試結論?

本次項目測試通過(已經測試完成的,還有由于設備原因還有未測試的);

項目開發耗時一周,項目測試耗時2天(包含測試報告總結)。

?

?

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

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

相關文章

【HFP】藍牙HFP應用層核心技術研究

免提配置文件(Hands-Free Profile, HFP)作為實現設備間音頻通信的關鍵協議,廣泛應用于車載系統、藍牙耳機等場景。本文將基于最新技術規范,深入剖析HFP應用層的功能要求、協議映射及編解碼器支持,為藍牙開發工程師提供詳盡的技術指南。 一、HFP應用層功能全景圖 HFP定義…

橫掃SQL面試——PV、UV問題

📊 橫掃SQL面試:UV/PV問題 🌟 什么是UV/PV? 在數據領域,UV(Unique Visitor,獨立訪客) 和 PV(Page View,頁面訪問量) 是最基礎也最重要的指標&…

【C++】第八節—string類(上)——詳解+代碼示例

hello,又見面了! 云邊有個稻草人-CSDN博客 C_云邊有個稻草人的博客-CSDN博客——C專欄(質量分高達97!) 菜鳥進化中。。。 目錄 一、為什么要學習string類? 1.1 C語言中的字符串 1.2 面試題(暫不做講解) …

如何判斷JVM中類和其他類是不是同一個類

如何判斷JVM中的類是否為同一個類 在Java虛擬機(JVM)中,判斷兩個類是否相同需要同時滿足以下三個條件: 1. 類全限定名必須相同 包括包名類名的完整路徑必須完全一致例如:java.lang.String和com.example.String被視為不同類 2. 加載該類的…

ifconfig 使用詳解

目錄 一、基本語法二、常見用途及示例1. 查看所有網絡接口信息2. 啟用/禁用網絡接口3. 配置 IP 地址和子網掩碼4. 修改 MAC 地址5. 啟用混雜模式(Promiscuous Mode)6. 設置 MTU(最大傳輸單元) 三、其他選項四、常見問題1. 新系統中…

1. 標準庫的強依賴(核心原因)

1. 標準庫的強依賴(核心原因) 容器操作(如 std::vector 擴容) 當標準庫容器(如 std::vector)需要重新分配內存時,它會嘗試移動現有元素到新內存,而非拷貝(為了性能&…

【MySQL】常用SQL--持續更新ing

一、配置信息類 1.查看版本 select version; 或 select version(); 2.查看配置 show global variables where variable_name in (basedir,binlog_format,datadir,expire_logs_days,innodb_buffer_pool_size,innodb_log_buffer_size,innodb_log_file_size,innodb_log_files_i…

Day82 | 靈神 | 快慢指針 重排鏈表

Day82 | 靈神 | 快慢指針 重排鏈表 143.重排鏈表 143. 重排鏈表 - 力扣(LeetCode) 思路: 筆者直接給跪了,這個難度真是mid嗎 直接去看靈神的視頻 環形鏈表II【基礎算法精講 07】_嗶哩嗶哩_bilibili 1.簡單來說就是&#xf…

常見的微信個人號二次開發功能

一、常見開發功能 1. 好友管理 好友列表維護 添加/刪除好友 修改好友信息(備注、標簽等) 分組管理 創建/編輯/刪除標簽 好友分類與篩選 2. 消息管理 信息發送 支持多類型內容:文本、圖片、視頻、文件、小程序、名片、URL鏈接等 附加功…

Android打包及上架應用市場問題處理

一、Gradle 配置參數含義: compileSdkVersion: 29 表示項目編譯時使用的 Android SDK 版本為 API 29(Android 10),僅影響編譯階段的行為(如代碼語法檢查、資源處理等),不直接影響運行時兼容性。…

Docker 從入門到進階 (Win 環境) + Docker 常用命令

目錄 引言 一、準備工作 1.1 系統要求 1.2 啟用虛擬化 二、安裝Docker 2.1 安裝WSL 2 2.2 安裝Docker Desktop 2.3檢查是否安裝成功 三、配置Docker 3.1 打開Docker配置中心 四、下載和管理Docker鏡像 4.1 拉取鏡像 4.2 查看已下載的鏡像 4.3 運行容器 4.4 查看正…

計算機視覺5——運動估計和光流估計

一、運動估計 (一)運動場(Motion Field) 定義與物理意義 運動場是三維場景中物體或相機運動在二維圖像平面上的投影,表現為圖像中每個像素點的運動速度矢量。其本質是場景點三維運動(平移、旋轉、縮放等&a…

介質訪問控制——信道劃分

什么是介質訪問 介質訪問(Medium Access)? 是計算機網絡中一種規則,用來解決 ??“多臺設備如何共享同一根網線/信道傳輸數據”? 的問題。你可以理解為: 想象一條只能容一輛車通過的獨木橋(網絡中的網線、Wi-Fi信道…

ERP系統五大生產模式概述

制造業中,選擇合適的生產模式是企業高效運營的關鍵。 以下是ERP系統支持的五大核心生產模式及其特點總結: 1. MTS(按庫存生產) - 定義:先生產后銷售,基于需求預測提前備貨。 - 適用場景:需求穩定、標準化程度高的產品(如日用品、家電)。 - 優點:交貨快、生產…

ubantu操作筆記

安裝ssh服務 1.1 基本安裝 sudo apt update sudo apt install openssh-server -y sudo systemctl start ssh sudo systemctl enable ssh 1.2 配置遠程root登陸 # 0. 設置root密碼 sudo passwd root # 1. 安裝vim依賴 sudo apt-get install vim -y # 2. 編輯配置文件 s…

2-vim編輯器的安裝和使用

一.常用工具介紹 前言: 我們想要編寫c語言代碼,可以使用linux系統提供的工具才能進行代碼的編輯。代碼編寫后,我們還需要驗證代碼的書寫正確。這就需要借助編譯器來進行驗證。linux系統為我們提供了比較好的開發工具。 vim編輯器&#xff…

小剛說C語言刷題——第16講 switch語句

在日常生活中,我們經常會遇到多分支的情況。當分支較多時,我們可以用嵌套的if-else語句。但是這樣會讓結構顯得混亂。這個時候我們可以考慮用switch語句。 1.語法格式 switch (表達式) { case 常量表達式1: 語句1; break; case 常量表達式…

使用 Python 連接 PostgreSQL 數據庫,從 `mimic - III` 數據庫中篩選數據并導出特定的數據圖表

要使用 Python 連接 PostgreSQL 數據庫,從 mimic - III 數據庫中篩選數據并導出特定的數據圖表,你可以按照以下步驟操作: 安裝所需的庫:psycopg2 用于連接 PostgreSQL 數據庫,pandas 用于數據處理,matplot…

過孔的載流能力

PCB過孔的載流能力(即能安全承載的電流大小)主要與以下因素相關: 1. 過孔的尺寸 孔徑(直徑):孔徑越大,橫截面積越大,載流能力越強。 孔壁銅厚:電鍍銅的厚度&#xff08…

(done) 并行計算 CS149 Lecture2 (現代多核處理器) (SIMD, 多核, 超標量, 數據預取, 超線程)

視頻 url: https://www.bilibili.com/video/BV1du17YfE5G?spm_id_from333.788.videopod.sections&vd_source7a1a0bc74158c6993c7355c5490fc600&p2 大佬筆記 url: https://zhuanlan.zhihu.com/p/8129089606 先看視頻: Lecture 0 ~ 28min 的內容基本就是 c…