如何在不上传到Web服务器的情况下测试代码?

时间:2010-11-30 16:44:23

标签: testing web-applications

(这是一个高级软件开发问题)

我正在运行一个网络应用。在过去,为了测试新功能,我已经在一个子目录中上传,例如test /。这通常会破坏所有URL,因此我必须重做测试代码中的URL。然后,当我将其推送到主站点时,我必须重命名所有URL。我确信有更好的方法,但不知道人们通常做什么。

您是否在笔记本电脑上安装了Web服务器?我想,我总是可以买一台便宜的电脑并将其作为测试网络服务器运行。

最终我想要一个版本控制系统和朋友一起编码,所以也许我们都需要在我们的笔记本电脑上安装Apache和MySQL?这样,我们在测试新代码时不会互相干扰。

8 个答案:

答案 0 :(得分:4)

两个答案:

  1. 单元测试!编写不依赖于Web服务器的代码测试。
  2. 是的,您在笔记本电脑上安装了Web服务器。
  3. 根据您的平台,这根本不是什么大问题。如果您正在开发Ruby on Rails应用程序,那么内置Web服务器,其他人可以轻松安装。 Tomcat或Apache的本地副本没问题。对于IIS,我认为你需要运行正确版本的Windows,但我有一段时间没有在那个领域工作过。

    在紧要关头,您可以在虚拟机内运行服务器环境。这样做的好处是可以更轻松地复制实际服务器的精确环境。有时,由于权限问题或环境设置或某些原因,您可能会遇到某种情况,即您自己的计算机上的某些工作正常,但无法在服务器上运行。调试这些可能很痛苦。克隆服务器环境的VM是避免这些的一种方法。

答案 1 :(得分:2)

在文件中设置配置参数,以便您的URL不会中断,只需在测试环境和主要环境之间更改配置文件。在您上线之前,您仍然需要此功能,以防您的环境部分过度,并且您需要快速切换盒子。您应该包括数据库连接字符串,依赖于环境的URL以及在环境之间发生变化的任何其他内容。

单元测试,单元测试,单元测试。如果您需要更高级别的测试,请编写将执行此任务的最低级别测试。使用模拟将与其他组件的交互限制为您要测试的组件。

您仍然希望定期在某种测试环境中进行测试,但是您可以限制执行此操作的频率以及您对这些测试的依赖程度,以便您了解产品的当前质量用上面的技巧。

答案 2 :(得分:0)

  1. 使用类似JUnit的内容来实现java ..
  2. 是的,安装本地tomcat或您在生产环境中运行的任何网络服务器, 使用eclipse IDE,即使调试代码也很简单..仍在谈论java ..

答案 3 :(得分:0)

您应该在工作计算机上本地运行该应用程序的开发版本。根据您的Web框架,这可能很容易或很难。例如,grails具有允许您轻松在本地运行的工具。但无论如何,你一定要这样做。对于服务器,尤其是用于生产的服务器,可能会出现问题。投入时间并妥善安装。

而且,正如其他答案指出的那样,单元测试。

答案 4 :(得分:0)

您和您的朋友可以在您的每台笔记本电脑上安装WAMP / LAMP堆栈。如果您需要版本控制系统,则可以使用SVN或Git。

构建文件夹,以便复制生产服务器的目录结构。这样,您就不必在部署时间到来时重写URL。虚拟主机将为您提供很多帮助。

答案 5 :(得分:0)

我在本地测试,运行本地We服务器和/或App Server对我来说似乎很正常。

您可能还有“登台”服务器,可以向更大的社区开放。

小心谨慎,您也可以使链接相对,这样您就可以在同一台服务器上并行运行旧版本和新版本,并使用不同的Context Roots进行部署。对于大型系统,这往往非常有用:您可以将不同的用户社区切换到新系统,逐步推出。

我同意没有服务器的单元测试也很重要,但是在你让用户使用新版本之前的某个时候,你确实需要在服务器上运行。

答案 6 :(得分:0)

任何特定语言或技术,或仅仅是一般?

我现在的工作主要是Java和Python中的Web应用程序

  • 对于Java代码,我检查了整个公司源代码树并在我的本地机器上构建,当我想测试时,我在本地运行jetty webserver来测试部署。

    < / LI>
  • 我们所有的代码都有针对它们编写的单元测试,并且有几乎所有常用语言的单元测试包。

  • 对于Python,我的工作主要在django,所以我使用附带的测试服务器。

  • 我运行lighttpd的本地实例来测试Web内容。重量轻,易于配置。

  • 如果您想测试实际用户界面以查看事情是否符合您的预期,或者为了确保您不会破坏它们,您可以在本地设置Selenium,或Mechanize

  • 对于整个公司而言,我们有两个环境 - 质量保证沙箱和生产环境。 QA沙箱是开发人员首先部署他们的应用程序的服务器,然后他们进行测试以确保在部署到生产之前一切都按预期工作。

  • 作为版本控制,我们使用subversion,但大多数开发人员使用git-svn或hg-svn能够在将更改推回到中央subversion服务器之前对其本地计算机进行版本控制

答案 7 :(得分:0)

我更喜欢使用虚拟实例。如果您将基础架构标准化,那么只需将服务器的“生产”实例复制到本地计算机即可。这摆脱了大多数“嗯......它在我的机器上工作”的问题。