Adicionando novas definições de browser ao Visual Studio Web Performance And Load Test

SNAGHTML547a82b

Se você já usou as ferramentas de Teste Web do Visual Studio Ultimate (Web Performance Test e Load Test), provavelmente já deve ter visto uma caixa de diálogo similar a esta logo acima. Com ela, é possível indicar qual navegador será simulado durante seus testes. Isso é particularmente útil para aplicações Web que tenham renderização condicional – ou seja, que geram HTML específico para um dado browser. Simular vários browsers permite, portanto, exercitar esses vários mecanismos de geração condicional.

O problema

Recentemente, num cliente da Lambda3, tivemos uma demanda específica: rodar um teste de carga que simulasse os seguintes clientes:

  • Internet Explorer 8 no Windows XP;
  • Internet Explorer 9 no Windows 7;
  • Chrome 27 no Linux (Ubuntu); e
  • Chrome 31 no Windows 7.

Olhando para a caixa de diálogo acima, fica óbvio que tínhamos um problema. Mais especificamente com o Chrome. Não havia, entre as opções disponíveis, as versões de Chrome que o cliente precisava.

A solução

Felizmente, resolver isso é bem fácil. Essa lista de browsers é um sub-diretório na pasta de instalação do Visual Studio. Abra o diretório C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Templates\LoadTest\Browsers (“C:\Program Files” num Windows de 32 bits) e você vai encontrar vários arquivos com a extensão .browser, um para cada definição de browser:

Diretório com as definições de browsers

Esses arquivos são meros arquivos XML com a descrição dos browsers. Como era de se esperar, a definição mais importante para nosso caso é a string de user-agent (o cabeçalho HTTP que identifica qual browser está acessando o servidor). Veja, por exemplo, o conteúdo do arquivo Chrome2.browser:

<Browser Name="Chrome 2" MaxConnections="6">
  <Headers>    
    <Header Name="User-Agent" Value="Mozilla/5.0 (Windows; U; Windows NT 5.1;) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.169.1 Safari/530.1"/>
    <Header Name="Accept" Value="*/*" />
    <Header Name="Accept-Language" Value="{{$IEAcceptLanguage}}" />
    <Header Name="Accept-Encoding" Value="gzip,deflate" />
    <Header Name="Accept-Charset" Value="ISO-8859-1,*,utf-8" />
  </Headers>
</Browser>

DICA: Para descobrir qual a string de user-agent eu devia usar para as duas versões de Chrome, consultei a lista presente no site UserAgentStrings.com.

Agora, o resto foi fácil. Criei duas cópias do arquivo Chrome2.browser (que usei como referência) e salvei-as, respectivamente, como Chrome27-Linux.browser e Chrome31.browser.

Chrome 27 no Linux (Ubuntu)

<Browser Name="Chrome 27 (Ubuntu 13.10)" MaxConnections="6">
  <Headers>
    <Header Name="User-Agent" Value="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu/13.10 Chromium/27.0.1453.93 Chrome/27.0.1453.93 Safari/537.36"/>
    <Header Name="Accept" Value="*/*" />
    <Header Name="Accept-Language" Value="{{$IEAcceptLanguage}}" />
    <Header Name="Accept-Encoding" Value="gzip,deflate" />
    <Header Name="Accept-Charset" Value="ISO-8859-1,*,utf-8" />
  </Headers>
</Browser>

Chrome 31 no Windows 7

<Browser Name="Chrome 31 (Windows 7)" MaxConnections="6">
  <Headers>    
    <Header Name="User-Agent" Value="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36"/>
    <Header Name="Accept" Value="*/*" />
    <Header Name="Accept-Language" Value="{{$IEAcceptLanguage}}" />
    <Header Name="Accept-Encoding" Value="gzip,deflate" />
    <Header Name="Accept-Charset" Value="ISO-8859-1,*,utf-8" />
  </Headers>
</Browser>

Se o Visual Studio estiver aberto, não esqueça de reiniciá-lo. Agora, temos duas novas opções de navegadores para uso no Web Performance Test e no Load Test:

Caixa de diãlogo de seleção de browsers com as novas opções

Um abraço,
    Igor

 

Igor Abade

 

3 thoughts on “Adicionando novas definições de browser ao Visual Studio Web Performance And Load Test

  1. Igor, Quando tento rodar meu WebTest em uma página e o mesmo não consegue carregar a página e me retorna a mensagem “A execução de um complemento para este site falhou. Verifique conflitos potenciais nas configurações de segurança das Opções de internet. É uma página que deveria apresentar o resultado de um javascript.

    Desde já muito obrigado pela ajuda.

    Att,

    1. Ramilo, o WebTest faz apenas o download da sua página, sem executar qualquer tipo de JavaScript ou plugin. Por isso, ele é usado apenas para testar comportamento server-side, não client-side. Páginas que dependam de código JavaScript para gerar código HTML não irão funcionar. Nesse caso, a alternativa seria algo como CodedUI ou Selenium.

Deixe seu comentário!

%d blogueiros gostam disto: