前言:
最近写的一个C程序,bug比较多,影响较差;对比前面写基于libfdt的一个工具,将其从arm64移植到x86后,开发一个新功能就能用测试用例跑一把发现问题,确保没问题。
最初了解TDD 测试驱动开发是,《代码整洁之道》中提过一句,
芯片软件开发测试驱动开发【下简写为TDD】的必要性
- 定位bug的时间是代码编写时间的数倍。一天写bug,三天找bug,别干活了。
- 芯片回片前,使用qemu或FPGA模拟,运行速度慢。重启一把耗时很长。服务器负载高时,编译内核几分钟,FPGA起一把耗时十几分钟起步,一天干不了什么活,没什么成就感。
- debug麻烦。要么加一堆打印,尤其是驱动调试;要么基于命令行的gdb或kdb,交叉编译时还经常找不到对应源文件。P.S. 对于性能高的板子,可以直接vscode连上去,在上面进行。P.S. vscode kdb 插件和 vscode C调试环境配置也很重要。
- 出bug容易被leader diss,说不定背后又说能力不行orz。。。
- 被测试小姐姐抓到了,扣绩效加没面子。只有提前把测试的活干完才行。
方法
- 良好的编程习惯。
- 能否x86平台先验证基本逻辑?若可以,写一个makefile,再写一个shell脚本,编码后运行脚本能一键输出。
- 随机输入,结果会随机。给定简单输入比如000 111,结果会更可靠。
- 单元测试,冒烟测试,白盒测试etc
参考资料,借此较全面了解测试
比较全的: W3 school软件测试教程
- 系统梳理一下
gtest框架
入门参考:这篇知乎文章