Realización de un ensayo --Jmeter ejemplo de wordpress

Jmeter ejemplo de wordpress

WordPress está utilizando lenguaje PHP plataforma de blog de desarrollo, los usuarios pueden crear su propio sitio web en el servidor de base de datos que soporte PHP y MySQL. También puede WordPress como un sistema de gestión de contenidos (CMS) para su uso, instalación Wordress .

En primer lugar, el inicio de sesión del usuario, multi-usuario de inicio de sesión

1, detalles del paso

Único inicio de sesión de usuario: 
1. Abrir la ruta de instalación jmeter archivo bin / user.properties con un editor de texto, añadir una línea en la mayoría de los CookieManager.check.cookies final del archivo = false (el jmeter la cookie mecanismo de comprobación de apagado, esto es porque el jmeter no conforme cuando un cookie es conjunto de inicio de sesión wordpress, descartes JMeter la cookie cuando conectado, lo que lleva a los resultados registrados no puede iniciar sesión en durante la reproducción) 
2, abra el <a href = "http: //www.cnblogs . com / Keep-ambición / p / 8381441.html "target =" _ blank "> jmeter función de grabación </a>, navegador y entre your_ip_port / wp-login.php operación de aterrizaje 
3, eliminar nodos redundantes secuencia de comandos grabados, solicitud de Obtener /wordpress/wp-login.php fue renombrado como el formulario de acceso, solicitud POST /wordpress/wp-login.php cambió el nombre del formulario de acceso en el Presentar 
4, haga clic para ejecutar 
 
de acceso multiusuario: 
1, basado en el guión anterior, (usuario1 = admin, password1 = amdin , usuario2 = test24, password2 = tes124): el aumento de la elemento de configuración variable definida por el usuario, un aumento en el cuatro variables elemento de  
2, modificar el nombre del controlador de transacción para el usuario de inicio de sesión $ {__ thre adNum}, GET /wordpress/wp-login.php solicitud de modificación de la forma nombre de inicio de sesión de usuario $ {} __ threadNum
nombre 3, modificar solicitudes /wordpress/wp-login.php la POST presentar entrada formulario de usuario $ {__ threadNum }, la modificación de los parámetros de valor de petición de conexión: $ {__ V (usuario $ {__ threadNum})}, pwd valor $ {__ V (contraseña $ { __ threadNum})}
4, modificar el grupo de hilos, modificar el número de hilos 2, Ramp-up Período 2 modificación 
5, en Ejecutar

2, representaciones de aterrizaje:

3, aumento afirmación (en una prueba de carga real, se desactivará la afirmación de intercambio, debido a que la afirmación se ocupará de la CPU y la memoria, lo que afecta a la eficiencia de jmeter concurrente de)

El ejemplo anterior se puede juzgar por los datos de respuesta en la búsqueda de un nombre de usuario para iniciar sesión camino del usuario si el usuario inicia sesión con éxito, el momento en que gran parte de los usuarios virtuales, esto es posible. Pero si hay cientos o miles de usuarios virtuales, tenemos que afirmar que un juez

detalles paso:

    1 en el punto correcto, la solicitud POST /wordpress/wp-login.php, es decir, el nombre de inicio de sesión presentar solicitudes formulario de usuario $ {} __ threadNum, seleccione Agregar -> post-procesador -> CSS / jQuery Extractor.

    • Nombre de referencia a: nombre_usuario (nombre de la variable, seguido por la necesidad de obtener el valor de este nombre de variable) 
    • CSS expresión / JQuery: # wp-admin-bar-mi-cuenta-.ab elemento (por elemento HTML se sitúa con selectores CSS)
    • Coinciden con números: 1 (si hay múltiples elementos de adaptación, el primer elemento sólo tienen valores)

    2, solicitud POST /wordpress/wp-login.php, es decir, el nombre de inicio de sesión enviar formulario de usuario $ {} __ threadNum punto a la derecha en la solicitud, seleccione Agregar -> afirmaciones -> JSR223 aserción. Selección del idioma JavaScript, introduzca el código siguiente en la secuencia de comandos:

WelcomeMessage = vars.get ( "nombre_usuario") ; // simplemente postprocesador valor de la variable de adquisición define 
nombre de usuario = welcomeMessage.split ( "") [1] .trim (); // las rebanadas por comas, espacios eliminar, obtener un nombre de usuario 
vars.put ( "nombre de usuario", nombre de usuario) ; // nombre de usuario re-asignación, a continuación, añadir el vars de JMeter                  
threadNum = ctx.getThreadNum () + 1; // devuelve el NUM actual hilo 
 
// si el usuario eliminar los nombres de las variables definidas por el usuario siguen los elementos de la página de aterrizaje que eliminan el nombre de usuario inconsistentes, se determina que no hay éxito de aterrizaje 
AssertionResult.setFailure ((vars.get ( "usuario" + threadNum) == nombre de usuario)!); 
AssertionResult.setFailureMessage (nombre de usuario + "Error de usuario ');

Una versión mejorada de la afirmación, puede mostrar una causa clara de la falta de la conexión:

WelcomeMessage = vars.get ( "nombre_usuario") ; // Obtener post-procesador se acaba de definir como un valor de la variable Hola, cadena de administración 
threadNum = ctx.getThreadNum () + 1; // Obtener el número del hilo actual 
expectLoginUser = vars // obtener las variables definidas por el usuario usuario1; .get ( "usuario" + threadNum) 
 
SI (WelcomeMessage === null) {// Si el mensaje de bienvenida no consiguió conectado, fallos de conexión es 
    AssertionResult.setFailure (true); // afirmación directa falla 
    AssertionResult.setFailureMessage (expectLoginUser + "de inicio de sesión de usuario no es correcto puede ser un nombre de usuario y la contraseña no coinciden"); // establecer el mensaje de error de aserción 
} else {// Si podemos llegar al mensaje de bienvenida, introduzca la tarjeta de Minden fondo 
    nombre de usuario = welcomeMessage.split ( "") [1] .trim (); // El rebanadas por comas, espacios eliminar, la adquisición de nombre de usuario 
    vars.put ( "nombre de usuario", nombre de usuario) ; // depuración 
 
    AssertionResult.setFailure ( ! (expectLoginUser == nombre de usuario)); // si el usuario no es nuestro tablero en que rellenar el formulario de usuario, un error de aserción 
    AssertionResult.setFailureMessage (nombre de usuario + "Error de usuario '); // establece el mensaje no pudo 
}

nota: 

jmeter dudas variables únicas:

  • vars: las variables de JMeter, incluyendo las variables definidas por el usuario en el documento aquí
  • CTX: jmeter contexto, puede ser (a partir de 0, por lo que el código debe threadmun + 1) para obtener a través de este número variable del proceso en curso, en particular, el documento aquí
  • AssertionResult: resultado aserción, AssertionResult.setFailure(true)hará que un error de aserción, la documentación específica del empuje aquí

4, el efecto de la figura afirmación que contiene:

 Nota: Depuración Sampler Este muestrario de montaje, a pesar de nombre de variable se imprimirá el plan de ensayo de depuración

 

En segundo lugar, crear un artículo

Utilice jmeter para lograr la creación de funciones Entradas de Blog

1, detalles del paso:

1, jmeter abierta capacidades de grabación, el navegador abre wordpress / wp-admin / post new.php página, crear un blog para grabar 
2, una vez finalizada la grabación, eliminar los nodos adicionales, de inicio de sesión para retener controlador de transacción, una nueva transacciones del convertidor el 2 en la solicitud de transacción por encima de a la siguiente controlador, el controlador cambia el nombre de la transacción para crear poste usuario $ {__ threadNum} , para modificar el nombre de la GET /wordpress/wp-admin/post-new.php crear la forma post, nombre cargo /wordpress/wp-admin/post.php se modifica para presentar crear la forma de post 
clic derecho en el nodo de crear formulario de envío y seleccione Agregar -> post-procesador -> CSS / jQuery Extractor 
(modificado para obtener el nombre user_id , nombre de referencia para post_id, CSS / JQuery Expresión: # post_id, Attribute: valor, los números que coinciden: 1, el valor por defecto: la no encontrado) 
3, y luego crear un CSS / JQuery Extractor, todavía en el crear la forma de correos en  
( el nombre cambiado para obtener user_id, nombre de referencia a user_id, CSS / jQuery Expresión: # user-id, Atributo: valor, números que coinciden: 1, el valor por defecto: No encontrado)
4 , POST /wordpress/wp-admin/post.php parámetros de la petición de solicitud de modificación (ID_usuario: $ {} user_id, post_author: $ {} user_id, POST_TITLE: $ {__ RandomString (10, abcdefghijklmnopqrstuvwxyz)}, contenido: $ {__ Rando mString (10, abcdefghijklmnopqrstuvwxyz)}, post_id: $ {} post_id, post_author_override: $ {} user_id)
5. Guarde y ejecute

2, el efecto de la figura:

 Nota: Si crea un artículo, el servidor devuelto al 403, esto es debido a que: cheques wordpress un artículo llamado al procesar una solicitud de creación de un _nonceparámetros de la petición, cuando creamos una página abierta artículo en un navegador _nonce's valor generación, es decir, si pasamos solicitud de reproducción jmeter, entonces _nonceel valor es ningún servidor manera con el valor deseado para el número, que es wordpress Prevenir la solicitud entre sitios Falsificación manera (CSRF).

Solución:
encontrar el directorio de instalación de WordPress, localizar el wp-includes/pluggable.phparchivo, utilice un editor de texto para abrir en function wp_verify_nonce( $nonce, $action = -1 ) {la próxima función, añadir una nueva fila return 1;, en Guardar.

función wp_verify_nonce ($ nonce, $ action = -1) { 
  return 1; 
    $ nonce = (string) $ nonce; 
    $ user = wp_get_current_user (); 
    $ uid = (int) $ usuario-> ID; 
    if (! $ uid) { 
    .... 
    .... 
    ....

 volver 1, es dejar que wordpress en jaque _nonce cuando se vuelve verdadera siempre, llegaron a un cierre temporal hacia abajo para evitar que el papel CSRF.

 

En tercer lugar, el artículo visite

Visitantes dentro de las analógicas leer los artículos del blog, la lógica se implementa para los visitantes primera visita la página de inicio del blog, seleccione al azar un artículo para leer en la página de inicio

1, detalles del paso:

  • 1.1, un nuevo plan de pruebas de acumulación de Web-test de planta
  • 1.2, el número de veces que el bucle de hilo en el que el grupo: 1
  • 1.3, IP y el puerto en la página de inicio de solicitud HTTP se sustituye en la dirección de la página principal del blog
  • 1.4, un nuevo CSS / jQuery Extractor en Home_Page, el nombre cambió achoose a post
    • Nombre de referencia: rand_post_href
    • CSS / expresiones JQuery: .entry-title>a
    • Atributo: href
    • números que coinciden: 0
    • Valor por defecto: No encontrado
  • 1.5, un nuevo postprocesador JSR223 en Home_Page, modificar el nombreget post id
    • Idioma: javascript
    • Guión:
var href = vars.get ( 'rand_post_href'); si (href) {var id = href.split ( '=') [1] vars.put ( "rand_id", id); }
  • 1.6 Si un nuevo controlador, el nombre se modifica if rand_id exists condiciones: 
$ {} Rand_id! = Null // si el artículo no está vacío Identificación
  • 1.7 Crear una solicitud HTTP en si el muestreador controlador, Nombre:view post ${rand_id},请求器中的IP和port换成博客首页地址 
    • parámetros de la petición:p = ${rand_id}(如http://localhost/wordpress/?p=123)里抓取了123,这是随机访问文章的id里抓取了123,这是随机访问文章的id)
  • 1.8, guardar y ejecutar.

2, el efecto de la figura:

Supongo que te gusta

Origin www.cnblogs.com/doumingyi/p/12457379.html
Recomendado
Clasificación