1.单元测试UT,主要是对接口进行调用来测试,模拟一个小的场景,用大量的UT测试用例来测试返回值是否正确,和有没有被修改。平台就是linux的用户态程序,调用UNF、IOCTL接口。因为给客户用的接口,入参,返回值,理论上是不能轻易改变的。只能增加,向下兼容。
2.代码review,代码走读,请专家帮忙,这也算是一种保证自己的代码没问题的方法吧。
3.MST测试,根据业务准备的各种场景,比如视频业务,变分辨率,编码率,10bit,hdr,一般用shell脚本,执行事先写好的sample,尽可能覆盖各种场景。然后看log有误异常打印。
4.自备的测试用例,CRC校验,像我做的是视频编解码驱动这一块,码流的编解码是否正确很重要,将各个协议各种分辨率的码流,解码出来的YUV和ffmpeg解出来的YUV进行像素级对比。
5.codex、codeCC,之类的静态代码检视工具,能够扫描出代码很多漏洞,一些分支无法走进去,空指针的可能,无用变量这些。
6.peach,iofuzz等程序攻击软件,有内核态和用户态,需要打印出设备文件句柄和command值,和构建UNF模型,频繁掉unf接口或者ioctl接口,疯狂的乱传参数进去,个人觉得没啥意义,主要保证系统没那么容易挂死,要有很多错误分支,错误处理的代码。
7.交给测试部测试。
8.手工自测,看业务需求。
总而言之,如果因为自己写的代码埋下的bug,导致别人发现,然后定位到你身上,会非常难受。写代码要想好。