Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 除了在开发过程中进行测试外,在临时服务器上进行测试还有什么好处?_Javascript_Git_Unit Testing_Testing - Fatal编程技术网

Javascript 除了在开发过程中进行测试外,在临时服务器上进行测试还有什么好处?

Javascript 除了在开发过程中进行测试外,在临时服务器上进行测试还有什么好处?,javascript,git,unit-testing,testing,Javascript,Git,Unit Testing,Testing,如果我在开发期间和将更改推送到git repo之前已经在本地对javascript进行单元测试,那么在将更改推送到live server之前,是否有任何令人信服的理由在登台服务器上进行单元测试 这似乎是多余的。仅仅进行单元测试可能没有任何好处(但如果它们是自动化的,那么也就没有实际成本,而且它们可能会捕获一些东西,例如不一致/不完整的部署) 此外,保证登台服务器不包含开发机器可能具有的任何“脏”代码(忘记提交的代码、一些“不相关”的文件等) 但是,您可能希望在登台服务器上执行其他类型的(更集成的

如果我在开发期间和将更改推送到git repo之前已经在本地对javascript进行单元测试,那么在将更改推送到live server之前,是否有任何令人信服的理由在登台服务器上进行单元测试


这似乎是多余的。

仅仅进行单元测试可能没有任何好处(但如果它们是自动化的,那么也就没有实际成本,而且它们可能会捕获一些东西,例如不一致/不完整的部署)

此外,保证登台服务器不包含开发机器可能具有的任何“脏”代码(忘记提交的代码、一些“不相关”的文件等)


但是,您可能希望在登台服务器上执行其他类型的(更集成的)测试。

如果有多个测试人员查看您的代码,登台服务器将非常有用。推动一个分支会让测试人员很好地了解他们在看什么。这允许每个测试人员确保代码按预期运行,并在它到达大众之前对其进行一次浏览

有时,测试代码的最佳方法是允许一群人尝试破解代码。这些人就是站在你这边的人


正如@Jeff Ward所说,它不会总是镜像你的机器。我一直明白,你测试的越多,出错的可能性就越小。

答案取决于你的测试是如何组合的

如果它们是纯粹的单元测试(即,每个测试都执行一个独立的代码单元,并模拟所有依赖项),那么这样做没有什么好处,因为每个测试的执行环境在本地开发机器和登台服务器上都应该是相同的

通过适当的单元测试,我能想到的唯一情况是,在登台服务器上发现开发机器上没有发现的问题是,不同的操作系统或Javascript解释器会导致行为上的差异(但是,这些类型的问题应该非常少)。如果您确实发现了单元测试在这两个环境中表现不同的其他原因(例如,正如@Thilo所提到的,因为您的开发机器上有脏代码,或者因为您依赖于开发机器上的库,但不依赖于暂存服务器)然后,这表明您的软件开发过程存在一些问题,您需要解决这些问题,以确保您正在设置软件可靠运行的环境

但是,如果单元测试指的是更高级别的自动化测试(例如,通过浏览器运行的系统测试)——这是一些人(错误地)将所有自动化测试称为单元测试而没有做到的区别——那么在登台服务器上运行这些测试可能会有一些好处。开发和生产设置通常会对web服务器和数据库服务器使用不同的技术和/或配置,这可能会导致行为上的差异,只有在登台服务器上进行测试才能发现这些差异


最后一点需要注意的是,您应该确保在将更改推向生产之前进行某种形式的高级测试,因为单靠单元测试并不能解决所有问题。理想情况下,这将是一套完整的自动化系统级验收测试,用于测试软件的所有功能,并在与生产相匹配的环境中运行整个软件堆栈。但是,在您的更改生效之前,至少应该有人在登台服务器上手动执行一组跨您的关键功能的测试。

在登台服务器上运行所有单元测试和集成测试是确保上次签入不会干扰代码的好方法。当然,程序员不应该提交未经正确测试的代码。然而,我们有时都会忘记我们编写的代码可能会影响其他代码,从而忘记运行所有测试

您所指的其他测试是什么?例如,让其他人看看现在一切是如何工作的(使用接近真实的应用程序数据)。使用“真实”数据库(具有接近真实的应用程序数据)进行集成测试。用户验收测试。嗯,一句话,是的。即使您的代码库/环境不是很复杂,您也可能不会100%镜像实时环境。也是经典程序员短语“在我的机器上工作”的来源。