软考系统架构设计师之软件测试篇
一、软件测试
多种分类方式:
【以测试过程中程序执行状态为依据可分类】
动态测试【计算机运行程序】
静态测试【人工监测和计算机辅助分析】分为3个步骤:构造测试实例、执行程序以及分析结果。桌前检查、代码审查、代码走查 都是做的【静态分析】
1、控制流分析:是否存在没有使用的语句/无法达到的语句/调用并不存在的子程序。
2、数据流分析:引用未定义的变量、对以前未使用的变量再次赋值。
3、接口分析:模块之间接口的一致性、子程序和函数之间的接口一致性、函数形参与实参的数量、顺序、类型的一致性。
4、表达式分析:括号不配对、数组引用越界、除数为零。
二、白盒测试与黑盒测试
1、以内部结构是否可见分类
a)白盒测试【结构测试】:关注内部结构与逻辑。
控制流分析、数据流分析、路径分析、程序变异【错误驱动试】
【路径数盖】(最强)
【逻辑覆盖】(由强到弱排列)
修正条件/判定 条件组合 条件/判定覆盖 条件覆盖 判定覆盖 语句覆盖
b)黑盒测试【功能测试】:关注输入输出及功能
等价类则分: 不同等价类,揭示不同问题;有效等价类/无效等价类。
边界值分析: 1<=x<=10,可职x的值为0、1、10和11作为测试数据
错误推测 :依靠测试人员的经验和直觉。发现问题再解决问题。
判定表: 最适合描述有多个还条件取值的组合所构成的复杂情况下分别要执行哪些不同的动作。
因果图: 根据输入条件与输出结果之间的因果关系来设计测试用例。
c)灰盒测试法:既要关注逻辑又要关注功能。 类似中庸之道
2、从程序执行的方式分类
a)、【人工测试】
b)、【自动化测试】先写脚本 ->自动化执行
不适合场景:项目周期短,需求变动频繁
常见自动化测试:单元自动化测试、接口自动化测试、UI自动化测试
例子:
软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机辅助静态分析的手段对程序进行检测,包括()等方法。
A 边界值分析、逻辑覆盖、基本路径
B 桌面检查、逻辑覆盖、错误推测
C 桌面检查、代码审查、代码走查
D 错误推测、代码审查、基本路径
A 边界值分析、逻辑覆盖、基本路径
B 桌面检查、逻辑覆盖、错误推测
C 桌面检查、代码审查、代码走查
D 错误推测、代码审查、基本路径
参考答案:A、C
在静态测试中,主要是对程序代码进行静态分析。“数据初始化、赋值或引用过程中的异常”属于静态分析中的( )。
A 控制流分析
B 数据流分析
C 接口分析
D 表达式分析
参考答案:B
三、软件测试阶段
软件测试阶段
测试阶段
1、单元测试: 依据【详细设计】,模块测试,模块功能、性能、接口等
2、集成测试: 依据【概要设计】,模块间的接口
3、系统测试: 依据【需求文档】,包括功能测试、性能测试、验收测试、压力测试等
确认测试: 依据【需求文档】,验证软件与需求的一致性。内部确认测试、Alpha测试、Beta测试、验收测试。
其他测试:
AB测试 :多版本同时使用、利于收集各版本的用户反馈,评估出最好版本。故算是一种【网页优化方法】。
Web测试 :Web系统测试与其他系统测试测试内容基本相同,只是测试重点不同。Web代码测试包括:源代码规则分析、链接测试、框架测试、表格测试、图形测试等方面
链接测试:
链接测试可分为3个方面:
1、测试所有链接是含按指示的那样确实链接到了该链接的页面。 2、测试所链接的页面是否存在。 3、保证Web内用系统上没有孤立的页面。
表单测试: 验证服务器是否能正确保存这些数据,后台运行的程序能否正确解释和使用这些信息。测试提交操作的完整性。
回归测试: 测试软件变更之后,变更部分的正确性和对变更需求的符合性。
集成测试策略
一次性组装【风险高】
增量式组装【测试全面】
增量式组装分为:
自顶向下【需要桩模块】
自底向上【需要驱动模块】
混合式【桩模块和驱动模块都需要】
测试用例->驱动模块->测试结果
------------->被测模块------------>
->桩模块、->桩模块、->桩模块
软件系统测试
功能测试
性能测试
健壮性测试
用户界面测试
安全性测试
安装与反安装测试
性能测试包含以下几种:
负载测试:各种工作负载下系统的性能
压力测试【测上限】:系统的瓶颈或不能接受的性能点
强度测试【测下限】:系统资源特别低的情况下运行
容量测试【并发测试】:同时在线的最大用户数
可靠性测试:MTTF之类的参数
例子:
在单元测试中,()。
A.驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块
B桩模块用来模拟被测模块所调用的子模块,自顶向下的单元测试中不需要另外编写桩模块C驱动模块用来模拟被测模块所调用的子模块,自底向上的单元测试中不需要另外编写驱动模块
D 桩模块用来调用被测模块,自底向上的单元测试中不需要另外编写桩模块
参考答案:A
软件性能测试有多种不同类型的测试方法,其中,()用于测试在限定的系统下考查软件系统极限运行的情况,()可用于测试系统同时处理的在线最大用户数量。
A 强度测试
B 负载测试
C 压力测试
D 容量测试
A 强度测试
B 负载测试
C 压力测试
D 容量测试
参考答案:C、D