软件测试期末复习
@Author 雨
2024年6月18日
1. 什么是软件测试
从一个通常为无限的执行域中选取合适的有限的测试用例,对程序所期望的行为进行动态验证的活动过程。
2. 软件测试的目的
尽早地发现软件的缺陷
3.什么是测试什么是缺陷
从软件内部看:软件开发或维护过程中存在的错误等问题
从软件外部看:软件所需要实现的某种功能失效
软件危机:
- 软件无法按预期时间内完成
- 软件的质量难以控制
- 软件的维护更加看困难
- 软件成本超出预算
4. 软件测试的分类
① 静态测试和动态测试
静态(白盒)测试:不运行程序,检查代码(走查、复审、评审)
动态(白盒)测试:运行程序,分析程序代码,设计测试用例,通过驱动程序和桩程序调用被测程序运行
静态(黑盒)测试:需求文档、规格说明书的审查
动态(黑盒)测试:数据驱动,从用户角度验证系统的功能
动态测试的步骤:分析代码—>设计测试用例---->写驱动程序、桩程序、被测对象
测试用例:输入(被测对象 + 驱动程序 + 桩程序)==》结果
驱动程序:调用被测对象的程序
桩程序:被测对象调用的程序
② 主动测试和被动测试
主动测试:测试人员主动向被测对象发送请求、数据等驱动被测对象执行某一行为,从而验证被测对象的反应或输出结果。(需要测试人员设计测试用例,尽力输入各种数据)
被动测试:测试人员不干预被测对象运行,被动的监控产品在实际环境中运行,通过一定的被动机制获取系统的运行数据。(测试人员不需要设计测试用例,只要设法获取系统运行数据,但获得的数据完整性得不到保障)
③ 黑盒测试和白盒测试
黑盒测试
特征:只验证输入和输出之间的关系是否正确,不考虑程序内部结构和特征
目标:测试程序的功能或接口
等价类划分
- 有效等价类
- 无效等价类
边界值分析
因果图
判定表
判定树
白盒测试
特征:清楚内部结构,内部特征,内部工作过程
目标:源代码
基本思想:内部结构、覆盖要求
测试方法:逻辑覆盖/路径覆盖
覆盖:分为逻辑覆盖和路径覆盖
逻辑覆盖:
- 语句覆盖:每个语句至少执行一次
- 判定覆盖:每个判定的真和假都至少执行一次(每个菱形框的真和假都会发生)
- 条件覆盖:每个菱形框里面的真假都至少出现一次
- 判定/条件覆盖:每个菱形框里地真假都至少出现一次,且每个判定的真假也至少出现一次
- 条件组合覆盖:每个菱形框内每个条件每种组合都至少出现一次
路径覆盖:
环路复杂度计算: 围成区域数量
判定数 + 1
边 - 节点 + 2
基本路径组:从起点到终点,路径数等于环路复杂度
5.基于场景设计测试用例
6. 基本测试,过程、方法、描述、比较
7. 什么是自动化测试
由测试工具自动地逐个运行测试用例
8. 单元测试、集成测试、系统测试、验收测试(什么是,整个流程)
- 单元测试:编码阶段对每个程序单元进行测试(类、方法、接口),测试方法:白盒测试方法
- 集成测试:在单元测试基础之上,对不同模块按要求组装,主要用于发现模块间的接口问题。
- 分为一次性集成和渐增性集成
- 一次性集成:用例少,测试快,定位难,调试难
- 系统功能测试:集成测试完毕后,根据需求说明书,从用户角度对系统功能进行测试。
- 验收测试:验证系统的功能和性能满足用户期待
- α测试:公司内人员使用
- β测试:公司外部人员使用,将使用情况反馈给公司
软件测试过程分为:工程过程和管理过程
工程过程:需求评审、设计评审、单元测试、集成测试、系统测试、验收测试
管理过程:计划、设计、执行
测试和调试的区别:测试:发现错误。调试:已知错误,寻找引起错误的原因,并修正。
9.系统测试
-
功能测试
功能测试以用户需求为导向
功能测试主要测试:界面、数据、操作、逻辑、接口等
-
界面清晰美观、
-
能接收正确数据输入,对于异常输入有一定容错性
-
逻辑清晰,符合使用者习惯
-
对外部的系统接口稳定有效
-
菜单、按钮等各种操作正常,能处理一些异常操作
常用测试方法有:
- 像一般用户一样测试:模拟一般用户的使用进行测试
- 像业务人员一样测试:按照业务流程等进行测试
- 更加专业的测试:
- 扮演用户做测试:
- 基于用例的测试:从实际业务触发,分析、不同用户使用系统的范围和特点确定用户在特定业务上的操作过程
- 基于用例/场景的测试:分析不同场景下的业务特点进行测试。
- 基于需求的测试(按照需求说明文档进行测试)
-
-
回归测试
为了发现回归缺陷的测试
-
性能测试
-
其他非功能测试:安全测试、兼容性测试、可靠性测试、容错性测试。。。
10.集成测试几种模式,有什么差别
集成测试分为一次性集成和渐增式集成
一次性集成:
先使用单元测试测试所有子模块,然后一次性将所有子模块集成到系统中进行测试。
优点:可以全面验证系统的完整性和功能,效率较高
缺点:缺点是难以定位问题,风险高,可能会导致集成冲突。渐增式集成:
渐增式集成: 每次只集成少量组件或模块,逐步扩大集成范围。
优点:优点是问题定位容易,风险分散,可以在早期发现潜在问题,有助于及早解决问题,减少后期成本。
缺点:点是集成时间长,集成测试难度高,集成过程复杂。
渐增式集成分类:
- 自顶向下:顶层问题发现早,需要桩
- 自底向上:底层问题发现早,需要驱动
- 混合模式(三明治):较上层自顶向下,较下层,自底向上
11. 什么是性能测试,目的,什么是性能,如何体现性能
什么是性能测试?为了发现系统性能问题或获取系统性能指标而进行的测试。
性能测试目标?
- 获取系统性能指标数据
- 验证系统是否达到用户提出的性能指标
- 发现系统瓶颈,优化系统性能
什么是性能?性能通常指系统在特定条件下的表现
系统的性能包括两方面:
系统资源使用率(CPU、内存):资源使用率越低,系统性能越好
系统行为表现:
- 请求响应时间:从提交一个请求,到收到响应之间的时间间隔
- 事务响应时间:事务由一系列请求组成,这些请求完成所需要花费的时间称为系统响应时间
- 数据吞吐量:单位时间内,客户端和服务器之间网络上传输数据的吞吐量
如何体现性能?
压力测试:长时间超大负荷运行,测试程序稳定性
负载测试:反常情况下的测试,找出性能瓶颈或不稳定性问题。
12. 如何做功能测试
功能测试以用户需求为导向
功能测试主要测试:界面、数据、操作、逻辑、接口等
-
界面清晰美观、
-
能接收正确数据输入,对于异常输入有一定容错性
-
逻辑清晰,符合使用者习惯
-
对外部的系统接口稳定有效
-
菜单、按钮等各种操作正常,能处理一些异常操作
常用测试方法有:
-
像一般用户一样测试:模拟一般用户的使用进行测试
-
像业务人员一样测试:按照业务流程等进行测试
-
更加专业的测试:
- 扮演用户做测试:
- 基于用例的测试:从实际业务触发,分析、不同用户使用系统的范围和特点确定用户在特定业务上的操作过程
- 基于用例/场景的测试:分析不同场景下的业务特点进行测试。
- 基于需求的测试(按照需求说明文档进行测试)
-
对外部的系统接口稳定有效
-
菜单、按钮等各种操作正常,能处理一些异常操作
常用测试方法有:
- 像一般用户一样测试:模拟一般用户的使用进行测试
- 像业务人员一样测试:按照业务流程等进行测试
- 更加专业的测试:
- 扮演用户做测试:
- 基于用例的测试:从实际业务触发,分析、不同用户使用系统的范围和特点确定用户在特定业务上的操作过程
- 基于用例/场景的测试:分析不同场景下的业务特点进行测试。
- 基于需求的测试(按照需求说明文档进行测试)