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