【问题标题】:Web test fails with "404 Not Found" errors when it is runWeb 测试在运行时失败并出现“404 Not Found”错误
【发布时间】:2015-08-11 06:10:45
【问题描述】:

我们正在对使用 Visual Studio 2013 Ultimate 以 Angular Java 开发的 Web 应用程序进行性能和负载测试。

我们的方法:

  1. 记录网络测试

  2. 回放网络测试

  3. 进行关联和参数化等

我们现在面临的问题是

  1. 当我们记录登录场景时,例如在 Web 测试中输入用户名和密码,我们无法找到表单参数。

  2. 在运行 webtest 时,我们收到一些文件的 HTTP 状态 404 错误,它们是:

    • glyphicons-halflings-regular.eot

    • fonts/glyphicons-halflings-regular.woff

    • glyphicons-halflings-regular.ttf

我们已尝试通过以下步骤解决上述错误

  1. 我们检查了每个请求的 Parse Dependents 请求,并对依赖项和相应请求进行了解析,反之亦然。

但是上述文件的 HTTP 状态 404 错误 没有得到解决。当我们回放我们的网络测试时,它显示同样的错误。

那么任何人都可以帮助我们如何在运行 webtest 时解决此错误。

【问题讨论】:

  • 这个问题中的“bootstrap”是什么意思?
  • 您提出了一个很好的问题,但我认为可以改进实际问题以使其更笼统。因此我想知道你为什么写“bootstrap”。
  • @Andrian,您当然可以编辑问题。我使用了 boostrap ,因为开发团队向我更新了他们对请求使用引导程序,所以我在问题中添加了相同的内容。如果这不合适,我会请求建议我,以便我可以做出相应的更改。

标签: angularjs visual-studio-2013 performance-testing load-testing


【解决方案1】:

一种选择是在发出相关请求之前丢弃它们。您可以创建插件来删除这些依赖请求。下面是一个用于查找和删除请求的基本插件。这可以很容易地扩展到进行其他比较,例如r.Url.Contains(...) 等。

public class WebTestDependentFilter : WebTestPlugin
{
    public string EndsWithString { get; set; }

    public override void PostRequest(object sender, PostRequestEventArgs e)
    {
        WebTestRequestCollection depsToRemove = new WebTestRequestCollection();

        // Note, you can't modify the collection inside a foreach,
        // hence the above collects requests to remove.

        foreach (WebTestRequest r in e.Request.DependentRequests)
        {
            if ( r.Url.EndsWith(EndsWithString))
            {
                depsToRemove.Add(r);
                e.WebTest.AddCommentToResult(string.Format(
                   "Dependant request ending with \"{0}\" removed : {1}",
                   EndsWithString, r.Url));
            }
        }

        foreach (WebTestRequest r in depsToRemove)
        {
            e.Request.DependentRequests.Remove(r);
        }
    }
}

此插件基于Visual Studio Performance Testing Quick Reference Guide (Version 3.6) 第 189 页上描述的代码。

另一种可能性是向这些文件的 Web 测试添加显式依赖请求,并将 Expected HTTP Status Code 属性设置为 404

插件方法比较快捷简单。它的缺点是它减少了服务器和网络上的负载,因为请求没有被发送。第二种方法保留了请求,因此可能被认为是更现实的性能测试。

无论您采取哪种方式,您都可以将问题文件报告给您的客户,因为它们似乎表明网站存在故障。

【讨论】:

  • @Andrian,我遵循第二个它的工作正常,但正如你所说,这是一个不切实际的测试。所以无法进一步进行。您能否提供一些其他解决方法。
  • @PrabhakarY 抱歉,答案原件中的错字。将预期响应代码设置为 404 提供了比通过插件丢弃响应更现实的测试。但是,在网站中查找错误允许您将它们报告给开发人员,他们可以通过删除请求来提高性能或通过添加丢失的文件来更正网站。
  • @Andrian,谢谢。我会再试一次,并在我的 webtest 记录器崩溃时让你更新。我会尽快更新你..
  • @Andrian,非常感谢。第二种方法适用于我的情况,现在问题已解决
【解决方案2】:

使用以下内容将其添加到您的 web.xml 文件中:

<mime-mapping> 
    <extension>woff</extension>
    <mime-type>application/x-font-woff</mime-type> 
</mime-mapping>
<mime-mapping> 
    <extension>eof</extension>
    <mime-type>application/vnd.ms-fontobject</mime-type> 
</mime-mapping>
<mime-mapping> 
    <extension>ttf</extension>
    <mime-type>application/x-font-ttf</mime-type> 
</mime-mapping>

【讨论】:

  • ,谢谢。一定会添加并尝试@Wayne
  • 我们使用的是Tomcat 7服务器,我们从web.xml文件中删除了上述代码,尝试仍然显示相同的错误。请指导我们如何解决
  • 抱歉,我假设您使用的是 asp.net,因为您使用 VS 进行 Web 测试。我已经更新了我对 Tomcat 的回答
  • 没有问题。即使我也没有提到服务器细节。现在服务器是 Tomcat 7 并且应用程序是基于 angular js 构建的。您能否就所面临的问题给我一些解决方法。我已尝试使用 Andrian 第二种方法所述的以下解决方案,它运行良好,但不是正确的方法。非常感谢您的意见。
  • 对不起。我不确定还能尝试什么。您能否尝试在 Chrome 中加载该应用并检查网络标签并发布错误。
猜你喜欢
  • 2017-11-25
  • 2021-01-12
  • 2014-06-18
  • 1970-01-01
  • 2017-10-19
  • 2020-09-26
  • 2021-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多