有一种东西,
如果它太小,需要付出的努力就太大;如果它太大,就很难测试。
没错!它是单元。
但是什么才是一个好的单元定义呢?为什么它如此重要?
单元的定义对测试过程有很大的影响,但同时单元的定义也是不精确的。如果以一种不恰当的方式定义单位,这可能意味着大量的努力甚至麻烦。术语“单元”的定义可见于ISO 26262、ISTQB、ASPICE和许多其他文件。
我们的结论是:单元是一个小的可测试的软件组件。不幸的是,这种定义非常模糊。这样的定义不是用于工具,而是用于评估和审计。因此,在大多数组织中,这个术语是单独指定的。
定义术语“单元”有两种方法:通用描述和体系结构描述。
在通用描述中,单元将被定义为一个文件或一个函数。从特定的、体系结构的角度来看,单元是软件体系结构中的一个元素。基于体系结构的特定定义可以减少单元测试中测试对象的数量。以这种方式定义的单元可以包含多个文件中的多个函数。
这种方法不违反ISO 26262或ASPICE的要求。此外,如果体系结构是自上向下开发的,您可以将体系结构的更高级别指定为纯集成测试,从而也将减少单元测试级别的测试对象。在单元级别省略的测试会在之后的软件集成测试(SWE.5)中执行。
一些组织通过调整单元的定义来缩小他们自己的需求之间的差距。典型的补充包括:
更精确地定义单元,例如,在编程语言C中,将单元定义为函数级别的数据和指令的封装,或者为单元构造过程提出要求,例如指定最大圈复杂度。
专业建议:对于具体项目来说,如果需求是好的,但太过笼统或太过严格,可以与客户讨论和协商,以定义一个一致的解决方案作为替代措施。这可以大大减少工作量。从风险的角度来看,定义单元的时间应该越早越好。
TPT可以测试所有类型的单元定义。从工具的角度来看,这并不是最重要的。为了将测试过程中产生的总工作量减少到最小,我们建议不要笼统地定义单元。这会为重构活动提供便利并减少额外的工作。