【问题标题】:Visual Studio Performance Test file upload parameter prefixes dateVisual Studio 性能测试文件上传参数前缀日期
【发布时间】:2016-07-07 20:32:20
【问题描述】:

我有一个问题,希望有一个我忽略的简单解决方案...这是我第一次将文件上传参数与 Visual Studio 性能测试工具一起使用。当我第一次运行 Web 性能测试时,我的测试找到了该文件并按预期上传了它。但是,当我现在重新运行测试时,我在结果的“详细信息”部分中收到 500 Internal Server 错误,并且我注意到我的文件名包含似乎是请求中正确名称前缀的时间戳。由于我的文件名没有改变,这会导致 Visual Studio 无法找到我的文档。

我为此测试生成了代码,因为我需要手动重置 SSL 设置。我的文档被移到了 Test Results 文件夹,因为我用它作为 DeploymentItem 装饰了该方法。当我生成代码时,Visual Studio 会自动执行此操作,这非常好,但可能是问题所在......任何帮助将不胜感激!这是我正在发出的 POST 请求:

WebTestRequest request11 = new WebTestRequest((this.Context["Environment"].ToString() + "/Submit/Upload"));
request11.Method = "POST";
request11.Headers.Add(new WebTestRequestHeader("Referer", (this.Context["Environment"].ToString() + "/Submit/Index/fakefolder456")));
FormPostHttpBody request11Body = new FormPostHttpBody();
request11Body.FormPostParameters.Add(new FileUploadParameter("files", "Test3.pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation", true));
request11Body.FormPostParameters.Add("folderId", "fakeId123");
request11Body.FormPostParameters.Add("fileNamePairs", "[{\"OriginalFileName\" : \"Test3.pptx\",\"NewFileName\" : \"Test3.pptx\"}]");
request11Body.FormPostParameters.Add("__RequestVerificationToken", this.Context["$HIDDEN1.__RequestVerificationToken"].ToString());
request11.Body = request11Body;
yield return request11;
request11 = null;

【问题讨论】:

  • 哪个文件名?显示的代码中有 3 个Test3.pptx。还有OriginalFileNameNewFileName。测试运行时的请求和响应是什么?
  • 我只是出于调试/诊断的原因将 Web 测试转换为代码。我需要的其他一切都通过插件更好地完成了。转换为代码使测试的其余部分更难管理和修改。如果您确实需要通过转换为 C# 代码来完成整个请求,那么我建议使用 Web 测试的上下文(右键单击)菜单命令 Extract web test 然后转换该请求。
  • 你知道我是否可以使用插件设置请求 SecurityProtocolType 吗?我以前从未使用过插件,但会研究...我必须添加这行代码才能使我的性能测试正常工作,这指示我请求使用 TLS 1.2 进行 SSL 加密:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
  • 插件,恕我直言,总体上比转换为编码测试要容易得多。我想不出为什么ServicePointManager... = ... 代码不能在插件中使用。
  • 谢谢阿德里安HHH!我自学了如何使用这些插件,而且效果很好。你是对的 - 这是一个比生成代码更好的设计

标签: visual-studio-2015 performance-testing


【解决方案1】:

想出了我的问题的解决方案——我的文件上传参数将“生成唯一名称”设置为“真”。 Visual Studio 使文件名唯一的方法是获取今天的日期和时间并将其添加到给定文件名的前面。此外,您需要确保要上传的文件正在传输到您的输出文件夹。为此,我双击我的 testsettings 文件,选中“启用部署”框,然后将我的文件添加到要部署的文件中。我相信这将为每个测试部署文件......最好只为我的测试部署文件。这些链接对我的研究有所帮助:https://blogs.msdn.microsoft.com/edglas/2008/08/05/how-to-upload-a-file-in-a-web-test/,

https://blogs.msdn.microsoft.com/alikl/2010/04/26/file-upload-in-a-web-test-the-case-of-submitting-a-form-with-javascript/,

https://social.msdn.microsoft.com/Forums/en-US/3d094493-9b9b-4c78-bb98-f80068a643fc/is-it-possible-to-add-deployment-item-to-the-webtest-using-code?forum=vstswebtest.

对于那些阅读 AdrianHHH 在 cmets 中的出色帮助的人,我学习了如何使用 Ben Day 的 Pluralsight 课程“使用 Visual Studio 进行负载测试”https://app.pluralsight.com/library/courses/load-testing-visual-studio-2013/table-of-contents 编写 Web 测试插件,我的插件如下所示:

namespace WebTestPlugins
{
    public class SsoAuth : WebTestPlugin
    {
        public override void PreWebTest(object sender, PreWebTestEventArgs e)
            {
            // Set the security protocol to TLS 1.2
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2023-03-22
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多