本文主要是介绍XJTUSE-软件质量保证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载部分blog,侵权请联系
前言
2023-11-28 20:53 开始复习软件质量保证
下面是老师的原话(21届):
考试相关事项:
1. 考试内容以课件为主,同学们整理的材料作为参考。
2. 考试题型应该包括:判断、简答、综合题(需实际动手)。其中:综合题和简答题,分值较大。
3. 试卷为 中文,答题可以是中文或英文。
参考资料:
软件质量保证基本知识加复习建议-CSDN博客
MOOC上的PPT
QQ群的资料
下面我就简单地做重点,大家可以简单地看看了解一下都讲了什么。详细地可以在PPT和博客上看到
关于实操可以看这里:
XJTUSE-软件质量保证实操-CSDN博客
软件质量保证基础知识
软件缺陷基本概念
相关术语
- 错误:人在开发软件过程中的过错。
- 缺陷:错误在程序中的体现。
- 故障:软件在运行过程中出现的一种不可接受或不希望的内部状态。
- 失效:软件在运行过程中出现的一种不可接受或不希望的外部状态。
四个术语之间的关系。
软件缺陷产生原因
软件缺陷类型:5种原因
- 未实现需求规格说明书中提及的功能。
- 实现了需求规格说明书中不要求的功能。
- 未实现需求规格说明书中未提及但需要的功能。
- 出现了需求规格说明书中指明不该出现的错误。
- 用户体验差
软件缺陷产生原因:
- 需求规格说明书书问题(最大的)
- 团队协作问题
- 技术问题
-
未考虑复杂的应用场景
缺陷分类
- 按开发阶段分类:需求规格说明书,编码,设计...
- 按严重分类:10种..
典型的软件缺陷
- 输入/输出缺陷
- 计算缺陷
- 逻辑缺陷
- 数据缺陷
- 缺口缺陷
软件质量
质量的定义
质量不等于需求规格说明书。
质量维度
5个维度:FURPS
- F:功能测试
- U:易用性测试
- R:可靠性测试
- P:性能测试
- S:可支持性测试
还有一些维度称之为非功能性需求
软件质量的定义(略)
软件质量模型
模型分类
- McCall质量模型
- ISO质量模型
McCall质量模型
一共有11个质量因子,23个质量标准
质量分类为:
- 产品操作质量因子
- 产品修复质量因子
- 产品转变质量因子
了解不同质量因子的关系。
ISO质量模型
质量特性与质量子特性
6个质量特性,每个质量特性对应多个质量子特性!
两种模型的异同点(略)
软件质量保证
定义
软件质量保证(Software Quality Assurance,SQA),是确保软件产品自诞生起到消亡止的全生命周期的质量活动,即确定、达到和维护需要的软件质量而进行的所有有计划的系统性管理活动。
目标
- 保证软件开发及其维护符合功能与技术需求;
- 保证软件开发及其维护符合管理需求;
- 为实现前两个目标,组织一些活动来改进软件开发效率和维护效率。
活动
- 项目前质量活动:合同评审活动、制定开发计划、制定质量计划。
- 软件生命周期中的质量活动:开发阶段、运维阶段。
- 基础设施方面的质量活动
- 管理方面的质量活动
- 软件质量标准:如前面提到的McCall质量模型,ISO质量模型
- SQA自身的考虑
总结
- 面向过程
- 注重减少开发过程中的错误做法
- 过程:怎样做事情
软件测试
定义
- 狭义定义:为了发现错误而执行程序的过程
- 广义定义:在软件开发过程中的所有评审、确认、检验等活动
定义说明
- 由特定测试团队执行的一个正式过程
- 按照预先计划的测试过程来执行计划的测试用例
- 软件行为是可以预测的且稳定的
- 软件测试不等于软件使用
目标
- 直接目标
- 发现尽可能多的缺陷
- 评估软件质量
- 在规定的时间和预算内,执行测试工作
- 间接目标
- 编制软件错误记录,用于错误预防
总结
- 保证和提高软件质量的手段
- 更关注软件产品
- 重点在于发现软件产品中的缺陷
- 对软件的质量进行量化评估
软件测试模型
模型分类
- v模型
- w模型
V模型
V模型是瀑布模型的变种,实质上还是瀑布模型。
缺点:通过测试发现的缺陷,往往修复成本都很高!
W模型
W模型,双V模型。引入了确定和验证。
验证与确定(记)
- 验证(Verification):是指开发人员是否在正确地做事情,强调过程的正确性,不仅检验当前阶段是否正确,还检验当前阶段是否与上一个阶段相一致;
- 确认(Validation):是指开发人员是否在做正确的事情,强调结果的正确性,不仅检验当前阶段是否正确,还检验当前阶段的工作是否与用户的需求相一致。
软件测试分类
- 按阶段分类:单元测试,集成测试,系统测试,验收测试
- 按是否运行软件分类:静态测试,动态测试
- 按设计方法分类:黑盒测试,白盒测试,灰盒测试
- 按测试执行者分类:人工测试,自动化测试
- 按需求分类:功能测试,非功能测试
- 按测试对象分类:桌面程序测试,嵌入式程序测试...
软件测试原则
原则1:尽早且持续测试:比如单元测试可以尽早
原则2:全面测试:不光测试持续,还可以测试文档之类的
原则3:测试用例应该包括输入和预期输出两个部分
原则4:程序员及开发团队应避免测试自己的持续
原则5:Pareto原则:即80-20原则,百分之80的缺陷是由百分之20的程序造成的。
原则6:既要测试程序是否完成了该做的,也要测试程序是否做了不该做的。
原则7:穷尽性测试不现实。
原则8:全面检查每一个测试结果。
原则9:妥善保管测试资产
原则10:测试是一个富有挑战性的工作。
软件测试流程
RUP测试流程
软件过程(略)
RUP基本术语
RUP:Rational Unified Process,统一软件开发过程。
角色:描述软件项目团队中的某人或者一个小组的行为与职责。
活动:一个有明确目的的独立工作单元。
工件:活动生成、创建或修改的一段信息。
RUP软件测试角色
我真的想吐槽,你踏马测试设计师不是设计测试用例的,是开发工具的,为什么叫设计师,不叫开发。是想不到吗?还是不喜欢啊?>=<?
- 测试经理:对整个测试工作负责
- 测试分析师:测试用例的设计与选择
- 测试设计师:本质是开发人员,开 发较为通用的测试基础架构
- 测试员:负责测试工作的执行
RUP软件测试流程
- 定义评估任务
- 验证测试方法
- 确认构建稳定性
- 测试和评估
- 完成验收任务
- 改进测试资产
定义评估任务
主要任务(略)
测试目标(略)
测试计划(略)
测试方法
一个好的测试方法通常包含5个方面:
- 多样化
- 以风险为中心
- 与产品有关
- 实际可行
- 可防御:合理可行,能够自我解释清楚的。
验证测试方法
目的:确定测试方法是否可行
可测试性(Testability)
- 可见性(Visibility):测试人员能够看到和理解软件正在做什么
- 可控性(Control):测试人员能够强迫某些事情发生
确认构建稳定性
目的:确认构建足够稳定从而值得测试
测试与评估
目标(略)
技术
用户测试:关心的是谁来测试,而不关心如何测试,测试什么,何时测试,如何判断测试是否通过。(测试者)
易用性测试:关注的是软件用起来是否方便,用户体验是否良好,而不关注谁来测试软件,测试什么,如何测试等。(潜在问题)
UI测试:关注测试工作覆盖了哪些事物,而不关注谁来测试和如何测试。(内容/覆盖)
测试技术维度
缺陷报告
跟随测试
为了找到让失效发生的最佳测试用例
当发生失效时,要进行跟随测试: .
- 分析失效产生的条件
- 发现失效发生的规律
- 分析边界条件
- 分析不可复现的缺陷
定义
- 跟随测试是一种探索性测试
- 有助于帮助开发人员理解缺陷并加快缺陷的修复
- 在开始看到失效后继续进行测试,以期望发现缺陷的所有影响
技术
- 改变测试行为
- 改变选项和配置
- 改变运行环境
- 改变测试数据
完成验收任务
了解一下理想bug曲线和实际bug曲线:
理想:
实际:
改进测试资产
- 目的:维护和改进测试资产,增加复用性
- 工作重点:
- 构建测试套
- 为测试套编制测试脚本
- 去除过时的测试资产或投资收益比不高的资产
- 维护测试环境配置
MOOC测试
主要收录了MOOC前两章的单元测试+单元作业。看了看霍的笔记,应该考试简答啥的就只考前两章的理论知识。(也许八)
软件质量保证基础知识
单元测试
1、 问题:下列哪个是软件运行过程中出现的不希望/不可接受的内部状态。()
选项:
A:错误
B:缺陷
C:故障
D:失效
答案: 【故障 】2、 问题:根据统计分析,目前导致软件缺陷最大的原因是()。
选项:
A:需求规格说明书
B:设计问题
C:编码问题
D:Bug修复不正确
答案: 【需求规格说明书】3、 问题:McCall质量模型包含多少个质量因子。()
选项:
A:9
B:10
C:11
D:12
答案: 【11】4、 问题:在ISO/IEC 9126质量模型中,质量特性与子特性之间的关系是()。
选项:
A:一对一
B:一对多
C:多对一
D:多对多
答案: 【一对多】5、 问题:软件质量保证的目标不包括()。
选项:
A:保证软件符合需求规格说明书
B:保证软件开发及其维护符合功能需求
C:保证软件开发及其维护符合技术需求
D:保证软件开发及其维护符合管理需求
答案: 【保证软件符合需求规格说明书】6、 问题:下面关于测试思想和测试用例的描述,错误的是()。
选项:
A:测试思想是辨别某个测试可能有用的简要说明
B:测试思想是测试用例的思想来源
C:测试思想和测试用例相同
D:测试思想和测试用例不同
答案: 【测试思想和测试用例相同】7、 问题:在开发软件过程中,人们可能发生的错误包括()。
选项:
A:客户未完全描述清楚他的意图
B:分析人员未完全理解客户需求
C:设计人员未完全弄清楚需求文档
D:实现人员编写出不完善的程序
答案: 【客户未完全描述清楚他的意图;
分析人员未完全理解客户需求;
设计人员未完全弄清楚需求文档;
实现人员编写出不完善的程序】8、 问题:下列哪些情况属于输入方面的缺陷。()
选项:
A:接受正确的输入
B:接受错误的输入
C:不接受正确的输入
D:不接受错误的输入
答案: 【接受错误的输入;
不接受正确的输入】9、 问题:下列哪些属于质量的FURPS维度。()
选项:
A:功能
B:易用性
C:可伸缩性
D:性能
答案: 【功能;
易用性;
性能】10、 问题:下列关于软件质量保证和软件测试的描述,正确的是()。
选项:
A:软件质量保证面向过程,注重减少开发过程中的错误做法
B:软件测试面向产品,注重发现产品中的缺陷
C:软件质量保证一般通过努力改进过程来改进产品
D:软件测试面向过程,而软件质量保证面向产品
答案: 【软件质量保证面向过程,注重减少开发过程中的错误做法;
软件测试面向产品,注重发现产品中的缺陷;
软件质量保证一般通过努力改进过程来改进产品】11、 问题:按照阶段,软件测试可以分为哪几种类型。()
选项:
A:单元测试
B:集成测试
C:系统测试
D:验收测试
答案: 【单元测试;
集成测试;
系统测试;
验收测试】12、 问题:按照设计方法,软件测试可以分为哪几种类型。()
选项:
A:黑盒测试
B:白盒测试
C:灰盒测试
D:红盒测试
答案: 【黑盒测试;
白盒测试;
灰盒测试】13、 问题:不运行的软件,也可以产生故障和失效。()
选项:
A:正确
B:错误
答案: 【错误】14、 问题:迭代式开发可以有效解决瀑布模型中存在的不足。()
选项:
A:正确
B:错误
答案: 【正确】15、 问题:可以使用用例(Use Case)来描述和管理用户需求。()
选项:
A:正确
B:错误
答案: 【正确】16、 问题:每个人对软件质量的关注和要求是相同的。()
选项:
A:正确
B:错误
答案: 【错误】17、 问题:可以通过测试来发现软件中所有的缺陷。()
选项:
A:正确
B:错误
答案: 【错误】18、 问题:故障是软件缺陷的外在表现。()
选项:
A:正确
B:错误
答案: 【错误】
分析:【故障是软件缺陷的内在表现。】19、 问题:可以通过测试来发现软件中所有的缺陷。()
选项:
A:正确
B:错误
答案: 【错误】20、 问题:不仅要测试程序代码,还应该测试文档和数据。()
选项:
A:正确
B:错误
答案: 【正确】
单元作业
1、请比较软件质量保证和软件测试。
标准答案:
- 都是为了保证和改进软件的质量。
- SQA面向过程,注重减少开发过程中的错误做法;软件测试面向产品,注重发现产品中的缺陷。
- SQA一般通过改进开发过程来改进产品。
因此,软件质量保证和软件测试都是非常必要的。
2、给定一个软件,是否可以采取穷尽性测试来发现程序中的所有缺陷?为什么?
标准答案:
采取穷尽性测试通常是不现实和不可行的。
首先,如果采用黑盒测试技术,我们通常无法对所有的输入及其组合进行穷尽性测试;因为,程序的输入通常有非常多的取值。
其次,如果采用白盒测试技术,我们通常无法对所有的路径进行穷尽性测试;因为,程序通常包含大量路径。
再次,即使我们可以采取穷尽性路径测试,程序中也可能会存在错误。例如:用户要求的是一个排序程序,但开发的是一个查询软件;开发的软件遗漏了某些路径;等等。
因此,无法采取穷尽性测试来发现程序中的所有缺陷。此外,通常,无论采用什么测试技术,都不能发现软件中的所有缺陷。
软件测试流程
单元测试
1、 问题:下列关于软件过程的描述,不正确的是()。
A:提供规范但灵活的方法来指派软件项目团队中每个成员的任务和职责
B:目的是在规定的时间和预算内,保证软件产品的质量满足用户的需求
C:过程定义了为达到某个目标,谁应该做什么、在什么时候做、如何做
D:软件工程过程是确定的,每个软件项目都必须严格按照过程要求
答案: 【软件工程过程是确定的,每个软件项目都必须严格按照过程要求】2、 问题:在RUP中,下列哪个流程不是核心工作流程。()
选项:
A:业务建模
B:项目管理
C:分析与设计
D:测试
答案: 【项目管理】3、 问题:下列关于“测试与评估”环节的描述,不正确的是()。
选项:
A:工作重心是达到所需的测试深度和广度
B:设计测试用例并执行测试工作
C:分析测试结果并编写缺陷报告
D:表现测试总结报告
答案: 【表现测试总结报告】4、 问题:下列关于“完成验收任务”环节的描述,不正确的是()。
选项:
A:主要工作包括优化测试用例集
B:对软件给出客观的质量评价
C:确认软件是否稳定,是否值得进一步测试
D:编写测试总结报告
答案: 【确认软件是否稳定,是否值得进一步测试】5、 问题:应该由下列哪类角色负责维护确认构建稳定性的测试用例集。()
选项:
A:测试人员
B:开发人员
C:配置管理人员
D:市场销售人员
答案: 【测试人员】6、 问题:“定义评估任务”环节的主要任务包括()。
选项:
A:明确测试工作目标
B:制定测试工作计划
C:确定测试工作的范围与边界
D:设计足够多的测试用例
答案: 【明确测试工作目标;
制定测试工作计划;
确定测试工作的范围与边界】7、 问题:可以从哪些维度来区分不同的软件测试技术?()
选项:
A:测试者/谁执行测试工作
B:测试内容/覆盖
C:解决的潜在问题
D:活动/如何测试
E:评估/如何判断测试用例是否通过
答案: 【测试者/谁执行测试工作;
测试内容/覆盖;
解决的潜在问题;
活动/如何测试;
评估/如何判断测试用例是否通过】8、 问题:如果测试团队完全按照理想的Bug曲线,会存在哪些副作用?()
选项:
A:在项目初期,不努力发现深层次缺陷
B:在项目初期,努力发现深层次缺陷
C:在项目后期,不认真测试
D:在项目后期,认真测试
答案: 【在项目初期,不努力发现深层次缺陷;
在项目后期,不认真测试】9、 问题:在测试过程中,有哪些类型的测试资产?()
选项:
A:测试用例
B:测试数据
C:测试脚本
D:测试工具
E:测试文档
答案: 【测试用例;
测试数据;
测试脚本;
测试工具;
测试文档】10、 问题:跟随测试可以分为哪几种类型()。
选项:
A:改变测试行为
B:改变测试数据
C:改变运行环境
D:改变程序选项和配置
答案: 【改变测试行为;
改变测试数据;
改变运行环境;
改变程序选项和配置】11、 问题:测试分析师负责设计软件自动化测试架构和开发自动化测试工具。()
选项:
A:正确
B:错误
答案: 【错误】12、 问题:测试团队的工作目标可能会随着软件生命周期发生变化。()
选项:
A:正确
B:错误
答案: 【正确】13、 问题:采用跟随测试可能会找到最佳的测试用例来发现缺陷及其引发的失效。()
选项:
A:正确
B:错误
答案: 【正确】14、 问题:跟随测试是一种探索性测试,通常由计算机自动执行。()
选项:
A:正确
B:错误
答案: 【错误】15、 问题:验证构建是否稳定,通常采用自动化测试方式。()
选项:
A:正确
B:错误
答案: 【正确】
单元作业
1、可以从哪些维度来区分测试技术?用户测试(User testing)、易用性测试(Usability testing)和UI测试(User Interface testing),它们的区别是什么?
标准答案:
可以从5个维度来区分测试技术。测试者:谁执行测试工作?内容/覆盖:要测什么?潜在的问题:期望发现哪类问题?活动:如何执行测试?评估:如何判断测试用例是否通过?
用户测试、易用性测试和UI测试,它们看起来相似,但实际上它们并不相同。可以使用上述维度来区分。用户测试关注的是谁来执行测试,而不关心如何测试、测试什么、要发现哪类问题、如何判断测试是否通过。易用性测试关注软件使用起来是否便捷、用户体验是否良好——关注的是潜在的问题;易用性测试不关心谁来测试、如何测试、测试什么、如何判断是否通过。UI测试关注要测试哪些事物,而不关心谁来测试、如何测试、要发现什么问题、如何判断是否通过等。
2、在测试过程中,为什么要进行跟随测试?如何进行跟随测试?
标准答案:
当我们执行一个测试用例并发现了失效,此时我们看到的可能是一个表象,并没有找到由该缺陷所导致失效的最佳测试用例。因此,采用跟随测试来尝试着说明这个缺陷比一开始看到的更加严重和更加容易出现。跟随测试是一种探索性测试,有助于帮助开发人员理解缺陷并加快缺陷的修复。有4种类型的跟随测试:改变测试行为、改变程序的选项和配置、改变运行环境、改变测试数据。
保险起见,又看来边界值和等价类!
边界值与等价类
单元测试
1、 问题:下列关于边界值测试基本原则的描述,不正确的是()。
选项:
A:如果输入条件规定了取值范围,则以此范围为基础设计测试用例
B:如果输入条件规定了取值的个数,则以个数为基础设计测试用例
C:如果需求规范说明指定了输出而非输入的范围和取值的个数,则无法使用边界值测试
D:如果输入或输出是一个有序集合,如:线性表、顺序文件等;则选择该序列中的第一个及最后一个元素进行测试,进一步考虑第二个元素和倒数第二个元素
答案: 【如果需求规范说明指定了输出而非输入的范围和取值的个数,则无法使用边界值测试】2、 问题:对于有3个输入的程序,采用健壮最坏情况测试,应该设计多少个测试用例?()
选项:
A:13
B:125
C:19
D:343
答案: 【343】3、 问题:某个程序接受一个整型输入X,它的有效取值范围为[0,100],采用等价类测试,可以划分出的有效等价类为()。
选项:
A:0≤X≤100
B:0≤X<100
C:00≤X≤100】4、 问题:某个程序接受两个整型输入X和Y,X的取值范围为[100,200],Y的取值范围为[30,50];采用弱一般等价类,会得到多少个测试用例?()
选项:
A:1
B:3
C:5
D:9
答案: 【1】5、 问题:某个程序接受两个整型输入X和Y,X的取值范围为[100,200],Y的取值范围为[30,50];采用弱健壮等价类,会得到多少个测试用例?()
选项:
A:1
B:3
C:5
D:9
答案: 【5】6、 问题:对于一个明确范围的输入或输出,采用边界值技术进行测试用例的设计,应该选择哪些测试数据。()
选项:
A:最小值
B:略大于最小值
C:正常值
D:略小于最大值
E:最大值
答案: 【最小值;
略大于最小值;
正常值;
略小于最大值;
最大值】7、 问题:某个程序接受一个整型输入X,它的有效取值范围为[0,100],采用健壮性测试,应该选择哪些数据?()
选项:
A:0
B:-1
C:10000
D:101
E:-1000
F:100
答案: 【0;
-1;
101;
100】8、 问题:某个程序接受一个整型输入X,它的有效取值范围为[0,100],采用等价类测试,可以划分出哪些无效等价类?()
选项:
A:X≥100
B:X≤0
C:X>100
D:X<0
答案: 【X>100;
X<0】9、 问题:采用等价类技术进行测试的两个动机是()。
选项:
A:期望尽可能地避免冗余测试
B:期望发现最多的程序Bug
C:期望具有某种意义上的完备性
D:期望证明软件没有缺陷
答案: 【期望尽可能地避免冗余测试;
期望具有某种意义上的完备性】10、 问题:下列关于等价类的划分原则,正确的是()。
选项:
A:如果输入条件规定了取值范围,可以定义一个有效等价类和两个无效等价类
B:如果规定了输入数据的个数,可以划分出一个有效等价类和两个无效等价类
C:如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)
D:如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
E:如果确知已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类
答案: 【如果输入条件规定了取值范围,可以定义一个有效等价类和两个无效等价类;
如果规定了输入数据的个数,可以划分出一个有效等价类和两个无效等价类;
如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合);
如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
如果确知已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类】11、 问题:健壮性测试基于单缺陷假设,不仅考虑有效值、也考虑无效值。
选项:
A:正确
B:错误
答案: 【正确】12、 问题:采用边界值分析技术,不仅可以考虑输入域边界值测试,还可以考虑输出域边界值测试。
选项:
A:正确
B:错误
答案: 【正确】13、 问题:弱一般等价类测试基于单缺陷假设、只考虑有效等价类。()
选项:
A:正确
B:错误
答案: 【正确】14、 问题:采用等价类测试进行测试用例设计,对于有效等价类,编写一个新的测试用例,一次只包含一个还未被覆盖的有效等价类。()
选项:
A:正确
B:错误
答案: 【错误】15、 问题:强健壮等价类测试基于单缺陷假设,既考虑有效等价类也考虑无效等价类。()
选项:
A:正确
B:错误
答案: 【错误】
单元作业
1、 问题:案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A–[85,100]、B–[60,85)、C–[40,60)、D–[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。问题:请根据课上所学边界值测试相关知识,采用普通边界值测试技术,设计本案例的测试用例。
2、问题:案例描述:某公司根据年终考核给员工发放年终奖,年终考核包括三个指标:本年度工作完成情况、工作能力、工作态度,根据这三个指标的得分计算出某位员工的总得分。其中:本年度工作完成情况占总成绩的50%,本年度工作完成情况最高得分为100分;工作能力总分为20分;工作态度总分为30分。根据员工的总得分,将员工分为如下等级:A–[85,100]、B–[60,85)、C–[40,60)、D–[0, 40)。对于评分等级为A的员工,其年终奖额外奖励10%;对于等级为B的员工,其年终奖正常得到;对于等级为C的员工,扣除20%的年终奖;对于等级为D的员工,则进行辞退、不发年终奖。假定该公司给每位员工的基础年终奖都相同,为Total。 问题:请结合课上所学等价类测试相关知识设计测试用例。请设计弱健壮等价类测试用例。
测试方法
参考:
书本、MOOC和
软件质量保证常用测试方法---边界值测试,等价类测试,路径测试_hydrion csdn_Hydrion-Qlz的博客-CSDN博客
只做简单的梳理,具体实操请同学们看书!
边界值分析
边界值的选择
一般来说,一共有七种选择:记为min-,min,min+,norm,max-,max,max+
边界值分析分类
- 普通边界值测试:单缺陷假设,考虑5种值,4n+1个测试用例。
- 健壮性测试:单缺陷假设,考虑7种值,6n+1个测试用例。
- 最坏情况测试:多缺陷假设,考虑5种值,5^n个测试用例。
- 健壮最坏情况测试:多缺陷假设,考虑7种值,7^n个测试用例。
等价类测试
基本思想
- 等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,或者进行相同的处理
- 测试某等价类的一组数据就等价于对这一类其他值测试
等价类的划分
- 如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。
- 如果规定了输入数据的个数,则类似地可划分出一个有效等价类和两个无效等价类。
- 如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。
- 如规定了输入数据必须遵守的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
- 如果确知已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
- 等价类的划分通常不能一步到位,需要多次尝试才能得到效果较好的等价类
有时候,为了得到好的等价类测试,可以从输入和输出两个方面进行等价类划分。
分类
- 弱一般等价类测试:单缺陷假设,只考虑有效类。
- 强一般等价类测试:多缺陷假设,只考虑有效类。
- 弱健壮等价类测试:单缺陷假设,考虑有效类和无效类。
- 强健壮等价类测试:多缺陷假设,考虑有效类和无效类。
一般而言,考试做题达到弱健壮等价类即可。
路径测试
程序图与DD路径
程序图即根据程序的实际执行语句转化的图。
DD路径为压缩后的程序图。
一些概念:
- 决策语句是指一个节点的入度或出度大于等于2
- 由一个入度为0的节点组成,对应于源节点
- 由一个出度为0的节点组成,对应于汇节点
- 有一个入度大于等于2或出度大于等于2的节点组成,对应于判定语句或其结束语句
- 由一个入度为1且出度为1的节点组成,对应于短分支
- 由长度大于等于1的最大链组成,对应于串行语句序列
覆盖率
覆盖率是用于度量测试完整性的一种手段
覆盖率=被执行到的测试项数量/总项数× 100%
覆盖率分为:
- 节点覆盖
- 边覆盖
- 路径覆盖
逻辑覆盖指标
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 判定-条件覆盖
- 条件组合覆盖
- 路径覆盖
Junit
参考:
实验课发的PPT
Junit常见的两种测试方法---基础测试与参数化测试_Hydrion-Qlz的博客-CSDN博客
注解
整理了以下重要的注解:
@Test:使用该元数据描述的方法作为测试用例。
@BeforeEach:每个测试方法前需要执行一次。
@AfterEach:每个测试方法后需要执行一次。
@Ignore:忽略该测试方法。
@BeforeAll:在所有测试方法前执行。
@AfterAll:在所有测试方法后执行。
断言
整理了部分断言:
assertEquals():判断两个是否等值(最重要的)
assertTrue():判断是否为真
assertFalse():判断是否为假
测试结果
- 测试未通过(Failure)
- 测试错误(Error)
特殊处理
@Test(timeout=xxx):超过多少时间没有相应也算测试失败
上机操作
给段代码,不做过多解释:
package xjtu;import static org.junit.jupiter.api.Assertions.*;import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;class CalculateTest {static Calculate cal;@BeforeAllstatic void setUpBeforeClass() throws Exception {cal = new Calculate();System.out.println("开始测试:");}@AfterAllstatic void tearDownAfterClass() throws Exception {cal = null;System.out.println("结束测试");}@BeforeEachvoid setUp() throws Exception {}@AfterEachvoid tearDown() throws Exception {}@Testvoid testAdd() {assertEquals(5,cal.add(2, 3));}@Testvoid testSub() {assertEquals(-1,cal.sub(2, 3));}@Testvoid testMul() {assertEquals(6,cal.mul(2, 3));}@Testvoid testDiv() {assertEquals(1,cal.div(3, 3));}}
需要注意的是,还有一些注解形式:
参数化测试
- 给测试方法添加注解
@ParameterizedTest
- 使用注解
@xSource
来制定测试数据,其中:x可能为Value
、Enum
、Method
、Csv
、CsvFile
、Arguments
等
package xjtu;import static org.junit.jupiter.api.Assertions.*;import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;class CalculateParamTest {Calculate x = new Calculate();@ParameterizedTest@CsvSource({"10,20,30","0,0,0","10,-20,-10"})void testAdd(int a, int b, int expected) {assertEquals(expected,x.add(a, b));}
}
测试套件
package xjtu;import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.runner.RunWith;@RunWith(JUnitPlatform.class)
@SelectPackages("xjtu")class CalculateTestSuite {}
总结
十大测试
主要是上课学生讲的内容,我觉得不会有多少考题,简单梳理。课本P32
略是有的是前面讲解过了,有的是压根书上没有,我觉得不重要的。
(考后说:背一下这表吧,吃亏了)
功能测试(略)
等价类测试(略)
基于规格说明测试
系统测试覆盖指标:
- 端口输入事件覆盖指标
- 端口输出事件覆盖指标
- 端口(设备)覆盖指标
- 其他覆盖指标
需考虑的问题:如果没有规格说明书,能否进行规格说明测试?(可以)
- 软件更新备忘录
- 用户手册手稿
- 基于发布的风格指南
- ....
可追溯矩阵
基于风险的测试
三个层次:
- 基于风险的测试技术
- 基于风险的测试管理
- 基于风险的项目管理
风险分析:
风险级别 = 发生概率 * 代价
工作步骤:
- 识别风险
- 分析风险发生概率
- 分析风险的代价
压力测试
是什么?
也称强度测试,是指通过给系统强加巨大的工作负载,以检验系统在峰值(甚至超过峰值)使用情况下是否能够正常工作。
手段?
- 重复
- 并发
- 大数据量
- 随机
回归测试(略)
探索性测试(略)
不过好像跟随测试是一种探索性测试来着
用户测试
测试用户的选择标准:
- 特定行业:选择丰富经验的专家
- 面向大众:随机选择
测试用户的数量
公式:())
E表示错误发现率,L表示每个测试人员发现易用性问题的概率,n表示测试用户的数量
场景测试
是什么?指测试人员基于用户的实际业务和操作,构建复杂的涉及多次交互的使用场景来检验软件在复杂环境下的表现是否符合预期。
技术:肥皂剧测试。
随机测试(略)
后记
2023-12-3 11:08 考完了软件质量保证,记录一下考题和考后感想
题型:
判断10道 10分?(没细看)
简答8道(想起啥写啥) 40分:
- 回归测试 5个维度 优缺点
- 软件质量,缺陷,测试关系
- V模型,W模型
- 测试思想,测试用例
- 广义/狭义测试手段
- 测试进度编写可以从什么方面展开?
- ...
- ....
大题 5小问 50分
和书上判断医保等级的一道题目很像。
就等价类,自己写代码实现(伪代码都可以),程序图,DD路径,几种逻辑覆盖指标的测试用例编写。
判断简单的。
感觉简答有大半没复习到,/==(艹皿艹 )。
不过,大题都是在辐射范围内,Junit写的是参数化测试来着
吐槽:后面想补充点内容,答题卡也没位置写了,多给点答题纸嘛...(合理规划的重要性...)
这篇关于XJTUSE-软件质量保证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!