加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单元测试使用RTOS的项目

发布时间:2020-12-16 07:12:03 所属栏目:百科 来源:网络整理
导读:对于我的下一个嵌入式系统项目,我想接受单元测试.它在技术上可能不是测试驱动的开发,但我至少希望预先测试单元测试并进行全面的单元测试. 我正在使用IAR EWARM工具链.我正在考虑使用cmocka,unity或cunit.我正在学习使用μC/ OS-III作为RTOS. 这是一个问题:
对于我的下一个嵌入式系统项目,我想接受单元测试.它在技术上可能不是测试驱动的开发,但我至少希望预先测试单元测试并进行全面的单元测试.

我正在使用IAR EWARM工具链.我正在考虑使用cmocka,unity或cunit.我正在学习使用μC/ OS-III作为RTOS.

这是一个问题:单元测试如何与图中的RTOS一起使用? E.G:我应该禁用内核并将代码单元测试为单线程应用程序并存根所有/大多数内核调用,还是有更好的方法?

例:
在μC/ OS-III中,切入点仍然是主要的.从main调用任何init代码,然后调用OSStart()开始多任务处理.因此,当我运行测试工具时,我可能无法调用OSStart()

#ifdef UNIT_TEST
test_runner();
#else
OSStart(&err);
#endif

然后在我的所有应用程序代码中,我只需要模拟消息传递和延迟对内核的调用.

这是最好的方法吗?或者我是否更适合启动内核,为我的测试运行器创建任务,并将其中的所有任务作为单个线程运行,或者是否有一些其他好的方法涉及从测试工具中生成其他任务.

解决方法

你似乎对单元测试有误解.您的代码是否使用RTOS是不相关的,因为单元测试涉及单独测试代码模块,即C函数.在测试期间,RTOS不会运行.

单元测试还假设您正在测试一组定义代码功能的需求.
大多数单元测试的目标是能够提供各种形式的代码覆盖.这包括声明,决定和多条件决策覆盖.

语句覆盖率表明您已经运用了函数中的每一行代码.

决策覆盖范围涉及表明涵盖所有条件的双方(真/假).

多条件决策覆盖(MCDC)用于测试复杂的决策,即if(a&&(b || c))并确保涵盖所有变化. MCDC测试通常仅限于非常关键的应用,例如航空电子设备,其中故障可能带来灾难性后果.

子程序通常是存根的,即被拦截和控制,以证明每个子程序按顺序被调用,并且传递的参数是正确的,并且各种返回值正确地起作用.

我承认我对您提到的工具没有任何经验,但有许多商业单元测试工具,Cantata,LDRA TestBench,IBM Rational Test Real Time以及其他适用于深度单元测试的工具.

RTOS本身也有商业解决方案.我公司为μC/ OS-II和μC/ OS-III提供现成的单元和集成测试包.

斯科特验证软件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读