正如我从一些问答环节(参见本节和本节)所理解的那样,单元测试应该由开发人员编写.
在我之前的工作场所,我们试图将这项任务交给QA工程师,但它没有用.可能是因为它已经是一个项目的中间部分,他没有机会进行重要的代码覆盖,或者可能是因为另一个原因.
您是否认为让开发人员以这种方式编写单元测试是一个坏主意?
一般来说,我认为这是一个坏主意.单元测试指导开发人员编写模块化(因此有用,可重用)代码,因为他们的代码需要与生产系统和测试代码一起使用.
单元测试和QA测试的意图之间存在微妙但重要的区别:QA测试验证功能; 单元测试验证设计.也就是说,外视图与产品的内部视图形成对比.
质量保证人员不熟悉产品的内部设计,这是有意的,因为他们必须模仿用户的观点.另一方面,开发人员非常了解内部工作原理,对他们来说,验证设计的机制是有意义的,如果有的话.
因此,开发人员而不是QA人员编写单元测试是绝对自然的.
这取决于您计划如何实施测试工作流程.
坏:
开发人员编写他的代码,然后另一个人尝试添加单元测试来测试此代码.这里的问题是开发人员不会关心编写易于测试的代码.可能花费很多时间来尝试使单元测试适应可严格测试的代码,或者通过重构原始代码来浪费时间以便更好地测试.
好:
开发人员之外的另一个人写了单元测试,然后开发人员编写了他的代码,尝试将所有这些测试都设置为绿色.这可能有点尴尬,因为一些基本接口必须存在才能实现测试,但基本接口应该在设计文档中定义,因此开发人员可以为测试开发人员准备接口.优点是,测试开发人员试图编写他能想到的尽可能多的测试而不依赖于实际实现,而原始开发人员会根据代码的内部编写测试,而不是想象其他问题.否则,他已经在实施过程中对他们进行了反击.
"好"方法在我的两个项目中运行良好,但是我们使用了无类型语言(Smalltalk),我们只需要同意类名来运行测试.在Java中,您必须至少实现一个接口,以便调用函数.