Unit testing 测试部门的职责是什么?

Unit testing 测试部门的职责是什么?,unit-testing,testing,Unit Testing,Testing,我知道很多公司都有自己的测试部门,我问这个问题是因为我不能弄清楚一些概念 1,单元测试应该由测试部门/第三方企业完成吗? 根据我自己的感觉,我认为这应该由开发人员自己完成。但有一句谚语说: 您将倾向于以编写代码的方式测试代码。所以我们最好做单元测试。而且你不是一个专业的测试人员,所以你不能确保你的单元测试是最好的 如果这是错误的,是否有官员说程序员应该自己做单元测试 2,尽管有单元测试,测试部门还做哪些其他测试? 这是一个简单的问题。也许有一些随机测试,一些压力测试,但是有谁能给我一个测试部门通

我知道很多公司都有自己的测试部门,我问这个问题是因为我不能弄清楚一些概念

1,单元测试应该由测试部门/第三方企业完成吗?

根据我自己的感觉,我认为这应该由开发人员自己完成。但有一句谚语说:

您将倾向于以编写代码的方式测试代码。所以我们最好做单元测试。而且你不是一个专业的测试人员,所以你不能确保你的单元测试是最好的

如果这是错误的,是否有官员说程序员应该自己做单元测试

2,尽管有单元测试,测试部门还做哪些其他测试?


这是一个简单的问题。也许有一些随机测试,一些压力测试,但是有谁能给我一个测试部门通常做什么的列表吗?

我觉得程序员应该自己做很多测试,但大部分都归结为功能测试。它是否按预期工作

测试/质量保证人员倾向于做更深层次的测试工作。来自安全背景,他们将确保所有输入都经过验证,并且没有任何东西容易受到SQL注入和CSS等攻击。此外,在不同团队构建不同成品的大型项目中,测试部门将测试成品,以确保在集成过程中不会出现错误,包括负载测试、安装测试和各种场景下的测试,不同的操作系统等。测试部门需要知道在每种情况下会发生什么,以便其他团队可以确定它是否是一个值得修复的错误,并让客户群知道这是一个已知问题或是设计问题


让我们看一下视频游戏。在视频游戏中,通常会有精灵在设计的环境中移动。测试人员将确保精灵在遇到任何墙时停止,并在所有可能的墙上进行测试,以确保没有任何剪辑问题。开发人员通常会对引擎进行编程,制作映射和交互,但除非向他们报告,否则不会关注查找单个剪辑问题。

虽然开发人员应该测试他们自己的工作(他们都这样做,有些人只是使用低效的“运行测试上次更改修复再次运行”方法),在试图找出自己的错误时存在一个心理问题:

  • 如果你知道自己犯了错误,你可能会尽量避免。事后看来,看到一个错误通常是显而易见的,但当它发生时,就不是这样了。所以这就造成了一个“失败者”的局面,当你真的尽力的时候,每个人都认为你很愚蠢

  • 每个开发人员都有自己的错误模式;也就是说,每个人都会一次又一次地犯同样的错误。原因是多方面的,最重要的是盲目或不愿承认自己的缺点

  • 当你赶时间的时候,你就开始抄近路。这不坏,这是人类。问题是你的记忆中已经充满了工作所需的所有细节。现在,压力会降低你的记忆力。这意味着你会忽略重要的细节而不去注意-你的大脑已经处于极限。你不会注意到你错过了他们。你不会记得所有你注意到的信息,因为你的记忆处于恐慌状态->只有真正重要的信息(如在危及生命的情况下)才会被处理

  • 自我监控根本不适用于人类。你总是需要一个外部控制器,否则你会有腐败

  • 因此,让其他人测试您的工作是有意义的:

  • 他们不会使用相同的模式(点击的位置、点击按钮的顺序、你打字的速度等等),这些模式会很快发现你自己找不到的简单错误,因为它们不在你使用计算机的首选方式之内

  • 他们的任务是让你的生活变得悲惨(简而言之)。如果老板物有所值,他将创造一个竞争环境,在这个环境中,开发人员将尽可能少地让bug溜进测试,而测试将尽可能多地找到bug“展示”(其中“他们”是另一个团队)。这确实很有效(人类群体喜欢竞争),但你需要意识到工作中的心理力量。如果处理得不好,就会产生很大的压力(->更多的错误漏掉)、倦怠和相互仇恨。如果老板不善于管理人,那么这将适得其反

  • 他们有不同的假设。他们没有写代码,所以他们不知道应该如何工作。他们会像客户一样看待你的工作,看到开发人员永远不会关心的事情(“看起来很难看”,“反应不够快”)。他们可以发现使产品更容易销售的问题。开发人员通常只关注“工作得足够好”(=当我按正确的顺序单击正确的按钮时不会崩溃)

  • 现在你的问题是:

    单元测试是否应该由测试部门/第三方企业进行

    不可以。单元测试是可以在代码上运行的最小的测试,但它仍然有一定的意义。测试部门不应该运行这些,这是自动化CI服务器的工作。对于计算机来说,这是愚蠢、无聊和重复的工作

    但是让测试部门定义新的单元测试是有意义的。或者,来自测试的错误报告应该转换成新的单元测试

    除了单元测试,测试部门还做哪些其他测试

    一些例子:

    • 他们像客户一样安装实际的应用程序(=测试安装