目录
一、软件测试
1、软件测试类型(动态测试 / 静态测试)
* 动态测试【计算机运行】
(1)白盒测试法【结构测试】:主要用于单元测试阶段。
(2)黑盒测试法【功能测试】:主要用于集成测试、确认测试和系统测试阶段。
(3)灰盒测试法:白+黑
* 静态测试【人工监测和计算机辅助分析】
2、软件测试阶段
3、软件系统测试
二、遗留系统演化策略
三、新旧系统的转换策略
四、数据转换与迁移
五、影响软件可维护性的原因
六、软件维护类型
a:控制流测试【逻辑覆盖测试(语句覆盖最弱,路径测试覆盖最强)】
b:数据流测试
c:程序变异测试【错误驱动测试】
a:等价类划分:不同等价类,揭示不同问题;有效等价类/无效等价类。
b:边界值分析:1 <= x <= 10,可取 x 的值为0、1、10、11作为测试数据。
c:错误预测:依靠测试人员的经验和直觉。
d:判定表:最适合描述在多个逻辑条件取值的组合所构成的复杂情况下,分别要执行那些不同的动作。
e:因果图:根据输入条件与输出结果之间的因果关系来设计测试用例。
a:桌前检查
b:代码审查
c:代码走查
在静态测试中,主要是对代码进行静态分析,静态分析一般包括控制流分析、数据流分析、接口分析、表达式分析
(1)控制流分析:是否存在没有使用的语句 / 无法到达的语句 / 调用并不存在的子程序。
(2)数据流分析:引用未定义的变量、对以前未使用的变量再次赋值。
(3)接口分析:模块之间的接口的一致性、子程序和函数之间的接口一致性、函数形参与实参的数量、顺序、类型的一致性。
(4)表达式分析:括号不配对、数据引用越界、除数为零。
测试阶段:
(1)单元测试:依据【详细设计】,模块测试,模块功能、性能、接口等。
(2)集成测试:依据【概要设计】,模块间的接口。
(3)系统测试:依据【需求文档】,在真实环境下,验证完整的软件配置项能否和系统正确连接。
(4)确认测试(验收测试):依据【需求文档】,验证软件与需求的一致性。内部确认测试。
(5)回归测试:测试软件变更之后,变更部分的正确性和对变更需求的符合性。
(1)功能测试(2)性能测试(3)健壮性测试(4)用户界面测试
(5)安全性测试(6)安装与反安装测试
性能测试:
(1)负载测试:各种工作负载下系统的性能
(2)压力测试【测上限】:系统的瓶颈或不能接受的性能点。
(3)强度测试【测下限】:系统资源特别低的情况下运行。
(4)容量测试【并发测试】:同时在线的最大用户数。
(5)可靠性测试:MTTF(Mean Time to Failure,系统发生失效前的平均运作时间)、MTBF(Mean Time Between Failures,平均无故障工作时间)、MTTR(Mean Time to Restoration,故障后平均修复时间)之类的参数。
(1)高水平低价值:采用集成策略,主要针对 “信息孤岛” 。
(2)高水平高价值:采用改造策略,改造包括功能的增强和数据模型的改造两个方面
(3)低水平高价值:采用继承策略,开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。
(4)低水低价值:采用淘汰策略。
(1)直接转换策略:切换成本低,但风险较大。
(2)并行转换策略:两个系统齐头并进,发现问题改进系统,直到没有问题再使用新系统。缺点是代价过高,业务人员需要在新旧两套系统中同时进行操作。
(3)分段转换策略:例:全国范围的系统,一个个地方切换试点。例:多个子系统,一个个系统切换。
(1)【可理解性】:是指通过阅读源代码和相关文档,了解软件的功能如何运行的容易程度。
(2)【可修改性】:是指修改软件的难易程度。
(3)【可测试性】:是指验证软件程序正确的难易程度。可测试性好的软件,通常意味着软件设计简单,复杂性低。因为软件的复杂性越大,测试的难度也就越大。
(4)【可靠性】:一个软件的可靠性越高,需要维护的概率就会越低。
(5)【可移植性】:是指将软件从一个环境移植到新的环境下正确运行的难易程度。软件运行环境的变化是软件维护的一种常见情形,可移植性好的软件会降低维护的概率。
(1)正确性维护【修BUG】:识别和纠正软件错误 / 缺陷,测试不可能发现所有错误。
(2)适应性维护【应变】:指使应用软件适应环境的变化【外部环境、数据环境】而进行的修改。
(3)完善性维护【新需求】:扩充功能和改善性能而进行的修改。
(4)预防性维护【针对未来】:为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。经典实例:【专用】改【通用】。