单元测试使用RTOS的项目
对于我的下一个嵌入式系统项目,我想接受单元测试.它在技术上可能不是测试驱动的开发,但我至少希望预先测试单元测试并进行全面的单元测试.
我正在使用IAR EWARM工具链.我正在考虑使用cmocka,unity或cunit.我正在学习使用μC/ OS-III作为RTOS. 这是一个问题:单元测试如何与图中的RTOS一起使用? E.G:我应该禁用内核并将代码单元测试为单线程应用程序并存根所有/大多数内核调用,还是有更好的方法? 例: #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提供现成的单元和集成测试包. 斯科特验证软件 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |