El uso de SoapUI con Selenium para pruebas de servicios web

โšก Resumen inteligente

SoapUI con Selenium Permite que un conjunto de herramientas compruebe un servicio web y el navegador que lo consume. Groovy es el puente, porque SoapUI corre Groovy nativo y Groovy llega a todos Java Selenium naves.

  • ๐Ÿ”˜ Dos herramientas, dos capas: SoapUI Los ejercicios utilizan el punto final SOAP o REST, mientras que Selenium WebDriver controla el navegador que lo llama.
  • โ˜‘๏ธ Groovy es el pegamento: SoapUI apoya Groovy extensamente y Groovy lleva todo Java biblioteca configurada, asรญ que Selenium El cรณdigo se ejecuta sin cambios.
  • โœ… Clase de corredor: SoapUITestCaseRunner abre un archivo de proyecto, selecciona un conjunto de pruebas y un caso de prueba, y lo ejecuta desde Java.
  • ๐Ÿงช Datos dinรกmicos: El mรฉtodo setProjectProperties() pasa valores como la ciudad y el cรณdigo postal en tiempo de ejecuciรณn en lugar de hacerlo desde un archivo de propiedades estรกtico.
  • ๐Ÿ› ๏ธ Requisitos previos: El Groovy SDK, un JDK, Selenium y SoapUI Todos los componentes deben estar instalados antes de la primera ejecuciรณn.
  • ๐Ÿ“Š Rastro de evidencia: Cada acciรณn se registra en el archivo soapui.log, ubicado en la carpeta bin del directorio de instalaciรณn.

El uso de SoapUI  con  Selenium para pruebas de servicios web a travรฉs de Groovy

SoapUI es el software de cรณdigo abierto mรกs popular prueba funcional herramienta para Pruebas de API. Proporciona completa prueba de cobertura y es compatible con todos los protocolos y tecnologรญas estรกndar.

ยฟQuรฉ es SOAP?

JABร“N Es un protocolo sencillo basado en XML. Permite que las aplicaciones intercambien informaciรณn a travรฉs de HTTP. Utiliza los servicios web. DescriptLenguaje de iones (WSDL) para la comunicaciรณn, y otras aplicaciones pueden interactuar con servicios web a travรฉs de esa interfaz WSDL.

Servicios web SOAP frente a REST en SoapUI

SoapUI Comenzรณ como un cliente SOAP, y su nombre aรบn lo indica, pero tambiรฉn prueba puntos finales REST. Saber a quรฉ estilo apuntas determina cรณmo se construye la prueba.

Aspecto JABร“N REST
Contrato Un archivo WSDL describe cada operaciรณn, por lo que SoapUI puede generar solicitudes automรกticamente. Por lo general, una definiciรณn de OpenAPI o Swagger, o ningรบn contrato formal.tract en absoluto.
Formato de mensaje Solo sobre XML. Generalmente se utiliza JSON, aunque tambiรฉn se permiten XML y otros formatos.
Logรญstica de transporte Generalmente se utiliza HTTP, pero SOAP es independiente del protocolo de transporte. HTTP, con el mรฉtodo y URL llevando la intenciรณn.
Afirmaciones en SoapUI Las expresiones XPath y XQuery coinciden con el encabezado de la respuesta. Las aserciones de JSONPath y del script coinciden con la carga รบtil.
Uso tรญpico Banca, telecomunicaciones y otrostracintegraciones empresariales intensivas. Servicios pรบblicos y para dispositivos mรณviles donde la carga รบtil es mรญnima.

El tutorial que se muestra a continuaciรณn utiliza un servicio meteorolรณgico SOAP, pero la misma clase de ejecutor controla un caso de prueba REST sin ningรบn cambio en el Java cรณdigo.

ยฟQuรฉ es SOAPUI?

SOAPUI SOAPUI es una herramienta de prueba de servicios web multiplataforma de cรณdigo abierto. La ediciรณn SOAPUI-Pro ofrece funcionalidades adicionales para empresas que gestionan servicios web crรญticos. Los servicios web desempeรฑan un papel fundamental en las aplicaciones de internet.

โš ๏ธ Nota sobre el nombre del producto: SmartBear ha sido descontinuado. SoapUI Pro como un producto independiente y lo fusionรณ, junto con LoadUI Pro y ServiceV Pro, en ReadyAPI. La ediciรณn gratuita conserva el SoapUI nombre y todavรญa se publica activamente. Los pasos a continuaciรณn funcionan en ambos, y existentes SoapUI proyectos abiertos en ReadyAPI.

ยฟQuรฉ es Selenium?

Selenium No es un solo programa, sino una familia de herramientas para manejar un navegador como lo harรญa una persona. Dos miembros son importantes aquรญ:

  • Selenium โ€” una herramienta de prueba que automatiza los navegadores en mรบltiples plataformas.
  • Selenium Controlador web โ€” Realiza llamadas directas a los navegadores, utilizando la compatibilidad nativa de cada navegador con la automatizaciรณn.

ยฟPor quรฉ combinar? SoapUI y Selenium en una prueba

La comprobaciรณn del servicio y la comprobaciรณn de la pantalla suelen ser dos tareas independientes gestionadas por dos sistemas distintos, por lo que un fallo en la conexiรณn entre ambos tiende a afectar a ambos. Al ejecutarlos conjuntamente, se soluciona ese problema.

  • Demuestra el viaje de ida y vuelta. Una reserva realizada a travรฉs del navegador deberรญa aparecer en la respuesta del servicio. Solo una prueba combinada puede verificar ambas partes.
  • Configurar el estado rรกpidamente. Crear un cliente a travรฉs de la API lleva un segundo; crear entre uno y doce campos de formulario lleva un minuto y falla con mรกs frecuencia.
  • Localiza un fallo. Cuando la interfaz de usuario muestra un total incorrecto, la aserciรณn de la API en la misma ejecuciรณn le indica de inmediato si el problema reside en el servicio o en la pรกgina.
  • Reutilizar un conjunto de datos. En el ejemplo siguiente, los pares de cรณdigo postal y ciudad alimentan la llamada al servicio y tambiรฉn podrรญan alimentar las aserciones del navegador.
  • Eliminar la cobertura duplicada. Las reglas de validaciรณn que ya han sido probadas en la capa de servicio no necesitan una prueba de navegador lenta para cada una.

La contrapartida es una prueba mรกs pesada: dos herramientas, dos conjuntos de dependencias y una ejecuciรณn mรกs larga. Mantenga las pruebas combinadas para el puรฑado de recorridos que realmente cruzan el lรญmite, y deje el resto como pruebas puras. API o comprobaciones puramente del navegador.

Selenium con SoapUI

La forma mรกs sencilla y fรกcil de integrar Selenium con SoapUI es utilizar Groovy, el cual SoapUI brinda un amplio apoyo.

Groovy es un lenguaje de scripting orientado a objetos que incluye todos los Java bibliotecas, por lo que cada Java Las palabras clave y las funciones se pueden utilizar en un Groovy script directamente. Se ejecuta en la JVM (Java Mรกquina virtual), que es lo que permite una Groovy Entra SoapUI y Java Selenium prueba para compartir las mismas clases.

Requisitos previos para usar Selenium con SoapUI

Instale lo siguiente antes de escribir cualquier cรณdigo:

โš ๏ธ Nota de versiรณn: Groovy 5.0 es la versiรณn estable actual y requiere JDK 11 o posterior, asรญ que instale primero el JDK y deje que Groovy Versiรณn sรญguela. Selenium se agrega a un Java proyecto como un Maven o Gradle dependencia en lugar de como una carpeta descargada, y la SoapUI El archivo jar debe estar en la misma ruta de clases que tu prueba; ese es el รบnico punto donde fallan la mayorรญa de los primeros intentos.

Llama a el SoapUI Ejecutor de casos de prueba en Selenium

El cรณdigo siguiente llama a un SoapUI Caso de prueba. Establece las propiedades de una ciudad y su cรณdigo postal correspondiente, y cuando se ejecuta, recupera el valor de cada ciudad y cรณdigo postal, luego informa el nรบmero de errores para cada par que no coincide. Este cรณdigo se ejecuta en Selenium.

Nota: Aquรญ se utiliza usePropertyFileFlag=true en lugar de un archivo de propiedades estรกtico para almacenar el cรณdigo postal y la ciudad. El cรณdigo postal y la ciudad se pasan dinรกmicamente en tiempo de ejecuciรณn mediante el mรฉtodo setProjectProperties().

Instrucciones para ejecutar el cรณdigo:

  1. Puesta en marcha SoapUI.
  2. Inicie un nuevo caso de prueba.
  3. Agregar una nueva Groovy paso.
  4. Copia y pega el cรณdigo de ejemplo en el paso.
  5. Haga clic en Reproducir.
  6. Usted puede ver Firefox iniciar y navegar a GoogleDespuรฉs de eso, puedes ver el SoapUI entradas de registro.
  7. El cรณdigo se ejecuta usando JUnit.

Code Ejemplo

@when("<I use the weather service to get the weather information")						
    public void i_use_the_weather_service_to_get_the_information() {
        Set<Entry<String, string>> set = zipAndCities.entrySet();
        while (iterator,hasNext)) {
            Entry<String, String> entry = iterator.next();
            String zipCode = entry.getkey();
            String city = entry.getValue();
            String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city};									
            
            try{
                SoapUITestCaseRunner soapUITestCaseRunner = new	SoapUITestCaseRunner();
                soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml");					
                soapUITestCaseRunner.setProjectProperties(prop);
                soapUITestCaseRunner.setTestSuite("TestSuite1");
                soapUITestCaseRunner.setTestCase("TestCase1");
                soapUITestCaseRunner.run();
                
            } catch (Exception e) {
                System.err.println("checking" + zipCode + " failed!");
                failureCount++;
                zipCodes.append(zipCode + " [" + city +"] ");
                e.printStackTrace();
            }finally{					
                totalCount++;
            }
}
}
}

โš ๏ธ Code Nota: Este fragmento se reproduce exactamente como se publicรณ y es un fragmento en lugar de una clase compilable. Antes de compilarlo, debe declarar el iterador obtenido de conjunto.iterador(), correcto mientras (iterador,hasNext)) a mientras (iterador.hasNext()) y entrada.getkey() a entrada.getKey(), poner en mayรบscula la anotaciรณn como @Cuando, elimine el carรกcter suelto al comienzo del texto del paso y utilice Cordรณn mรกs bien que cadena En la declaraciรณn Set. El texto original se conserva para que el ejemplo publicado permanezca intacto.

La vista de consola le permite ver de un vistazo todo lo caso de pruebas ejecutado. Encontrarรก una lista de los cรณdigos postales y ciudades obtenidos y pasados โ€‹โ€‹a SoapUI Caso de prueba 1.

Ver SoapUI Archivo de registro

Los archivos de registro registran cada acciรณn que ocurre en un sistema operativo o aplicaciรณn de software. Para ver el SoapUI archivo de registro, vaya al directorio principal, donde verรก un archivo llamado soapui.log.

SoapUI Listado del directorio de instalaciรณn con el archivo soapui.log visible

In SoapUIEl archivo de registro se encuentra en la carpeta bin dentro del directorio de instalaciรณn, por ejemplo, C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. En una instalaciรณn actual, la carpeta de la versiรณn difiere y un ReadyAPI La instalaciรณn escribe en su propia carpeta bin.

carpeta de contenedores de la SoapUI directorio de instalaciรณn donde se almacena el archivo de registro

Cuando abra este archivo de registro haciendo clic en รฉl, se verรก similar a la captura de pantalla siguiente.

Contenido del archivo soapui.log que muestra las entradas de ejecuciรณn de prueba registradas.

Donde SoapUI y Selenium La integraciรณn suele fallar

Casi todos los fallos en este punto se deben a problemas de cableado, no a problemas de prueba. Estos son los que hay que revisar primero.

Sรญntoma Causa probable Que comprobar
NoClassDefFoundError o ClassNotFoundException en SoapUIEjecutor de casos de prueba El SoapUI El archivo jar no se encuentra en la ruta de clases de prueba. Agregar el formulario SoapUI dependencia al archivo de compilaciรณn, o apuntar el classpath al jar en el SoapUI carpeta lib. Un jar faltante aparece como un ordinario Selenium excepciรณn en la consola.
No se puede encontrar el archivo del proyecto. La funciรณn setProjectFile() resuelve una ruta relativa con respecto al directorio de trabajo, que difiere entre un IDE y una herramienta de compilaciรณn. Ejecรบtalo desde la raรญz del proyecto o especifica una ruta absoluta.
No se encontrรณ el conjunto de pruebas ni el caso de prueba. Los nombres en setTestSuite() y setTestCase() deben coincidir exactamente con el proyecto. Copia los nombres directamente del SoapUI รกrbol del proyecto; distinguen entre mayรบsculas y minรบsculas.
La propiedad nunca llega a la solicitud setProjectProperties() se ejecutรณ despuรฉs de run(), o la solicitud no hace referencia a la propiedad. Configure todas las propiedades antes de ejecutar (run()) y utilice la sintaxis de marcador de posiciรณn de propiedad dentro de la solicitud.
El navegador no se inicia El controlador y el navegador instalado son de versiones principales diferentes. Deje que Selenium El administrador resuelve el problema del controlador o lo relaciona con la versiรณn del navegador.
Una funciรณn funciona en el IDE pero no en el ejecutor. Este paso depende de una funciรณn exclusiva de la versiรณn Pro, como por ejemplo una fuente de datos. Confirme la licencia o reconstruya el paso con equivalentes de cรณdigo abierto.

Una vez que el ejecutor finaliza correctamente y soapui.log muestra las entradas esperadas, la integraciรณn funciona y puede incorporarse a un sistema mรกs amplio. pruebas de automatizaciรณn sucesivamente.

Preguntas Frecuentes

La ediciรณn de cรณdigo abierto funciona Groovy pasos y expone el ejecutor de casos de prueba, por lo que la integraciรณn en sรญ no necesita licencia. Pro o ReadyAPI Las funciones como las fuentes de datos y el asistente basado en datos son las partes que fallarรกn sin uno.

Sรญ, y es la imagen especular de este tutorial. A Groovy El paso puede instanciar un WebDriver directamente, siempre que Selenium Los frascos se colocan en el SoapUI carpeta lib para que el script pueda resolverlos.

SoapUI ejecuta Groovy de forma nativa en un paso de script, sin ciclo de compilaciรณn, y Groovy llega a todos Java Clase ya en el classpath. Simple Java necesita un paso de construcciรณn, por eso Groovy Ventajas para un cรณdigo de integraciรณn corto.

Envuรฉlvalo como un JUnit or TestNG prueba y deja que Maven o Gradle invรณcalo, exactamente como lo hace el ejemplo. En el agente el navegador debe ejecutarse sin interfaz grรกfica y el SoapUI El archivo del proyecto debe confirmarse junto con el cรณdigo de prueba.

Los asistentes son รบtiles para ampliar un pequeรฑo conjunto de pares de ciudad y cรณdigo postal a una cobertura mรกs amplia, y para detectar campos de respuesta que no son revisados โ€‹โ€‹por la aserciรณn. Los valores generados aรบn necesitan una verificaciรณn real, ya que un cรณdigo postal plausible no es necesariamente vรกlido.

Lo es, dentro de ciertos lรญmites. El copiloto se encarga Groovy sintaxis y comunes Java llama bien, pero tiene poco conocimiento de la SoapUI Objetos de scripting como testRunner, context y log, por lo que esas sugerencias necesitan una revisiรณn minuciosa.

Almacenarlas como variables de entorno o en un gestor de secretos y leerlas en las propiedades del proyecto en tiempo de ejecuciรณn, el mismo mecanismo que utiliza setProjectProperties(). Un archivo de proyecto confirmado con una contraseรฑa en texto plano es una vulnerabilidad que puede surgir.

Mantenga comprobaciones a nivel de protocolo (estado, esquema, XPath en el sobre) dentro SoapUI, donde las herramientas estรกn construidas para ellos. Afirmar en el Selenium Prueba รบnicamente lo que el propio navegador debe mostrar, por lo que un fallo apunta a una sola capa.

Resumir este post con: