查看原文
其他

【连载】嵌入式测试驱动开发(8)

bug菌 最后一个bug 2022-10-14
    /***接着聊一聊***/
    昨天写了一篇文章关于一种c语言的高效率状态机实现,使用的是函数指针提高传统分支语句的执行效率,因为我们的测试驱动程序开发也说了7讲文章了,所以前面穿插了这篇文章进行缓解一下,对于不了解测试驱动开发TDD的同志们还有一些编程经验或者项目经验不多的程序员来说可能有些东西难以理解,不过我们可以先阅读一些方法和思想以后在我们的项目开发中会有豁然开朗的感觉!好,下面我们进行第八节的讲解!
       /***替换法细节讲解***/
      1)链接的方法相对比较统一,实现对应的依赖接口,然后把一些接口的实现编译成测试模块,然后在链接文件里面进行修改对应的文件即可。
       2)对于我们如果每个测试都需要使用我们所写的伪装模块,那么使用链接的办法即可,但是在我们一个项目中测试项有些需要调用有测试输出的模块,有些测试项中不需要有测试输出的模块,那么此时我们使用函数指针的办法进行灵活选择。
        3)我们可能会想那些我们所有要测试的模块,只要是直接调用的函数皆可使用函数指针,其实大可不必这样极端,有些测试模块,我们可以通过链接的方式去进行替换,也未尝不是一件好事。我们在第2)项说了对于那些需要在不同测试中改变的处理方法,我们可以用函数指针的方法这样跟着灵活。
        /***测试对象开发***/
       测试对象——我们都知道前面我们进行的开发替换或者伪装都只是安装了一些测试函数或者是测试变量来进行操作,对于上面的简单例子这样的办法基本可以够用,可是对于一些复杂的交互或者是一些时序上复杂的处理简单的替换几个函数或者变量难以满足测试需求,这样就需要我们系统的定制测试对象。
        可以这么说构建测试对象我们几乎可以造成各种测试单元,也就可以完全脱离硬件完成测试单元!比如说我们现在需要进行一个Flash的驱动开发,我们完全可以拿一片内存在模拟数据存储,通过对应的. c和. h来构建一个测试对象的数据和方法接口,完成上层的驱动层的开发。
        我们要注意:构建测试对象并不是要构建一个硬件上的模拟器,那样太复杂了,比开发一个驱动复杂得多,我们要做的是一次只是模拟一个场景而不是整个设备,因为测试对象之前就已经确定了期望。
        好了,这里是公众号“最后一个bug”,下期我会为大家详细解析如何构建测试对象!我们下期见!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存