软件测试复习题(2021-07-03)
一、软件测试基础
软件生命周期
- 问题定义->需求分析->软件设计->软件开发->软件测试->软件维护->淘汰
软件缺陷产生的原因
-
需求不明确 -
软件结构复杂 -
编码问题 -
项目期限短 -
使用新技术 -
开发人员水平有限
软件缺陷的处理流程
软件测试的分类
-
按照测试阶段分类
-
按照测试技术分类
-
按照软件质量特性分类
-
按照自动化程度分类
-
按照测试类型分类
-
其他分类
软件测试的模型
-
V模型
- 优点:将复杂的测试工作分成了目标明确的小阶段来完成,具有阶段性、顺序性和依赖性,既包含了对于源代码的底层测试,也包含了对于软件需求的高层测试。
- 缺点:只有在编码之后才能开始测试,早期的需求分析等前期工作没有涵盖其中,不能发现需求分析等早期的错误,为后期的系统测试、验收测试埋下了隐患。
-
W模型
- 优点:测试范围不仅包括程序,还包括需求分析、软件设计等前期工作,这样有利于尽早地全面发现问题。
- 缺点:将软件开发过程分成需求、设计、编码、集成等一系列的串行活动,无法支持迭代、自发性等需要变更调整的项目。
软件测试原则
- 测试应基于客户需求
- 测试要尽早进行
- 穷尽测试是不可能的
- 遵循GoodEnough原则
- 测试缺陷要符合“二八”定理(Pareto原则/缺陷集群效应)
- 避免缺陷免疫
软件测试流程
-
分析测试需求 -
制定测试计划
- 确定测试范围
- 指定测试策略
- 安排测试资源
- 安排测试进度
- 预估测试风险
-
设计测试用例 -
执行测试 -
编写测试报告
二、黑盒测试
等价类划分法
-
有效等价类与无效等价类定义
- 有效等价类:有效值的集合,它们是符合程序要求、合理且有意义的输入数据。
- 无效等价类:无效值的集合,它们是不符合程序要求、不合理或者无意义的输入数据。
-
黑盒测试等价类划分法设计测试用例:
地区码 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|
| 空白 | 1 | 有非数字字符 | 3 | | 三位数字 | 2 | 多于三位数字 | 4 | | | | 少于三位数字 | 5 |
前缀 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|
| 非“0”或“1”开头的三位数字 | 6 | 有非数字字符 | 7 | | | | “0”开头的数字 | 8 | | | | “1”开头的数字 | 9 | | | | 多于三位数字 | 10 | | | | 少于三位数字 | 11 |
后缀 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|
| 4位数字 | 12 | 有非数字字符 | 13 | | | | 多于四位数字 | 14 | | | | 少于四位数字 | 15 |
-
测试用例
用例编号 | 输入 | 预期输出 | 覆盖有效等价类编号 |
---|
test1 | 568 5115 | 有效输入 | 1,6,12 | test2 | 023 568 5115 | 有效输入 | 2,6,12 |
用例编号 | 输入 | 预期输出 | 覆盖无效等价类编号 |
---|
test3 | abc 568 5115 | 无效输入 | 3 | test4 | 1234 568 5115 | 无效输入 | 4 | test5 | 12 568 5115 | 无效输入 | 5 | test6 | 023 abc 5115 | 无效输入 | 7 | test7 | 023 068 5115 | 无效输入 | 8 | test8 | 023 168 5115 | 无效输入 | 9 | test9 | 023 1234 5115 | 无效输入 | 10 | test10 | 023 12 5115 | 无效输入 | 11 | test11 | 023 568 abcd | 无效输入 | 13 | test12 | 023 568 51115 | 无效输入 | 14 | test13 | 023 568 515 | 无效输入 | 15 |
因果图设计法
- 原因(输入)一般用ci表示,结果(输出)用ei表示
- 输入与输出之间的关系
决策表法
- 决策表合并规则:当且仅当同一条件桩的状态不同且对应的同一动作桩的两个动作项一致时可合并。
三、白盒测试
白盒测试方法
- 语句覆盖(每个语句均覆盖一次——弱覆盖)
- 判定覆盖(每个判定【一个判定框,类似于x>0&&y>0】至少有一次真一次假)
- 条件覆盖(每个条件【类似于a>0】至少一次真一次假)
- 判定—条件覆盖(判定与条件均需要至少覆盖一次真一次假)★
- 条件组合(是判定语句中的所有条件的所有可能出现一次且每个判定语句本身的结果也至少出现一次)
- 路径覆盖(每个路径都进行一次覆盖——强覆盖)
白盒测试方法设计测试用例
四、性能测试
loadrunner三大组件
- Virtual User Generator(VuGen):创建虚拟用户脚本的工具
- Controller:创建和控制LoadRunner场景(场景:每次测试中发生的事件【用户数、执行的操作、性能指标等】)
- Analysis:数据分析工具,收集性能测试中的各种数据,对其进行分析并生成图表和报告供测试人员查看
性能测试常见指标
- 响应时间:系统对用户请求做出响应所需要的时间(不包含浏览器解析时间)
- 吞吐量:单位时间内系统能够完成的工作量
- 并发用户数:同一时间请求和访问的用户数量
- TPS:系统每秒钟能够处理的事务和交易的数量
- 点击率:用户每秒向Web服务器提交的HTTP请求数——Web应用特有性能指标
- 资源利用率:软件对系统资源的使用情况,CPU利用率(70<= <=80)、内存利用率(70<= <=80)、磁盘利用率等
性能测试分类
- 负载测试(标准状态下)
- 压力测试(极限状态下)
- 并发测试(多用户的影响)
- 配置测试(软硬件对系统的影响)
- 可靠性测试(业务压力)
- 容量测试(一定软硬件及网络环境下,系统所支持的最大用户数、最大存储量)
五、安全测试
防止SQL注入
-
注入示例:
-
正常id = 22 ? 对应SQL语句:select * from user where id = 22 ? 只能查询到指定id为22的用户信息 -
SQL注入:id = ’ ’ or 1 = 1 ? 对应SQL语句:select * from user where id = ’ ’ or ‘1’ = ‘1’ ? 可以查询到所有的用户信息,因为此时的where id = ’ ’ or ‘1’ = '1’永远为真
XSS跨站脚本攻击
-
示例 ?
六、自动化测试
自动化测试前提条件
- 项目需求变动不频繁
- 项目周期足够长
- 自动化测试脚本可重复使用
自动化测试基本流程
自动化测试实施策略
- 金字塔策略
七、移动App测试
移动App测试专项测试
- 安装测试
- 卸载测试
- 升级测试
- 交互性测试
- 弱网测试
- 耗电量测试
移动App测试工具
|