Language agnostic 这样的网站开发设置/实践适合工作场所吗?

Language agnostic 这样的网站开发设置/实践适合工作场所吗?,language-agnostic,Language Agnostic,我在网络开发公司工作(现在已经半年了),这是我的第一个工作场所。但我们在那里做的一件事让我很烦。所以我想从更有经验的人那里得到意见。我不确定这是否是最好的提问地点,但我希望这个问题的答案对其他人来说可能也是有用和有趣的 我对这项工作最主要也是最可能唯一的不满来自这样一个事实:我们承诺使用live系统(我们有一个在php和mysql上运行的web门户),也就是说,我提交代码,并且更改可以立即在线看到。对于小的或快速检测到的错误来说,这没有什么大不了的。但这是一个大问题,当一些可怕的错误潜入,即链接

我在网络开发公司工作(现在已经半年了),这是我的第一个工作场所。但我们在那里做的一件事让我很烦。所以我想从更有经验的人那里得到意见。我不确定这是否是最好的提问地点,但我希望这个问题的答案对其他人来说可能也是有用和有趣的

我对这项工作最主要也是最可能唯一的不满来自这样一个事实:我们承诺使用live系统(我们有一个在php和mysql上运行的web门户),也就是说,我提交代码,并且更改可以立即在线看到。对于小的或快速检测到的错误来说,这没有什么大不了的。但这是一个大问题,当一些可怕的错误潜入,即链接是错误地生成在某些地方,你可以达到一些网页与两个不同的url(点击网页排名…),很容易错过这样的东西有几天。(或者是吗?也许我只是不够小心?)但我确实尝试在提交之前检查所有内容,并且我们还使用phpunit和selenium(测试是由编写代码的同一个人在编写代码之后编写的)进行测试(尽管测试覆盖率可能会更高)


所以我的问题是:在进行web开发时,直接向在线系统提交内容是否常见?这根本不是一个很好的做法。在我的大部分工作中,我所做的是有一个测试站点,它是一个实时代码的副本,首先在那里提交代码,然后在那里进行测试。如果测试站点上没有问题,那么可以将代码推送到活动站点。直接提交到活动站点可能会导致错误,而提交到测试站点可能会捕获这些错误

不幸的是,这是许多新媒体机构和初创公司的普遍做法(我经常看到这一点,这让我大吃一惊),但这根本不是最佳做法


最好的做法是,拥有一个开发服务器、一个可生产的/实时的站点。

对于大多数面向客户的web应用程序来说,这不是一个好主意。如果公司不想将测试资源分配给低可视性的内容,则通常直接提交/发布到生产环境,但该网站很少使用或仅为内部网站。

绝对不会

最常见的情况是至少有3/4个环境:

  • 开发环境:每个开发人员提交自己的修改,并在自己的个人环境中运行测试

  • 集成环境:应用程序的每个组件都合并在一起,让每个人都能看到是否一切正常。尽管如此,还是要小心

  • Beta测试环境:在集成阶段,当所有内容都已修复并检查完毕后,您将进入Beta测试阶段。如果没有专门的团队,通常由开发人员完成(每个开发人员测试其他人的功能性,以避免明显的主观问题)

  • 生产环境:客户使用的产品


这是我从我短暂的经历(5个月的实习)中学到的,希望对我有所帮助

乍一看,这似乎是一种不好的做法

但请考虑以下几点。如果一家公司很小,并且没有测试团队或者至少没有足够多的开发人员,他们可能会被分配到其他开发人员提交的代码的额外测试中,那么拥有一个测试沙箱将导致开发人员在他的机器上测试代码,然后提交,在沙箱中执行相同的测试(如果测试是手动的,那么第二次肯定不那么彻底,想象一下连续两次执行相同的手动测试任务),然后将更改转移到生产环境中。 如果开发人员没有在本地机器上找到bug,那么在沙箱中找到bug的机会有多大

此外,沙盒和生产环境之间总是存在差异。因此,如果代码在沙盒中工作,则不能保证它在生产环境中工作

最后考虑维护测试环境的成本。小团队快速增长的项目根本不能有这样的。

因此,如果团队规模很小,那么投入生产并进行大量本地测试是首选方法。否则,将代码从一个地方复制到另一个地方并由同一个人进行相同的测试将非常令人沮丧、耗时且无用

如果有测试资源,当然应该考虑有一个附加的测试环境。