问卷系统测试报告

一.报告概述

1.项目背景与目的

问卷考试系统是一款基于Web的在线测评平台,主要用于:创建和管理各类问卷及考试、组织在线问卷考试和练习、收集和分析调查数据

验证系统各核心模块功能的完整性与正确性,确保功能无缺失、逻辑无错误。

验证系统界面的交互合理性与易用性,确保普通用户能快速上手,界面布局无错乱、显示无异常。

验证系统在常规操作场景下的基础性能,确保响应流畅,无明显卡顿或超时现象。

验证系统在主流浏览器及常用分辨率下的兼容性,确保功能与显示在各环境下均正常可用。

排查系统的异常处理能力,确保在面对非法操作、网络中断等异常场景时具备良好的容错性,无崩溃、无数据丢失。

记录系统存在的缺陷,并提出合理优化建议,为系统迭代优化提供依据。

2.测试环境

|------|------------------------------------|
| 操作系统 | Windows11 |
| 浏览器 | 谷歌147.0.7727.102/edge147.0.3912.72 |
| 测试工具 | Selenium自动化工具 Jmeter性能测试工具 |

二.测试用例设计

1.登录用例

2.注册用例

3.主界面用例

三.手工测试

测试浏览器:edge147.0.3912.72

1.登录页面

  • 输入正确账号错误密码,结果符合预期
  • 输入错误账号与正确密码
  • 输入正确账号正确密码,正确登录到主界面

2.注册页面

  • 账号已存在
  • 密码输入不同
  • 存在未输入项,提示跳出正确
  • 正确注册

3.首页测试

  • 选择框正确切换
  • 创建问卷/考试功能正确跳转

4.我的项目

  • 新建功能正确展开
  • 问卷调查/在线考试正确跳转
  • execel导入功能弹出正确
  • 文本导入

5.我的练习

  • 可查询正在正在进行和已完成的练习,选择正在进行,点击查询,可查看正在进行的练习
  • 二维码正确显示
  • 查询功能正确
  • 重置功能正确
  • 继续答题跳转正确
  • 删除功能正确
  • 测试题库开始练习跳转正确,点击后正确跳转

6.我的题库

  • 查询和重置
  • 正确新建和删除
  • 错误新建

7.问题管理

  • 展开框下拉正确
  • 查询和重置

8.模板广场

  • 搜索功能 无法查到对应模板
  • 分类筛选正确
  • .模板可正确删除
  • 模板下载功能可用
  • 模板预览
  • 模板应用
  • 添加模板 不输入关键信息
  • 输入信息正确添加模板

9.组织机构

  • 可正确展开机构树
  • 删除功能
  • 未输入关键信息的新建
  • 正确新建

10.个人设置

  • 正确设置
  • 错误设置提示
  • 修改密码 出现不可修改的问题

11.整体功能测试

  • 风格设置

四.兼容性测试

  • 谷歌浏览器页面正确显示
  • Edge浏览器页面正确显示

五.自动化测试

1.项目文件

2.Utils类设计

复制代码
import datetime
import os.path
import sys

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


class Driver:
    driver=""
    def __init__(self):
        options=Options()
        chrome_driver_path = r"C:\Users\aq\Downloads\chromedriver-win32\chromedriver-win32\chromedriver.exe"
        self.driver=webdriver.Chrome(service=Service(chrome_driver_path),options=options)
        self.driver.implicitly_wait(30)
    def getScreenShot(self):
        #屏幕截图方法
        dirname=datetime.datetime.now().strftime("%Y-%m-%d")
        if not os.path.exists("../images/"):
           os.mkdir("../images/")
        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)

NaireDriver=Driver()

3.登录模块

复制代码
import time

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver
class Login:
    url=""
    driver=""
    def __init__(self):
        self.url="http://49.235.61.184:8080/user/login"
        self.driver=NaireDriver.driver
        self.driver.get(self.url)
        
    def LoginSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(Keys.DELETE)

        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys(Keys.DELETE)

        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()
        NaireDriver.getScreenShot()
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR,"#rc-tabs-0-tab-exam")
    def LoginFas(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()
        time.sleep(3)
        actul=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > div.ant-alert.ant-alert-error > div > div").text
        NaireDriver.getScreenShot()
        assert actul=="错误的用户名和密码"

3.注册模块

复制代码
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver

class List:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/user/register"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)

    def ListSuc(self):
        self.driver.find_element(By.CSS_SELECTOR, "#name").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#name").send_keys("用户名")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("qq123456")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("123456")
        NaireDriver.getScreenShot()
        self.driver.back()
    def ListRep(self):
        #重复账号
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("用户名")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("qq123456")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button > span").click()
        sleep(2)

        NaireDriver.getScreenShot()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div.ant-alert.ant-alert-error > div > div").text
        assert actual=="账号已存在"
    def PasNoMatch(self):
        #密码不一致
        sleep(2)
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys(Keys.DELETE)
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys(Keys.DELETE)

        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("用户名")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("23456")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("123455")
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button > span").click()
        NaireDriver.getScreenShot()

4.首页功能

复制代码
import time
from time import sleep

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver

class Home:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/home"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)

    def Nologin(self):
        #未登录状态下的访问
        NaireDriver.getScreenShot()
        sleep(3)
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").text
        print(actual)
        assert actual=="登 录"
    def HomeSuc(self):
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()
        sleep(3)
        NaireDriver.getScreenShot()
        self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > aside > div > div:nth-child(1) > ul")
        self.driver.find_element(By.CSS_SELECTOR,"#rc-tabs-0-tab-exam")
        self.driver.find_element(By.CSS_SELECTOR,"#rc-tabs-0-tab-survey")
        self.driver.find_element(By.CSS_SELECTOR, "#rc-tabs-0-tab-surveyHistory")
        self.driver.find_element(By.CSS_SELECTOR, "#rc-tabs-0-tab-examHistory")
        self.driver.find_element(By.CSS_SELECTOR, "#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-sm-24.ant-col-md-24.ant-col-lg-24.ant-col-xl-8 > div > div.ant-card-body > div > a:nth-child(1)")
        self.driver.find_element(By.CSS_SELECTOR, "#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-sm-24.ant-col-md-24.ant-col-lg-24.ant-col-xl-8 > div > div.ant-card-body > div > a:nth-child(2)")
        NaireDriver.getScreenShot()

home=Home()
home.Nologin()
home.HomeSuc()

5.我的项目

复制代码
from time import sleep
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver

class Project:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/project"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)
    def Nologin(self):
        #未登录状态下的访问
        NaireDriver.getScreenShot()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").text
        assert actual=="登 录"

    def ProjectSuc(self):
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        #测试新建功能
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[2]').click()

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[1]/span/div/div/button').click()
        self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div/ul/li[1]/span').click()

        actual=self.driver.find_element(By.CSS_SELECTOR,"#editor > div.survey-main-panel > div.survey-main-panel-toolbar > div:nth-child(2) > div > button.ant-btn.ant-btn-primary.ant-btn-sm > span").text
        assert actual=="保 存"
        #进行创建并保存后返回项目页面
        self.driver.find_element(By.CSS_SELECTOR,"#editorContent > div > div > div.header > div.header-content > div.sc-aXZVg.LyTMt.title.quill-container.not-focus > div > pre > div.ql-editor > p").send_keys("1")
        #保存
        self.driver.find_element(By.CSS_SELECTOR,"#editor > div.survey-main-panel > div.survey-main-panel-toolbar > div:nth-child(2) > div > button.ant-btn.ant-btn-primary.ant-btn-sm > span").click()

        NaireDriver.getScreenShot()
        sleep(5)
        self.driver.back()
        self.driver.back()
    def find(self):
        # 搜索功能的测试
        self.driver.find_element(By.XPATH, '//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[2]/div/div/div/div/div/div/div/span/span/input').send_keys("1")
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[2]/div/div/div/div/div/div/div/span/span/span/button').click()

        actual = self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div/div[1]/div/div/div/div/div/div/div/div/div/div[1]/span[1]').text
        assert actual == "1"

6.我的练习

复制代码
from time import sleep

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver


class Exercise:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/exercise"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)
    def Nologin(self):
        #未登录状态下的访问
        NaireDriver.getScreenShot()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").text
        assert actual=="登 录"

    def MyExercise(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        #登录之后进行 已完成状态查询后重置测试重置和查询
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[3]').click()
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div[2]/div[1]/form/div/div[1]/div/div/div[2]/div/div/div/div').click()
        self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div/div/div[2]/div/div/div/div[2]').click()
        sleep(2)
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div[2]/div[1]/form/div/div[2]/div/div/div[2]/div/div/div/div/div/div[2]/button').click()

        #找到对应文字进行判断查询
        actual=self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div.ant-pro-table > div:nth-child(2) > div > div.ant-table-wrapper > div > div > div > div > div > table > tbody > tr > td > div > div.ant-empty-description").text
        assert actual=="暂无数据"
        sleep(2)
        self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div.ant-pro-table > div.ant-pro-card.ant-pro-table-search.ant-pro-table-search-query-filter > form > div > div:nth-child(2) > div > div > div.ant-col.ant-form-item-control > div > div > div > div > div > div:nth-child(1) > button > span").click()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div.ant-pro-table > div:nth-child(2) > div > div.ant-table-wrapper > div > div > div > div > div > table > tbody > tr > td:nth-child(6) > div > div:nth-child(2) > a").text
        assert  actual=="二维码"

    def TestExercise(self):
        #进行测试题库的测试
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div[1]/div[1]/div[1]/div/div[2]').click()
        #跳转到测试题库
        #点击开始练习确保正确跳转
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div/table/tbody/tr[1]/td[3]/div/div').click()
        self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div[2]/div/div[2]/div/div/div[2]/div[1]/div').click()
        actual=self.driver.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/div[1]/div').text
        assert actual=="测试题库2026-04-20"

7.题库中心

复制代码
from time import sleep

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver

class Center:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/exercise"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)

    def Nologin(self):
        # 未登录状态下的访问
        NaireDriver.getScreenShot()
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").text
        assert actual == "登 录"

    def MyQuestion(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        #测试新建功能

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[4]/div').click()
        self.driver.find_element(By.XPATH,'//li[@title=\"我的题库\"]').click()
        #进入我的题库页面后点击新建
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div[1]/div/div[2]/div[1]/div/div/button').click()
        self.driver.find_element(By.XPATH,'//input[@placeholder=\"请输入题库名称\"]').send_keys("test")
        self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div[3]/div/div/div[2]/form/div[1]/div/div[4]/div/div/div[2]/div/div/div/div[1]').click()

        self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div[3]/div/div/div[2]/form/div[1]/div/div[4]/div/div[1]/div[2]/div[1]/div/div/div[2]/div/div/div/div[2]/div/div/div/div[1]').click()

        # 点击"确定"按钮
        self.driver.find_element(By.XPATH,'/html/body/div[5]/div/div[3]/div/div/div[3]/div/div/div[2]/button').click()
        #进行查询
        self.driver.find_element(By.XPATH,'//*[@id="name"]').send_keys("test")

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/form/div/div[3]/div/div/div[2]/div/div/div/div/div/div[2]/button').click()
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/form/div/div[3]/div/div/div[2]/div/div/div/div/div/div[1]/button').click()
        NaireDriver.getScreenShot()

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/form/div/div[3]/div/div/div[2]/div/div/div/div[1]/div/div[1]/button').click()
        NaireDriver.getScreenShot()
center=Center()
center.Nologin()
center.MyQuestion()

8.模板广场

复制代码
from time import sleep

from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver

class Model:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/exercise"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)

    def Nologin(self):
        # 未登录状态下的访问
        NaireDriver.getScreenShot()
        actual = self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").text
        assert actual == "登 录"

    def Logintemplate(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        #模板广场 创建功能
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[5]').click()
        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[1]/span/div/div/button').click()
        #保存
        self.driver.find_element(By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[5]').click()

        #添加模板名称和分类
        sleep(1)
        self.driver.find_element(By.XPATH,'//*[@id="name"]').send_keys("test")
        self.driver.find_element(By.XPATH,'//*[@id="category"]').send_keys("my")

        #保存按钮
        self.driver.find_element(By.XPATH,'//*[@id="survey-modal-container"]/div/div[2]/div/div[2]/div[3]/button[2]').click()
        #关闭
        self.driver.find_element(By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[1]').click()
        #跳转私有库查找
        self.driver.find_element(By.XPATH,'//*[@id="rc-tabs-3-tab-private"]').click()

        name=self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div/div/div/div/div/div/div/div[2]/div[1]/div/div[1]/a').text
        assert name=="test"

mode=Model()
mode.Nologin()
mode.Logintemplate()

9.个人设置

复制代码
from time import sleep
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By

from Common.Utils import NaireDriver

class Set:
    url = ""
    driver = ""

    def __init__(self):
        self.url = "http://49.235.61.184:8080/project"
        self.driver = NaireDriver.driver
        self.driver.get(self.url)
    def Nologin(self):
        #未登录状态下的访问
        NaireDriver.getScreenShot()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").text
        assert actual=="登 录"

    def SetSuc(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]/div').click()
        self.driver.find_element(By.XPATH,'//li[@title=\"个人设置\"]').click()

        #设置基本信息
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.DELETE)

        self.driver.find_element(By.XPATH,'//*[@id="name"]').send_keys("test_name")
        self.driver.find_element(By.XPATH,'//*[@id="phone"]').send_keys("1588899432")
        self.driver.find_element(By.XPATH,'//*[@id="email"]').send_keys("12345@qq.com")
        self.driver.find_element(By.XPATH,'//*[@id="profile"]').send_keys("Nihao")

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button').click()

    def SetNoname(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]/div').click()
        self.driver.find_element(By.XPATH,'//li[@title=\"个人设置\"]').click()

        #设置基本信息
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.DELETE)

        self.driver.find_element(By.XPATH,'//*[@id="phone"]').send_keys("1588899432")
        self.driver.find_element(By.XPATH,'//*[@id="email"]').send_keys("12345@qq.com")
        self.driver.find_element(By.XPATH,'//*[@id="profile"]').send_keys("Nihao")

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button').click()

        warn=self.driver.find_element(By.XPATH,'//*[@id="name_help"]').text
        assert warn=="请输入您的昵称!"

    def SetNoEmail(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]/div').click()
        self.driver.find_element(By.XPATH,'//li[@title=\"个人设置\"]').click()

        #设置基本信息
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.DELETE)

        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys("test_name")
        self.driver.find_element(By.XPATH,'//*[@id="phone"]').send_keys("1588899432")
        self.driver.find_element(By.XPATH,'//*[@id="profile"]').send_keys("Nihao")

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button').click()

        warn=self.driver.find_element(By.XPATH,'//*[@id="email_help"]/div').text
        assert warn=="请输入您的邮箱!"

    def SetNoNum(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]/div').click()
        self.driver.find_element(By.XPATH,'//li[@title=\"个人设置\"]').click()

        #设置基本信息
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.DELETE)

        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys("test_name")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys("12345@qq.com")
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys("Nihao")

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button').click()

        warn=self.driver.find_element(By.XPATH,'//*[@id="phone_help"]/div').text
        assert warn=="请输入您的昵称!"
    def NoPerson(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123456qq")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button > span").click()

        self.driver.find_element(By.XPATH, '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]/div').click()
        self.driver.find_element(By.XPATH, '//li[@title=\"个人设置\"]').click()

        # 设置基本信息
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys(Keys.DELETE)
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.CONTROL + "a")
        self.driver.find_element(By.XPATH, '//*[@id="profile"]').send_keys(Keys.DELETE)

        self.driver.find_element(By.XPATH, '//*[@id="name"]').send_keys("test_name")
        self.driver.find_element(By.XPATH, '//*[@id="phone"]').send_keys("1588899432")
        self.driver.find_element(By.XPATH, '//*[@id="email"]').send_keys("12345@qq.com")

        self.driver.find_element(By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button').click()
        warn = self.driver.find_element(By.XPATH, '//*[@id="profile_help"]/div').text
        assert warn == "请输入个人简介!"
set=Set()
set.Nologin()
set.NoPerson()

六.问题概述

该项目存在部分未实现功能,如模板广场功能下的搜索功能,并存在一些不符合直觉的设计,如右上角头像点击无效,不可跳转到个人设置

同时在创建练习等创建项目后,并不会自动跳转到首页,而是需要再次手动点击

七.性能测试

  • 线程组设计
  • 并发设计
  • 聚合报告
  • Respones timers over time
  • Transactions per second
  • 性能测试报告

六.总结

本次对问卷系统功能测试,自动化测试以及性能测试验证,整体功能实现全面,核心业务可正常使用,不存在致命bug。性能方面稳定性优秀,大部分请求体验良好可以做到秒开,但高并发下会存在卡顿。综合评估,项目可用,但需要弥补部分功能的不足,和在高并发下造成的系统卡顿。

相关推荐
kyriewen14 小时前
我让AI替我写Git提交信息,老板以为我每天工作16小时
前端·javascript·git
難釋懷16 小时前
Redis网络模型-单线程和多线程网络模型变更
网络·redis·git
不做无法实现的梦~17 小时前
Git 新手到团队协作与 GitHub/GitCode 指南
git·github·gitcode
谷哥的小弟17 小时前
(最新版)Git&GitHub实操图文详解教程(02)—安装Git
git·github·安装·配置·下载·图文教程
高斯林.神犇17 小时前
Git远程仓库操作流程
git
谷哥的小弟18 小时前
(最新版)Git&GitHub实操图文详解教程(01)—Git的起源
git·github
小此方18 小时前
Re:Linux系统篇(十四)工具篇 · 五:Git 高效协作实战与“三板斧”秘籍
linux·git·github
拾-光1 天前
【Git】命令大全:从入门到高手,100 个最常用命令速查(2026 版)
java·大数据·人工智能·git·python·elasticsearch·设计模式
Snooker_1461 天前
TRAE、VSCode上进行git管理
ide·git·vscode