【软件工程】测试规格
1. 引言
1.1简介
本次的测试用例是基于核心代码基本开发完毕,在第一代系统基本正常运行后编写的,主要目的是为了后续开发与维护的便利性。
该文档主要受众为该系统后续开发人员,并且在阅读此文档前最后先阅读本系统的需求文档、概要设计文档与详细设计文档。在本文档中,我们将依据需求文档中所描述的功能模块进行黑盒测试并编写其测试用例,依据概要设计文档与详细设计文档进行白盒测试并编写其测试用例。
1.2术语定义
黑盒测试
黑盒测试也称功能性测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
白盒测试
白盒测试指考虑系统或组件的内部机制的测试形式,也称为结构性测试。白盒测试要求软件测试工程师也需要具有编程能力。白盒测试的方法主要可分为两种:一种是基于逻辑结构的测试(逻辑覆盖测试),另一种则是基于控制流图的测试(控制流图覆盖测试)。
功能性测试
按照系统需求定义中的功能定义部分对系统实行的系统级别的测试。
非功能性测试
按照系统需求定义中的非功能定义部分(如系统的性能指标,安全性能指标等)对系统实行的系统级别的测试。
测试用例
测试人员设计出来的用来测试软件某个功能的一种情形。
2. 系统结构
2.1硬件设计
该系统主要基于软件部分的开发,所以对于硬件部分,只需要满足运行软件这一个需求即可,具体来说即:
-
PC机一台,安装Windows11操作系统
-
CPU:P4 1.8GHz以上
-
内存:1GB以上
-
分辨率:推荐1920 × \times × 1080
2.2软件设计
主要的模块组分为两个部分,现将每一部分拆解开来,对于该系统,所包含的主要模块如下图所示:
图1.学生成绩管理系统模块设计图
3.测试用例设计
3.1白盒测试
在白盒测试中,我们对登录模块和注册模块采用条件组合覆盖和基本路径覆盖两种方法进行测试用例的编写。
3.1.1登录模块:
表3-1 登录模块
登录模块 |
---|
1.1 模块描述:输入用户名,密码与验证码,登录进系统 |
1.2 功能:接受用户输入的用户名,密码与验证码,并逐一检查验证码,用户名与密码是否正确,如正确则登入,失败则提示。 |
1.3 性能:能够检查用户名、密码的正确性。 |
1.4 输入项:用户名,密码与验证码。 |
1.5 输出项:成功登录、“验证码错误”或“账号或密码错误”。 |
输入为(用户名与密码, 验证码)
记A为正确的验证码,a为错误的验证码
记B为正确匹配的用户名与密码,b为不匹配的用户名与密码
条件组合覆盖:流程图如下
图2登录模块流程逻辑图
-
验证码正确 记作 T1
-
验证码错误 记作 T1非
-
条件匹配 记作 T2
-
条件不匹配 记作 T2非
表3-2:条件组合覆盖基本路径测试用例
测试用例 | 通过路径 | 覆盖条件 | 覆盖组合号 |
---|---|---|---|
【(A , b),(账号或密码错误)】 | ①②⑤⑥⑦⑧ | T1、T2非 | 1、4 |
【(a , B),(验证码错误)】 | ①②③④ | T1非、T2 | 2、3 |
【(A , B),(登录成功)】 | ①②⑤⑥⑨⑩ | T1、T2 | 1、3 |
基本路径覆盖:控制流图如下
图3:控制流图
Path1(基线路径) L1:1-2-3-5-6-8
Path2(翻转节点3) L2:1-2-3-4-8
Path3(翻转节点6) L3:1-2-3-5-6-7-8
表3-3:基本路径测试用例
测试用例 | 通过路径 |
---|---|
【(A , B),(登录成功)】 | L1 |
【(A , b),(账号或密码错误)】 | L3 |
【(a , B),(验证码错误)】 | L2 |
3.1.2注册模块
表3-4注册模块
注册模块 |
---|
1.1 模块描述:注册一个新的用户。 |
1.2 功能:输入用户名等信息,注册一个新的用户。 |
1.3 性能:能过检查用户名、密码等的正确性。 |
1.4 输入项:用户名、密码、密保问题及答案。 |
1.5 输出项:“注册成功”、“请输入用户名”、“用户名不规范”、“请输入密码”、“密码格式不规范”、“密码太简单了哦,加上字母试试吧”、“请选择密保问题”、“请输入密保答案”。 |
条件组合覆盖:流程图如下
图4注册模块流程逻辑图
-
用户名不为空 记作 T1
-
用户名为空 记作 T1非
-
用户名规范 记作 T2
-
用户名不规范 记作 T2非
-
密码为空 记作 T3
-
密码不为空 记作 T3非
-
密码规范 记作 T4
-
密码不规范 记作 T4非
-
密码复杂度符合要求 记作 T5
-
密码复杂度不符合要求 记作 T5非
-
已选择密保 记作 T6
-
未选择密保 记作 T6非
-
已输入密保问题 记作 T7
-
未输入密保问题 记作 T7非
-
已输入密保答案 记作 T8
-
未输入密保答案 记作 T8非
输入为(用户名, 密码, 密保问题,密保答案)
记规范的用户名为A1,不规范的用户名为A2,用户名为空为A3
记规范且复杂度符合要求的密码为B1,规范且复杂度不符合要求的密码为B2,不规范且复杂度符合要求的密码为B3,不规范且复杂度不符合要求的密码为B4
密码为空为B5
记密保问题及答案非空为C1,密保问题及答案为空为C2
记密保答案非空为D1,密保答案为空为D2
表3-5条件组合覆盖路径
测试用例 | 通过路径 | 覆盖条件 | 覆盖组合号 |
---|---|---|---|
【(A1、B1、C1、D1),(注册成功)】 | (1、2、5、8、11、14、17、20、23、24) | T1、T2、T3、T4、T5、T6、T7、T8 | 1、3、5、7、9、11、13、15 |
【( A3、B5、C2、D2),(请输入用户名)】 | (1、2、3、4) | T1非、T2非、T3非、T4非、T5非、T6非、T7非、T8非 | 2、4、6、8、10、12、14、16 |
图5:基本路径覆盖:控制流图如下
Path1(基线路径)L1:1-2-3-5-7-9-11-13-15-17-18
Path2 (翻转节点3) L2:1-2-3-4-18
Path3 (翻转节点5) L3:1-2-3–5-6-18
Path4 (翻转节点7) L4:1-2-3-5-7-8-18
Path5(翻转节点9) L5:1-2-3-5-7-9-10-18
Path6(翻转节点11) L6:1-2-3-5-7-9-11-12-18
Path7(翻转节点13) L7:1-2-3-5-7-9-11-13-14-18
Path8(翻转节点15) L8:1-2-3-5-7-9-11-13-15-16-18
输入为(用户名, 密码, 密保问题,密保答案)
记规范的用户名为A1,不规范的用户名为A2,用户名为空为A3
记规范且复杂度符合要求的密码为B1,规范且复杂度不符合要求的密码为B2,不规范且复杂度符合要求的密码为B3,不规范且复杂度不符合要求的密码为B4
密码为空为B5
记密保问题及答案非空为C1,密保问题及答案为空为C2
记密保答案非空为D1,密保答案为空为D2
表3-6:注册模块基本路径测试用例
测试用例 | 通过路径 |
---|---|
【(A1 , B1 , C1 , D1),(注册成功)】 | L1 |
【(A3 , B1 , C1 , D1),(请输入用户名)】 | L2 |
【(A2 , B1 , C1 , D1),(用户名不规范)】 | L3 |
【(A1 , B5 , C1 , D1),(请输入密码)】 | L4 |
【(A1 , B3 , C1 , D1),(密码格式不规范)】 | L5 |
【(A1 , B2 , C1 , D1),(密码太简单了哦,加上字母试试吧)】 | L6 |
【(A1 , B1 , C2 , D1),(请选择密保问题)】 | L7 |
【(A1 , B1 , C1 , D2),(请输入密保答案)】 | L8 |
3.2黑盒测试
3.2.1注册功能
功能描述:用户在注册界面按照要求输入用户名、密码、密保问题、密保答案后,点击注册即可注册成功。
等价类划分:
输入参数 | 有效等价类 | 无效等价类 |
---|---|---|
注册的学号 | 1. 9个数字2. 20开头 | 3. 长度<94. 长度>95. 含有非数字其他字符 |
密码 | a. 6~20个任意字符 | b. 长度<6c. 长度>20 |
密保问题选择 | A. 从已有问题中选择一个问题 | |
密保答案 | 一. 任意字符 |
测试用例(基本选择覆盖):
编号 | 输入 | 输出 | 覆盖的等价类 |
---|---|---|---|
1 | (202308012 ,123abc. ,你最喜欢的书,111) | 注册成功 | 1、2、a、A、一(基本测试用例) |
2 | (abcdefg ,123abc. ,你最喜欢的书,111) | 注册失败 | 3、5、a、A、一 |
3 | (202256545585 ,123abc. ,你最喜欢的书,111) | 注册失败 | 4、a、A、一 |
4 | (a到z ,123abc. ,你最喜欢的书,111) | 注册失败 | 4、5、a、A、一 |
5 | (2034565545% ,123abc. ,你最喜欢的书,111) | 注册失败 | 2、4、5、a、A、一 |
6 | (203456745 ,123 ,你最喜欢的书,111) | 注册失败 | 1、2、b、A、一 |
7 | (203456726 ,a到z ,你最喜欢的书,111) | 注册失败 | 1、2、c、A、一 |
3.2.2修改学生信息功能
功能描述:在学生信息管理界面点击修改按钮后,在新出现的界面按照要求输入新的学生信息后,点击确定即修改成功。主要修改的信息包括学生姓名,学生性别。
等价类划分:
输入参数 | 有效等价类 | 无效等价类 |
---|---|---|
学生姓名 | 1. 1到10的汉字和·的组合,其中·不能出现在第一位和最后一位 | 2. ·出现在第一位3. ·出现在最后一位4. 含其他字母5. 长度大于10 |
学生性别 | a. 男b. 女 | c. 除了男女之外的所有输入 |
测试用例:
编号 | 输入 | 输出 | 覆盖的等价类 |
---|---|---|---|
1 | (张三,男) | 修改成功 | 1、a(基本测试用例) |
2 | (张三,女) | 修改成功 | 1、b |
3 | (张·三,第三性别) | 修改失败 | 1、c |
4 | (·张三,男) | 修改失败 | 2、a |
5 | (张三·,女) | 修改失败 | 3、b |
6 | (张三boy,男) | 修改失败 | 4、a |
7 | (张三三三三·三三三三三,女) | 系统异常 | 5、b |
3.2.3修改成绩/编辑成绩功能
功能描述:在这修改成绩/编辑成绩界面,按照要求输入成绩后,即会修改成功。
等价类划分:
输入参数 | 有效等价类 | 无效等价类 |
---|---|---|
学生成绩 | 1. 0到100的数字 | 2. 小于03. 大于1004. 非数字字符5. 非0.5的小数 |
测试用例:
编号 | 输入 | 输出 | 覆盖的等价类 |
---|---|---|---|
1 | 95 | 编辑/修改成绩操作成功 | 1 |
2 | -63 | 编辑/修改成绩操作失败 | 2 |
3 | 1000 | 编辑/修改成绩操作失败 | 3 |
4 | a26 | 编辑/修改成绩操作失败 | 4 |
5 | 86.3 | 编辑/修改成绩操作失败 | 5 |
4.测试评估
4.1测试任务评估
本系统测试用时约10周,共计测试了6个功能模块,包括登录模块、网页表象增加模块、申诉成绩模块、编辑成绩模块、修改学生信息模块、添加学生模块。本次测试时间和内容都比较紧张,本组自己认为较为优异的完成了测试的既定目标。
为了让学生成绩管理系统成功完整的运行,在测试过程中,测试组各测试人员分工明确,严格按照实验指导书上的流程进行白盒与黑盒测试,得到了令人满意的结果。
4.2测试对象评估
总体来说,测试对象基本符合测试阶段质量要求。虽然在信息修改模块中出现了一个小错误,但影响较小,且通过后续的修正完成了对程序缺陷的修复,并在重新测试中展现了良好的性能。在系统功能方面,经过测试,本系统逻辑判断完整,系统容错率高,未产生无响应和死锁现象。
相关文章:

【软件工程】测试规格
1. 引言 1.1简介 本次的测试用例是基于核心代码基本开发完毕,在第一代系统基本正常运行后编写的,主要目的是为了后续开发与维护的便利性。 该文档主要受众为该系统后续开发人员,并且在阅读此文档前最后先阅读本系统的需求文档、概要设计文…...
Nginx中间件服务:负载均衡(调度算法)
文章目录 引言I 原理1.1 后端服务器在负载均衡调度中的状态1.2 调度算法II upstreamd的应用2.1 加权负载均衡的服务器列表2.2 AB测试中使用upstream切分流量2.3 基于URL的HASH2.4 IP_HASHsee also引言 作用 转发功能:按照一定的调度算法(轮询、权重)将客户端发来的请求转发…...

dm8数据迁移工具DTS
dm8数据迁移工具DTS DTS工具介绍 DM数据迁移工具提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DM数据迁移工具采用向导方式引导用户通过简单的步骤完成需要的操作。 DM数据迁移工具支持: ◆ 主流大型数据库Oracle、SQLServer、MyS…...
【QT教程】QML与C++的交互
主页 软件开发 QT6 QML高级编程补天云火鸟自动化创作平台您能够创建大约3000 个短视频一天可以轻松创建多达 100 个视频 QML与C的交互 使用AI技术辅助生成 【QT免费公开课】您可以到这里观看大量的QT视频课程 【QT付费视频课程】QT QML C 高级扩展开发 目录 1 QML与C的交互…...

idea maven 打包 内存溢出 报 GC overhead limit exceeded -> [Help 1]
idea 使用maven打包 报GC overhead limit exceeded -> [Help 1] 解决方法: 打开settings -> 点开如同所示 将 vm Options 参数 设为 -Xmx8g...

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--创建新主题
前言 你可以在wordpress里面下载使用人家打包好的主题,但可能不是很好用,接下来就自己做一个自己的主题。你需要先找到xampp文件夹–htdocs–wordpress(我给更名为wplocal)–wp-content–themes 进入该文件夹之后你可以看到你之前下载导入的所有主题文件…...

docker从入门到熟悉
一、什么是docker? Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付…...
国家开放大学《消费者权益保护法》形考任务答案
答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 消费者田女士买回一盒饼干价格20元,准备给小孩吃…...

element-ui card 组件源码分享
今日简单分享 card 组件源码,主要从以下两个方面: 一、card 组件页面结构 二、card 组件属性 2.1 header 属性,设置 header,也可以通过 slot#header 传入 DOM,类型 string,无默认值。 组件使用部分&#…...

MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞
MPLS基本转发过程,隧道特性 标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作。 倒数第二跳弹出特性PHP(Penultimate Hop Popp…...
ubuntu16.04安装vscode那些事
1)安装deb包。 用ftp传输到ubuntu后,进入ftp的目录下, sudo dpkg -i code_1.32.3-1552606978_amd64.deb 安装完成后,进入/usr/share/applications/,找到vscode的图标,右键, copy to ,选择deskt…...

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别
分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序…...
不重复数字
map就感觉很舒服 题目描述 给定 n 个数,要求把其中重复的去掉,只保留第一次出现的数。 输入格式 本题有多组数据。 第一行一个整数 T,表示数据组数。 对于每组数据: 第一行一个整数 n。 第二行 n 个数,表示给定的数。…...
C# 访问修饰符 默认
命名空间下的元素:类(Class)中的成员:结构(Struct)中的成员:接口(Interface)中的成员:接口(Interface)本身:枚举ÿ…...

使用向量检索和rerank 在RAG数据集上实验评估hit_rate和mrr
文章目录 背景简介代码实现自定义检索器向量检索实验向量检索和rerank 实验 代码开源 背景 在前面部分 大模型生成RAG评估数据集并计算hit_rate 和 mrr 介绍了使用大模型生成RAG评估数据集与评估; 在 上文 使用到了BM25 关键词检索器。接下来,想利用向…...

Java栈和队列的实现
目录 一.栈(Stack) 1.1栈的概念 1.2栈的实现及模拟 二.队列(Queue) 2.1队列的概念 2.2队列的实现及模拟 2.3循环队列 2.4双端队列(Deque) 一.栈(Stack) 1.1栈的概念 栈:一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作…...

我的C++奇迹之旅:内联函数和auto关键推导和指针空值
文章目录 📝内联函数🌠 查看内联函数inline方式🌉内联函数特性🌉面试题 🌠auto关键字(C11)🌠 auto的使用细则🌉auto不能推导的场景 🌠基于范围的for循环(C11)🌠范围for的…...

Redis主从集群-主从复制(通俗易懂)
为什么要搭建主从集群? 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据…...

【C++算法竞赛 · 图论】图论基础
前言 图论基础 图的相关概念 图的定义 图的分类 按数量分类: 按边的类型分类: 边权 简单图 度 路径 连通 无向图 有向图 图的存储 方法概述 代码 复杂度 前言 图论(Graph theory),是 OI 中的一样很大…...

Java解析实体类的属性和属性注释
前言 获取某个类的属性(字段)是我们经常都会碰到的,通常我们是通过反射来获取的。 但是有些特殊情况下,我们不仅要获取类的属性,还需要获取属性注释。这种情况下,我们只能通过注解去获取注释。可以自己定…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...