11. 软件设计中的测试
关于测试的原则和类型
我们要遵守以下的几个原则
要尽早的开始测试
避免测试自己的设计的程序
尽可能选择些不合理的数据
修改后要进行回归测试
一般来说没有发现的错误数量和已经发生的错误数量成正比,这个概念是指的一个项目的复杂度越高,其可能出现的错误数越多
对于类型,则可以分为如下的类型
对于静态测试,基本聚焦于一些简单的代码审查工作
对于动态测试,则是应该关注的重点
对于黑盒测试,则是应该考虑如下的用例设计原则
要设计一些基本的测试,查看等价类的输出
其次是一些边界值的分析
之后是错误推测
因果图
对于白盒测试,基本遵循基本路径测试
循环覆盖测试,
逻辑覆盖测试
对于逻辑覆盖测试,则应该是
对于实际的测试检测,则可以分为
简单的单元测试,也就是不同模块的测试
集成测试,其中分为了一次性组装,将所有模块进行组装,或者增量式组装,每次多加一个模块进行组装,其中还有自顶向下,或者自底向下以及混合式
然后是确认测试,主要和用户打交道
最后是系统测试,主要分为如下
McCabe复杂度计算方法
简单来说,公式为 V(G) = m – n + 2
其中m是弧的个数,n是结点个数
就比如说这个就有 8个结点,10个弧, 得到的结果为 10- 8+ 2 = 4
软件的测试还有部分关于维护的内容
其主要可以定义为在软件交付使用之后的一系列活动,包括软件修改,培训,帮助资料等
其可以简单分为
易分析性,主要是代码需要写的足够清晰明了
易改变性,代码需要进行松耦合
稳定性,足够稳定的运行
易测试性,方便后续的测试工作
维护类型
分为了改正性维护,适应性维护,完善性维护,预防性维护
软件过程改进
分为了阶段式和连续式
阶段式则是划分了不同定义,如果一个组织满足了该等级的所有定义,则就是对应成熟度的组织
其中管理级,是低级别的,一般来说是关于个人的级别的
定义级别是公司一个层面的
定量管理级别,主要是体现在量化的概念了
优化级别不必说,主要是在其上进行优化
这种划分的方式需要一个组织全面的符合要求
所以有了其他的管理方式,连续性的分组
按照不同的类型进行的划分
其次是项目管理
这一点在软件设计师中涉及的不多,主要关注的点在于其的计算逻辑
其中的重点在于时间管理和风险管理
我们分别看下例题
对于这一题,第一个选项直接选D Gantt图并不能展示描述各个任务之间的以来关系
而事件6的最晚开始时间为
这一题需要我们先计算出9的开始时间
如果从不同的开始来计算
9的开始时间可以为
15,13,8,9
取最大的15为例,计算出6的最晚开始时间为
15-4-1 = 10
其次是风险管理
主要的重点是风险曝光度
其次是一些风险的概念
对于项目风险,这个不必说
技术风险,则是依据于项目使用的技术
商业风险,则是和个人无关的,商业上的问题