问卷系统测试报告

一.报告概述

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。性能方面稳定性优秀,大部分请求体验良好可以做到秒开,但高并发下会存在卡顿。综合评估,项目可用,但需要弥补部分功能的不足,和在高并发下造成的系统卡顿。

相关推荐
水无痕simon3 小时前
04 Git基础-记录每次更新到仓
git
无限进步_3 小时前
【C++】寻找数组中出现次数超过一半的数字:三种解法深度剖析
开发语言·c++·git·算法·leetcode·github·visual studio
一个程序猿老马14 小时前
012、远程协作:连接GitHub/Gitee与git remote
git·gitee·github
Lisonseekpan18 小时前
Git:如何将一个分支的特定提交合并到另一个分支?
java·大数据·git·后端·elasticsearch
pas13620 小时前
git 配置
git
独隅1 天前
Git误操作急救手册
大数据·git·elasticsearch
水无痕simon1 天前
03 Git 工作流程
git
一个程序猿老马1 天前
013、推送与拉取:git push与git pull的协作流程
大数据·git·elasticsearch
每天进步一点点️1 天前
GIT - 常用命令合辑
git