当前位置: 首页 > news >正文

【在线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 sys

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

class 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/当前日期/调用函数名-当前具体日期.png
    def 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 time

from selenium.webdriver.common.by import By

from common.Utils import OJDriver

class OJListQuestions:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://124.70.16.162:8080/all_questions"  #题目列表页url
        self.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天(包含测试报告总结)。

 

 

相关文章:

  • 第十章Python语言高阶加强-SQL(数据库)
  • windows AndroidStudio上传maven中央仓库
  • MySQL约束详解:从入门到精通
  • java.util.Collections中常用api
  • Systemd安全加密备份系统与智能通知
  • 深信服Python开发面经及参考答案(110道题)
  • 第十四届蓝桥杯省赛真题解析(含C++详细源码)
  • 常见框架漏洞(五)----中间件IIS6
  • 罗米:《俄罗斯博物馆之旅》
  • 【C++11】异常
  • C语言学习笔记-9
  • Redis-x64-3.2.100.msi : Windows 安装包(MSI 格式)安装步骤
  • MessageQueue --- RabbitMQ可靠传输
  • [项目总结] 在线OJ刷题系统项目技术应用(下)
  • 同花顺客户端公司财报抓取分析
  • 【AI Infra】【RLHF框架】四、VeRL中PPO、GRPO、REINFORCE++、RLOO实现源码解析
  • Spring 怎么解决循环依赖问题?
  • 室内指路机器人是否支持与第三方软件对接?
  • 2025年渗透测试面试题总结-某四字大厂面试复盘扩展 二面 (题目+回答)
  • JavaScript 中的 Reflect 详解
  • 如何把做好的网站代码变成网页/阿里云免费建站
  • 千锋教育的口碑怎么样/seo免费优化
  • 淘宝店铺装修免费全套模板/什么是seo和sem
  • wordpress菜单显示在哪里设置/徐州百度seo排名优化
  • 长沙做网站竞网/今日热点新闻头条
  • 黄石网站开发/seo推广系统排名榜