WebInject usa uma API XML (interface) para a definição e carregamento de casos de teste. Você pode usar WebInject sem nunca ver a sua implementação interna.
Também pode ser implementado como um plugin do nagios.
1 - Pré-requisitos de instalação
Webinject é escrito em Perl, que tem, no entanto necessitam de módulos adicionais perl que não são instalados por padrão.
Em seguida, vamos baixar o script webinject:
~# cd /tmp
~# wget http://downloads.sourceforge.net/webinject/webinject-1.41.src.tar.gz
~# tar xzvf webinject-1.41.src.tar.gz
~# cd webinject
Obs:
Para rodarmos o script ./webinject.pl, precisaremos criar dois arquivos adicionais:
- Um com os parametros de configuração e;
- Outro com os cases de teste.
Os scripts em xml, podem ter qualquer nome, após criá-los, deverão ser chamados como parâmetros do arquivo ./webinject.pl para podermos rodar os testes nas aplicações web.
2 - Configurar o arquivo config.xml
O arquivo "config.xml" é usado para a configuração de seu projeto.
Neste arquivo nós especificamos o caso de teste arquivo. Todos os parâmetros devem estar em suas próprias marcas.
As seguintes opções de configuração:
proxy
Se você precisa especificar um endereço de proxy http
<proxy>http://127.0.0.1:8080</proxy>
Você pode adicionar as configurações de autenticação
<proxy>http://username:password@127.0.0.1:8080</proxy>
useragent
Esta opção permite que você especifique o User-agent. Por padrão, esse parâmetro é "Webinject". Isso ajuda a identificar as consultas no servidor web.
<useragent>Minitux User Agent</useragent>
httpauth
Isso permite que as configurações de autenticação como especificação em uma autenticação http básica. Esta configuração leva cinco parâmetros: servername: port: nomréel: usuário: senha.
useragent
Esta opção permite que você especifique o User-agent. Por padrão, esse parâmetro é "Webinject". Isso ajuda a identificar as consultas no servidor web.
<useragent>Minitux User Agent</useragent>
httpauth
Isso permite que as configurações de autenticação como especificação em uma autenticação http básica. Esta configuração leva cinco parâmetros: servername: port: nomréel: usuário: senha.
<httpauth>www.fakedomain.com:80:my_realm:foo:welcome</httpauth>
baseurl
Criar a constante {} BaseURL que podem ser usados no arquivo cenário.
<baseurl>http://myserver</baseurl>
baseurl1
Criar a constante {} BASEURL1 como "baseurl".
baseurl2
Criar contanste BASEURL2 {} como "baseurl".
globalhttplog
Ativa logs pedidos HTTP / respostas para todos os testes. Eles serão gravados no arquivo http.log
<globalhttplog>yes</globalhttplog>
Ou apenas em caso de erro
<globalhttplog>onfail</globalhttplog>
Esta opção é desabilitada quando rodando em modo de webinjecct plugin.
how
Permite-lhe colocar comentários no arquivo de configuração
<comment>Comentário</comment>
tempo limite
Especifica o tempo de resposta em segundos para cada teste. Se a resposta for maior do que o teste parâmetro será considerado fracassado.
A configuração padrão é 180 segundos.
<timeout>10</timeout>
Essa configuração não funciona em SSL / HTTPS
ReportType
Este parâmetro é usado para ativar a produção e torná-lo compatível com um programa.
nagios - Compatível como um plugin nagios.
<reporttype>nagios</reporttype>
mrtg - Compatível com MRTG Plugin
<reporttype>mrtg</reporttype>
externo - Chamar um módulo perl externo. Você pode escrever um programa que vai ser chamado depois de ter terminado webinject tiro.
Este programa terá acesso a webinject variável global.
<reporttype>standard:Plugin.pm</reporttype>
Plugin.pm exemplo - Enviar resultados por e-mail.
$message = "Passed: $casepassedcount, Failed: $casefailedcount";
exec(qq );
Standard - Padrão de saída é o modo padrão.
<reporttype>standard</reporttype>
globaltimeout
Este parâmetro é usado quando o modo é habilitado nagios. O valor será comparado com o tempo total que levou para realizar o teste.
<globaltimeout>10</globaltimeout>
gnuplot
Define onde executável gnuplot está localizado em seu sistema. Isso só é necessário se você quiser webinject usa gnuplot para criar gráficos de tempo de resposta.
<gnuplot>/usr/bin/gnuplot</gnuplot>
standaloneplot
Vamos dizer que webinject para criar gráficos de tempo de resposta quando rodando em modo console (webinject.pl), caso contrário, é o modo apenas possível no modo GUI. Um PNG é gerado na pasta atual.
<standaloneplot>on</standaloneplot>
3 - Webinject no modo console
Webinject é destinado ao uso no console e pode receber parâmetros:
As opções:
-C ou - config: Especifique um arquivo de configuração alternativo. Padrão é webinject config.xml.
Para especificar um arquivo de configuração em um diretório diferente você deve usar um caminho relativo para o arquivo executável webinject.
-O ou - saída: Especifica o local para gravar a saída.
-N ou - sem-saída: Apaga todo o caminho.
-V ou - version Mostra a versão.
Você também pode especificar o arquivo de cenário:
~#perl webinject.pl mytests.xml
Se não houver um arquivo especificado na linha de comando, webinject olhar no config.xml para encontrar a frase "testcasefile". Se não for especificado ele irá procurar o arquivo chamado "testcase.xml" diretório DNAS webinject.
XPath / XNode
Quando você coloca um cenário de arquivo webinject linha de comando, você pode adicionar o número do teste.
Por exemplo, para executar apenas o número do teste 2:
4 - Configurando o Cenário
Os cenários são escritos em XML, existem muitos parâmetros que serão úteis em casos diferentes. Os dois únicos parâmetros essenciais são 'id' e 'url' e apenas o código de retorno http será estudado.
<case
id="1"
url="http://myserver/test/test.html"
/>
Os vários parâmetros possíveis
id
O identificador do teste e para especificar a ordem.
description1
Descrição, úteis para relatórios
description2
Descrição, úteis para relatórios.
method
HTTP método de solicitação, pegue post. O padrão é obter.
url
URL completa para o teste. É possível utilizar um endereço IP ou nome de domínio.
posttype
Este parâmetro especifica a codificação usada para enviar um formulário para o servidor. Ele é usado apenas durante um POST.
Os diferentes valores são:
"application/x-www-form-urlencoded"
"multipart/form-data"
"text/xml"
"application/soap+xml"
Padrão "application / x-www-form-urlencoded".
postbody
Estes são dados que serão enviados no pedido para o servidor. Ele é usado em um post HTTP.
Se você enviar dados "application / x-www-form-urlencoded", este parâmetro irá conter a seqüência que você deseja enviar.
Se você enviar dados "multipart / form-data", este parâmetro contém uma string que representa o código Perl utilizado para definir o "Conteúdo" âramètre do "POST". A string será avaliada por 'eval' o intérprete perl.
Mais informações na documentação do Perl HTTP:: Request:: Common.
Se você enviar "text / xml" ou "application / soap + xml", este parâmetro contém o arquivo que contém o xml que será enviado o pedido.
exemple: postbody="file=>soap_payload.xml"
verifyresponsecode
Verificação de código de resposta http. 2chec se o código é diferente.
verifypositive
Verificar uma string na resposta. Ele pode trabalhar com expressões regulares.
verifypositive1
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifypositive2
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifypositive3
Verificação adicional. Funciona da mesma maneira que "verifypositive".
verifynegative
Verificação reverter uma string na resposta. Também trabalha com expressões regulares.
verifynegative1
Oposto verificação adicional. Funciona como "verifynegative '.
verifynegative2
Oposto verificação adicional. Funciona como "verifynegative '.
verifynegative3
Oposto verificação adicional. Funciona como "verifynegative '.
__verifynextpositive -
Verificando a seqüência na seguinte teste.
verifynextnegative
Verificação reverter uma string no seguinte teste.
logrequest
Registros escritos http.log no pedido http para o teste atual. Os logs são desativadas se o parâmetro não é sim.
logresponse
Registros escritos http.log na resposta HTTP para o teste atual. Os logs são desativadas se o parâmetro não é sim.
parseresponse
Analisar uma seqüência na resposta HTTP para uso posterior. O mais comum é o ID da sessão.
parseresponse1
Parâmetro adicional para analisar a resposta.
parseresponse2
Parâmetro adicional para analisar a resposta.
parseresponse3
Parâmetro adicional para analisar a resposta.
parseresponse4
Parâmetro adicional para analisar a resposta.
parseresponse5
Parâmetro adicional para analisar a resposta.
sleep
Número de segundos para fazer uma pausa após o teste. Isto é útil para adicionar espaços entre as diferentes consultas.
errormessage
Se o teste falhar, você pode especificar uma mensagem de erro personalizada. Isto pode ser útil para entender por que o teste falhou.
AddHeader
Usado para adicionar um cabeçalho adicional na solicitação HTTP.
exemple: addheader="SOAPAction: urn:example-org:demos#Method"
Você pode adicionar vários cabeçalhos separados por um tubo.
5 - Exemplos
id="1"
description1="short description"
description2="long description"
method="post"
url="http://myserver/test/login.jsp"
postbody="username=corey&password=welcome"
verifypositive="verify this string exists"
verifynegative="verify this string does not exist"
logrequest="yes"
logresponse="yes"
sleep="3"
/>
<case
id="2"
description1="short description"
description2="long description"
method="get"
url="http://myserver/test/send.jsp?value={TIMESTAMP}"
verifypositive="verify this string exists"
verifynextpositive="{TIMESTAMP}"
/>
Aqui está outro exemplo de arquivo codificado upload "multipart / form-data"
id="1"
description1="sample test case - POST"
description2="verify file upload"
method="post"
url="http://cgi-lib.berkeley.edu/ex/fup.cgi"
postbody="( upfile => ['config.xml'], note => 'MYCOMMENT' )"
posttype="multipart/form-data"
logrequest="yes"
logresponse="yes"
verifypositive="MYCOMMENT"
/>
O caso de teste várias são numerados com o "id" parâmetro. Eles serão executados na ordem de ID de um após o outro.
Por exemplo:
<testcases>
....
</testcases>
Você também pode adicionar o atributo "repeat" para repetir um determinado número de vezes que o teste.
<testcases repeat="5">
6 - Variáveis e Constantes
Algumas constantes e variáveis podem ser passadas para o seu teste webinject.
{TIMESTAMP}: O timestamp atual
{} PARSEDRESULT: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
{} PARSEDRESULT1: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
{} PARSEDRESULT2: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
{} PARSEDRESULT3: O resultado da resposta analisada a partir de 'parseresponse' parâmetro do teste.
BaseURL {}: Valor do "baseurl" especificado no arquivo de configuração
BASEURL1 {}: Valor do 'baseurl1' especificado no arquivo de configuração
BASEURL2 {}: Valor do 'baseurl2' especificado no arquivo de configuração
exemplo:
Se você tem um teste que usa o parâmetro:
url="http://myserver/test/login.jsp"
Você pode criar uma linha no arquivo config.xml:
<baseurl>http://myserver</baseurl>
Podemos então reescrever o parâmetro do teste:
url="{BASEURL}/test/login.jsp"
Aqui está outro exemplo:
<testcases repeat="1">
<testvar varname="LOGIN_URL">http://myserver/login.php</testvar>
<testvar varname="LOGIN1">bob</testvar>
<testvar varname="PASSWD1">sponge</testvar>
<testvar varname="SUCCESSFULL_TEST_TEXT">Welcome Bob</testvar>
<case
id="1"
description1="login test case"
description2="verify string login"
method="post"
url="${LOGIN_URL}"
postbody="login=${LOGIN1}&passwd=${PASSWD1}"
verifypositive="${SUCCESSFULL_TEST_TEXT}"
/>
</testcases>
7 - Link
O documento original Webinject
Nenhum comentário:
Postar um comentário