Jmeter exemplo de wordpress
WordPress está usando uma linguagem PHP plataforma de desenvolvimento blog, os usuários podem criar seu próprio Web site no servidor que suporte PHP e MySQL de banco de dados. Também pode WordPress como um sistema de gerenciamento de conteúdo (CMS) para uso, instalação Wordress .
Primeiro, o login do usuário, login multiusuário
1, detalhes da etapa
Único login de usuário: 1. Abra o caminho de instalação jmeter arquivo bin / user.properties com um editor de texto, adicione uma linha no máximo CookieManager.check.cookies final do arquivo = false (o jmeter o cookie mecanismo de verificação para desligar, isso é porque o jmeter não-conforme quando um cookie é set login wordpress, as devoluções JMeter o cookie quando logado, levando aos resultados registrados não pode logar-se durante a reprodução) 2, abra o <a href = "http: //www.cnblogs . com / Keep-Ambition / p / 8381441.html "target =" _ blank "> jmeter função de gravação </a>, navegador e digite your_ip_port / wp-login.php operação de desembarque 3, excluir nós roteiro redundantes gravados, GET pedido /wordpress/wp-login.php foi rebatizado como o formulário de login, o pedido POST /wordpress/wp-login.php renomeado o formulário de login na Submeter 4, clique para executar o login multi-usuário: 1, com base no script acima, (usuario1 = admin, password1 = AMDIN , usuário2 = test24, password2 = tes124): aumentando o elemento de configuração variável definida pelo utilizador, um aumento na quatro variáveis elemento 2, modificar o nome do controlador de transacção para o utilizador de login $ {__ tridime adNum}, GET /wordpress/wp-login.php pedido de modificação do usuário formulário nome de login $ {__ threadNum} 3, altere o pedido de nome é POST /wordpress/wp-login.php enviar o formulário de login do usuário $ {__ threadNum }, modificar o valor dos parâmetros do pedido de registro: $ {__ V (usuário $ {__ threadNum})}, pwd é de R $ __V {({$ __ senha threadNum})} . 4, modificar o grupo de discussão, modificar o número de threads 2, Ramp-up Período 2 Review 5. Clique em Executar
2, renderizações de desembarque:
3, aumento afirmação (em um teste de carga real, ele irá desativar a afirmação de swap, porque a afirmação vai ocupar CPU e memória, afetando assim a eficiência do jmeter concomitante de)
O exemplo acima pode ser julgado por os dados de resposta na busca de um nome de usuário para fazer logon maneira do usuário se o usuário fizer login com sucesso, o momento em que grande de usuários virtuais, isso é possível. Mas se há centenas ou milhares de usuários virtuais, é preciso afirmar um juiz
detalhes passo:
1 no ponto certo, o pedido POST /wordpress/wp-login.php, ou seja, o nome de login enviar solicitações do usuário formulário $ {__ threadNum}, selecione Add -> pós-processador -> CSS / JQuery Extractor.
-
- Nome de referência para: user_name (nome de variável, seguido pela necessidade de obter o valor desse nome variável)
- CSS expressão / JQuery: # wp-admin-bar-meu-conta .ab-item (para o elemento HTML é posicionado com seletores CSS)
- Combinar números: 1 (se houver vários elementos correspondentes, o primeiro elemento ter apenas valores)
2, solicitação POST /wordpress/wp-login.php, ou seja, nome de login do usuário enviar formulário $ {__ threadNum} ponto certo sobre o pedido, selecione Adicionar -> afirmações -> JSR223 afirmação. Idioma seleção javascript, insira o seguinte código no Script:
welcomeMessage = vars.get ( "nome_usuario") ; // apenas pós-processador valor variável aquisição definido nome de usuário = welcomeMessage.split ( "") [1] .trim (); // As fatias vírgula, espaços remover, obter um nome de usuário vars.put ( "username", nome de usuário) ; // nome do usuário re-atribuição, em seguida, adicione o vars do JMeter threadNum = ctx.getThreadNum () + 1; // retorna o NUM thread atual // se o usuário remover os nomes de variáveis definidas pelo usuário siga os elementos da página de destino que removem o nome de usuário inconsistente, é determinado que não há bem sucedido pouso AssertionResult.setFailure ((vars.get ( "o usuário" + threadNum) == nome de usuário)!); AssertionResult.setFailureMessage (username + "falha de logon do usuário ');
Uma versão atualizada da afirmação, pode mostrar uma causa clara da falha de login:
welcomeMessage = vars.get ( "user_name") ; // Obter pós-processador apenas definido como um valor variável Hi, corda administrador threadNum = ctx.getThreadNum () + 1; // Obter o número do segmento atual expectLoginUser = vars // obter as variáveis definidas pelo usuário user1; .get ( "o usuário" + threadNum) IF (WelcomeMessage === null) {// Se a mensagem de boas-vindas não se logado, falhas de login é AssertionResult.setFailure (true); // afirmação direta falhar AssertionResult.setFailureMessage (expectLoginUser + "login do usuário falhar, ele pode ser um nome de usuário e senha não correspondem"); // definir a mensagem de falha de declaração } else {// Se pudermos chegar à mensagem de boas vindas, insira o cartão de Minden fundo nome de usuário = welcomeMessage.split ( "") [1] .trim (); // O fatias vírgula, espaços remover, adquirindo nome de utilizador vars.put ( "nome", nome de utilizador) ; // depuração AssertionResult.setFailure ( ! (expectLoginUser == username)); // se o usuário não é o nosso conselho para preencher o usuário forma, uma falha de declaração AssertionResult.setFailureMessage (nome de usuário + "Falha de logon do usuário '); // definir a mensagem de falha }
Nota:
jmeter dúvidas variáveis únicas:
- vars: variáveis JMeter, incluindo variáveis definidas pelo usuário no documento aqui
- ctx: contexto jmeter, pode ser (a partir de 0, de modo que o código deve threadmun + 1) para obter através deste número variável do processo atual, em particular documento aqui
- AssertionResult: resultado de declaração,
AssertionResult.setFailure(true)
fará com que uma falha de declaração, a documentação específica picar aqui
4, o efeito da FIG afirmação contendo:
Nota: Debug Sampler Este amostrador de montagem, embora o nome variável irá imprimir o plano de teste de depuração
Em segundo lugar, criar um artigo
Use JMeter para conseguir a criação de posts funções
1, detalhes passo:
1, jmeter aberta recursos de gravação, o navegador abre wordpress / wp-admin / pós- new.php página, criar um blog para registrar 2, após a gravação terminar, remover os nós extras, login para reter controlador de transação, uma nova transações controlador, o 2 sobre o pedido de transação acima para o seguinte controlador, o controlador muda o nome da transação para criar pós usuário $ {__ threadNum} , para modificar o nome do GET /wordpress/wp-admin/post-new.php criar formulário de postagem, nome cargo /wordpress/wp-admin/post.php é modificado para enviar criar forma pós clique direito sobre a criação de nó de forma post e selecione Add -> pós-processador -> o CSS / JQuery Extractor (modificado para obter o nome user_id , nome de referência para post_id, CSS / JQuery Expressão: # post_id, Atributo: valor, os números correspondentes: 1, o valor padrão: o NOT FOUND) 3, e, em seguida, criar uma CSS / JQuery Extractor, ainda na criação de formulário de postagem em ( o nome mudou para obter user_id, nome de referência para user_id, CSS / JQuery Expressão: # user-id, Atributo: valor, números correspondentes: 1, o valor padrão: NÃO ENCONTRADO) 4 , POST /wordpress/wp-admin/post.php parâmetros de solicitação do pedido de modificação (user_ID: $ {user_id}, post_author: $ {user_id}, post_title: $ {__ RandomString (10, abcdefghijklmnopqrstuvwxyz)}, conteúdo: $ {__ Rando mString (10, abcdefghijklmnopqrstuvwxyz)}, post_id: $ {} post_id, post_author_override: $ {user_id}) 5. Salve e execute
2, FIG efeito:
Nota: Se você criar um artigo, o servidor voltou para o 403, é porque: cheques wordpress um artigo chamado ao processar uma solicitação para criar uma _nonce
parâmetros de solicitação, quando criamos uma página aberta artigo em um navegador _nonce
's valor será geração, isto é, se nós passamos pedido reprodução jmeter, então _nonce
o valor é nenhum servidor caminho com o valor desejado para o número, que é wordpress prevent pedido Cross-site Falsificação maneira (CSRF).
Solução:
encontrar diretório de instalação do wordpress, localize o wp-includes/pluggable.php
arquivo, use um editor de texto para abrir function wp_verify_nonce( $nonce, $action = -1 ) {
na próxima função, adicionar uma nova linha return 1;
, save.
função wp_verify_nonce ($ uso único, $ acção = -1) { return 1; $ nonce = (string) $ nonce; $ utilizador wp_get_current_user = (); $ uid = (int) $ user-> ID; if (! $ uid) { .... .... ....
retornar 1, é deixar wordpress em cheque _nonce quando retorna verdadeiro para sempre, chegaram a um baixo fechada temporariamente para evitar papel CSRF.
Em terceiro lugar, o artigo visite
Visitantes dentro os analógicos ler artigos do blog, a lógica é implementada para visitantes de primeira home page visita blog, em seguida, selecionar aleatoriamente um artigo para ler na página inicial
1, detalhes passo:
- 1.1, um novo plano de teste build-web-teste de plano
- 1.2, o número de vezes que o laço do fio em que o grupo: 1
- 1.3, IP e porta na home page solicitação HTTP é substituído no blog endereço da página inicial
- 1.4, um novo CSS / JQuery Extractor em home_page, o nome alterado para
choose a post
- Nome de referência:
rand_post_href
- CSS / expressões JQuery:
.entry-title>a
- Atributo:
href
- números correspondentes: 0
- Valor padrão: NÃO ENCONTRADO
- Nome de referência:
- 1.5, uma nova JSR223 Postprocessor em Home_Page, modificar o nome
get post id
- Língua:
javascript
- Roteiro:
- Língua:
var href = vars.get ( 'rand_post_href'); se (href) {var id = href.split ( '=') [1] vars.put ( "rand_id", id); }
- 1,6 se um novo controlador, o nome é modificados
if rand_id exists
condições:
$ {Rand_id}! = Null // se o artigo id não está vazio
- 1.7 Criar um pedido de http em se o amostrador controlador, Nome:
view post ${rand_id},请求器中的IP和port换成博客首页地址
- parâmetros de solicitação:
p = ${rand_id}(如http://localhost/wordpress/?p=123)里抓取了123,这是随机访问文章的id里抓取了123,这是随机访问文章的id)
- parâmetros de solicitação:
- 1,8, salvar e executar.
2, FIG efeito: