软件测试基础
软件测试的定义
- 在IEEE国际标准中,对软件测试进行了详细的定义:“软件测试是在规定的条件下,使用人工或自动化手段来运行或测试某个系统的过程,其主要的目的是对其是否满足设计要求进行评估的过程”。
- 在这个定义中详细的描述三个维度的内容:软件测试需要在规定条件下进行、软件测试是一过程、目的是验证系统是否满足客户需求。
软件测试的·分类
(1)从被测试对象的角度分类,测试可以分为黑盒测试、白盒测试和灰盒测试
(2)从被测试对象是否运行的角度进行分类。从被测试对象是否运行的进行分类,测试可以被分为动态测试和静态测试。
(3)从测试执行时使用的工具角度分类。从测试执行时使用的工具角度分类测试可以分为手工测试和自动化测试。
被测对象 | 被测对象是否运行 |
---|---|
黑盒测试 | 动态测试 |
白盒测试 | 静态测试 |
灰盒测试 | > |
静态测试是指不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。例如:代码走读、文档评审、程序分析等都是静态测试的范畴。
动态测试是指按照预先设计的数据和步骤去运行被测软件系统,从而对被测软件系统进行检测的一种测试技术。如果按阶段来分,单元测试中常见的动态测试方法就是逻辑覆盖的方法,而在系统测试阶段,我们做的测试都属于动态测试,因为我们要运行系统才能验证系统功能是否正确。
手工测试是指软件测试的整个活动过程(如评审、测试设计、测试执行等)都是由软件测试工程师手工执行来完成,不使用任何测试工具,狭义上是指测试执行由人工完成,这是最基本的测试形式。
自动化测试是使用软件来控制测试执行过程,比较实际结果和预期结果是否一致,设置测试前置条件和其他测试控制条件并输出测试报告。通常,自动化测试需要在适当的时间使已经形式的手工测试过程自动化
软件测试模型
瀑布模型
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护六项基本活动,其过程是将上一项活动接收的工作对象作为输入,当该项活动完成后会输出该项活动的工作成果,并将该项成果作为下一项活动的输入。该模型规定这六项基本活动自上而下、固定相互衔接的次序,如同瀑布流水,逐级下落。
从本质上讲,它是一个软件开发架构,开发过程通过一系列阶段顺序展开的,从需求分析直到产品发布和维护。如果在其中某个阶段有信息未被覆盖或有问题,那么就得返回到上一个阶段,并对这些阶段进行适当的修改才能进入下一个阶段,这样每个阶段都会产生循环反馈,开发过程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来
瀑布模型的优点:
- 为项目提供了按阶段划分的检查点;
- 当前一阶段完成后,只需要关注后续阶段;
- 可在迭代模型中应用瀑布模型
瀑布模型的缺点:
- 项目中各个阶段之间极少有反馈;
- 只有在项目生命周期的后期才能看到结果;
- 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
W模型
由于V模型存在一些明显的缺陷,人们就在实际测试过程中对V模型进行了改进,将演变为W模型。W模型由两个V字型模型组成,相对于V模型,增加了软件各开发阶段中应同步进行的验证和确认活动。
W模型也称之为双V模型,一个V是开发的生命同期,另一个V是测试的生命周期型与V模型有一个很大的不同,就是W模型是一个并行的模型,V模型是一个串行的模垄型开始是从需求分析开始就开始了,而不是等到编码完成后才开始。并且测试阶段的划分: 而不仅仅是单元测试、集成测试、系统测试,还包括前期的测试计划、测试方案等内容,这更符合现在企业测试的流程。
w模型的特征:
- (1)测试阶段划分得更全面,不仅仅是单元测试、集成测试和系统测试;
- (2)测试与开发是并行的,从需求测试就应该开始介入;
- (3)提出尽早测试的概念,这样可以降低缺陷修复成本;
- (4)测试对象不仅仅是程序,还包括需求或其他的相关文档。
H模型
H模型将测试活动分离出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
特征:
- (1)测试是一个独立的过程;
- (2)测试达到准入条件,才可以执行;
- (3)测试对象是整个产品包,而不仅仅是程度、需求或相关说明书。
系统生命周期的测试策略
软件测试策略是指在软件测试标准、测试规范的指导下,依据测试项目的特定环境约束制定的软件测试原则、策略和方法的集合。
开发阶段的测试策略
开发阶段是指在整个产品开发过程中我们使用的测试方法,在开发阶段的测试策略和方法主要是白盒测试,当然有一些公司也会开展灰盒测试,但并不多,通常灰盒测试也就是我们说的集成测试。
白盒测试也称结构测试或逻辑驱动测试,主要是测试源程序内部的结构,通过测试来检查程序内部动作是否满足设计规格说明书的要求,检查源程序中路径覆盖情况。白盒测试将被测程序看作一个打开的盒子,即程序内部的逻辑结构可以看的很清楚
白盒测试通常的程序结构覆盖测试的方法有
语句覆盖
判定覆盖
条件覆盖
判定|条件覆盖
路径覆盖
基本路径覆盖
产品阶段的测试策略
产品阶段主要采取黑盒测试策略进行测试。黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用,是否符合规格说明书。在测试过程中,把程序看作一个不能打开的黑盒子。在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,它只检查程序功能是否能按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试是以用户的角度、从输入数据与输出数据的对应关系出发进行测试的,黑盒测试主要发现以下几类错误:
- 验证是否有不正确或遗漏的功能?
- 接口测试方面,验证输入能否正确地接受?输出的结果是否正确?
- 是否有数据结构错误或外部信息访问错误?
- 性能是否能够满足要求?
- 是否有初始化或终止性错误
常见的黑盒测试设计方法
等价类划分法
边界值划分法
错误推断法
因果图法
场景法
判定表法
正交实验法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署