一、基本概念
什么是软件?
软件的组成部分有哪些? 计算机程序、规程以及可能的相关文档和运行计算机系统所需的数据
二、SQA(Software Quality Assurance)
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满足要求。建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。
SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。SQA是一项管理工作,侧重于对流程的评审和监控。测试是一项技术性的工作,侧重对产品进行评估和验证
质量活动可以细分为两类:预防性活动、检测活动
SDLC(软件生命周期)各个阶段的SQA活动:
软件概念和初始化、分析、设计、建设、测试。
三、QA(Quality Assurance)vs QC( Quality Control )
1.质量
可以解释为满足以下条件:
客户要求:
明确的:功能、可用性
隐含的:可维护性、用户体验等等。
2.区别
QA以预防缺陷为导向而非检测缺陷。QC则注重于检测缺陷。
QA活动包括:质量审核、过程定义、工具选择、训练、同行评审、需求跟踪、质量指标集合;
QC活动包括:视察、测试、检查点审查…
四、软件测试
1.测试定义 ANSI/IEEE 1059
测试的定义是分析软件项目,以检测现有条件和所需条件之间的差异(即defects/errors/bugs),并评估软件项目的特性的过程。
A process of analyzing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs…) and to evaluate the features of the software item.
2.谁来测试软件?
软件测试人员、软件开发人员、项目负责人/经理、最终用户
Crowdsourcing Testing——任何人
3.软件何时开始/结束测试?
开始测试:
①越早越好;
②取决于开发模式(瀑布模型vs增量模型);
③SDLC的每个阶段都以不同的形式进行测试。
结束测试:
①测试是一个永无止境的过程;
②某些方面:
测试的截止日期
一些测试用例执行完成
功能和代码的完成
覆盖率达到一定标准
错误率低于一定水平/没有识别出高优先级错误
管理层的决策
4.软件缺陷
定义
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题
构成
从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
区别
● Error(错误): 发生在编写程序的过程中。
● Fault(故障): 是一个或多个错误的表现。(内部状态)
● Failure(失效): 当执行错误的代码导致错误状态传播到程序的输出时,就会发生这种情况。
● Incident(事故): 发生故障时不显示任何消息。
软件错误 在软件生命周期内不希望或不可接受的人为错误,结果导致软件缺陷的产生
软件缺陷 缺陷存在于软件及相关的文档中,在特定的条件下会使软件产生故障
软件故障 软件处于一种不希望或不可接受的内部状态,不及时处理就会使软件失效
软件失效 软件处于一种不希望或不可接受的外部状态
5.软件测试的分类
按测试层次分类
按测试目的分类
按测试方法或测试方式分类
6.McCall
参考这篇:
https://blog.csdn.net/HS_huaishi/article/details/121400224
7.主动/被动测试
主动测试是指测试人员和被测程序系统直接交互,测试人员根据所要测试的目标,主动向被测程序系统发送特定的测试输入信息,同时检查程序的输出结果,看是否符合预期。在主动测试中,测试程序及其配置和运行环境完全处在测试人员的控制之下,被测程序并不是处于正常的工作状态,而是处于被测状态。
主动测试中,测试人员必须花费大量的精力来设计可执行的测试用例被动测试是指被测程序系统运行在真实的环境之下,处于正常的工作状态,测试人员不干预被测程序的运行,只是被动地接收被测程序的输入和输出信息,然后通过分析来判断程序运行是否正常。被动测试不需要设计测试用例,可以长时间进行测试而无需人工干预,并且不影响被测试线的执行和运行环境。
被动测试需要我们对于结果进行充分的分析和判断。目前我们绝大多数的测试都是主动测试,只有线上观察、OP的系统监控、性能测试等这些测试属于被动测试。
来源:https://zhuanlan.zhihu.com/p/31886576
8.验证和确认(verification & validation)
●验证(验证): 软件应符合其规范
(我们制造的产品是对的吗?(与软件规格说明书比较))
●验证(确认): 软件应该做用户真正需要的事情
(我们是否正在构建正确的产品?(用户需求?))
S.N. | 验证Verification | 确认Validation |
---|---|---|
含义 | 我们制造的产品是对的吗? | 我们是否正在构建正确的产品? |
目的 | 确保软件系统完成所有功能 | 确保功能符合预期行为 |
时间 | 先发生,包括检查代码和文档 | 在验证之后,主要检查整个产品 |
参与者 | 开发人员 | 测试人员 |
活动 | 包含静态活动 | 包含动态活动 |
9.验收测试
参考这篇