【软件构造】软件测试

测试是提高软件质量的重要手段,确认软件是否达到可用级别。测试跟其他活动的目标相反,它的目的是发现错误 再好的测试也无法证明系统里不存在错误。

测试从范围上分为:单元测试:针对软件的最小单元模型开展测试(一般来说是在单个方法/类的级别),隔离各个模块,容易定位错误和调试。集成测试:将多个程序员/团队编写的类/包/组件/子系统联合起来测试。系统测试:对整个系统进行测试,将硬件、软件、配置信息等看作一个整体。验收测试:产品发布之前所进行的软件测试活动,是技术测试的最后一个阶段,目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。回归测试:一旦程序被修改,重新执行之前的所有测试以确认修改没有引入新的错误或导致其他代码产生错误。

测试又分为静态测试和动态测试:静态测试:在编写代码的阶段由程序员或是代码编辑器、编译器等工具进行检查(如语法检查、代码评审)。动态测试:通过测试用例实际执行了编写的代码 动态测试可能在程序完全编写完成前就用于测试代码的特定节。

测试从结构上又分为黑盒测试和白盒测试:白盒测试:对程序内部代码结构的测试。黑盒测试:对程序外部表现出来的行为的测试(例如输入输出)。

我们接下来着重要讲的就是黑盒测试和白盒测试。

黑盒测试关键在于检查程序是否符合规约,完全从函数规约导出测试用例,不考虑函数内部实现。 用尽可能少的测试用例,尽快运行,并尽可能大的发现程序的错误。我们可以通过使用等价类划分的方法。来降低测试用例的数量,提高效率。下面这是一个典型的运用了等价类划分的黑盒测试

等价类划分的原则是::考虑输入数据是否限定了数值范围,或是指明了特定的值,或是对不同范围的值可能采用不同的计算方案。

但是除了等价类划分,我们还应该着重注意边界值,因为大量的错误发生再边界而非中央。边界值分析方法是对等价类划分方法的补充。 

讲了划分之后就得讲讲他的覆盖方法了,他有两种覆盖方法,分别是笛卡尔积覆盖(全覆盖)和每个值的覆盖。全覆盖讲究将多个划分维度上的多个取值组合起来,每个组合都要有一个用例。不过并非所有组合情况都可能。他的测试完备,但用例数量多,测试代价高。每个值的覆盖讲究每个维度的每个取值至少被 1 个测试用例覆盖一次即可。测试用例少,代价低,但测试覆盖度未必高。

白盒测试则是据程序执行路径设计测试用例,一般较早执行。白盒测试一般注重覆盖度测试,他关注代码的覆盖度,代码覆盖度越低,测试越不充分;但要做到很高的代码覆盖度,需要更多的测试用例,测试代价高。他有3种覆盖方法,分别是路径覆盖,分支覆盖,语句覆盖。语句覆盖:每⼀条语句至少执行一次。分支覆盖:判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次。路径覆盖:每条可能执行到的路径至少执行一次。他们的覆盖效果和测试难度都是路径覆盖 > 分支覆盖 > 语句覆盖。

用于进行代码检测的工具也有不少,有Junit、EclEmma、VisualVM、AppPerfect等动态检查,需要执行代码。CheckStyle、SpotBugs、PMD等静态检查,无需执行代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值