前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈软件单元测试

浅谈软件单元测试

作者头像
xbai921031
发布2022-05-25 13:39:51
4460
发布2022-05-25 13:39:51
举报

在汽车行业有一个比较重要的国际标准叫做ISO 26262(功能安全)。本文就从笔者所接触过的关于单元测试的相关内容,分享一些单元测试常用方法。

1.等价类划分 等价类划分一般比较常用,例如:

上述程序中,a的取值以5为界限,大于5的可以当作一个等价类,小于等于5的又可以当作一个等价类。

当然等价类的划分也是分有效和无效的,比如a的数据类型为int型,如果a取值为负数,那么这个取值就是无效等价类,在16位编译器中,如果a的取值超过2^17 - 1,这个取值也是无效等价类;那么相反的,在int正常取值范围内的可以被划分为有效等价类。

2.边界值

一般边界值都是要测试的,比较容易出问题。

3.测试用例编写方法

(1)决策表分析法

这种方法一般首先是罗列出所有可能的情况,然后可以根据实际情况删去重复项。例如:

(2)状态图分析法

这个方法就是把各个状态罗列出来,然后根据状态图状态跳转,画出下一个状态,一级一级画下去直到结束,画出来的图每个分支就是一个测试用例。

(3)MC/DC准则

MC/DC(修订的条件/判定覆盖)(Modified Condition/Decision Coverage),是一种常用的软件结构覆盖率测试准则,通俗来说就是,每个条件要取一次真一次假,每个条件要独立影响一次结果。由于文字表述不太好理解,下面举例子(以下所有例子都以1和0代表条件的真假):

上图中的分析是MC/DC准则的基础,有了上面两种情况,就可以写出任意条件组合的测试用例,下面例举一个稍微复杂的例子:

总结:

软件测试中,之所以用到这些方法,是因为实际情况是很复杂的,测试用例可能是无穷无尽的,怎么通过有限次的测试达到测试覆盖率的最大化,就需要用到上述方法。但是如果输入条件很多的话,人工去设计测试用例可能就很困难,需要借助到工具,笔者曾经在MBD开发中用过Matlab中Simulink Design Verifier工具可以自动生成测试覆盖率百分之百的测试用例(前提是代码设计没有缺陷,符合静态测试规则)。以上内容是笔者自己的理解,水平有限,如有错误欢迎指正。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的程序喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档