Top Banner
Prácticas modernas de pruebas basadas en Lean/Agile Automatización de Pruebas
33

Automatizacion de Pruebas

Mar 20, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Automatizacion de Pruebas

Prácticas modernas de pruebas basadas en Lean/Agile

Automatización de Pruebas

Page 2: Automatizacion de Pruebas

Contenido

• Pirámide de Automatización de las Pruebas

• Pruebas Unitarias Automatizadas

• Integración Continua

•API Level

•UI Level

Page 3: Automatizacion de Pruebas

Pirámide de Automatización de las Pruebas

•Discusión: Porque Automatizar las

Pruebas?

Page 4: Automatizacion de Pruebas

Pirámide de Automatización de las Pruebas

Como suele ser Como debería ser

• Las Pruebas Manuales (p.e. Pruebas Exploratorias) deberían

ser la excepción en lugar que la regla.

• Las pruebas unitarias automatizadas deberían ser la mayoría

Page 5: Automatizacion de Pruebas

Pirámide de Automatización de las Pruebas

Las pruebas Unitarias o de Componente es el nivel mas bajo de la pirámide y suelen ejecutarse mas rápido.

Las pruebas automatizadas a nivel de Interfaz de Usuario son lentas de ejecutar, difíciles de mantener y mas frágiles.

Page 6: Automatizacion de Pruebas

Pirámide de Automatización de las Pruebas

•ACTIVIDAD

• Dibuja como lucen sus pruebas automatizadas

• Donde se enfocan mas?

Page 7: Automatizacion de Pruebas

Contenido

• Pirámide de Automatización de las Pruebas

• Pruebas Unitarias Automatizadas

• Integración Continua

•API Level

•UI Level

Page 8: Automatizacion de Pruebas

Pruebas Unitarias y el Cuadrante de las Pruebas

Pruebas Funcionales

Construimos lo correcto?Automatizado

(Cucumber, Selenium, etc.)

Pruebas Exploratorias

Usabilidad, EscenariosUAT

ManualQ2

Orientada al Negocio

Pruebas Unitarias

Lo construimos bien?Automatizado

(frameworks xUnit)

Atributos de Calidad

Tiempo de respuesta; escalabilidad; seguridad

Herramientas

Q1 Q4

Q3

Apoyado p

or

pro

gra

mació

nCritic

a d

el P

roducto

Orientada a la Tecnología

Page 9: Automatizacion de Pruebas

Pruebas Unitarias Automatizadas

•Discusión: Que son pruebas unitarias?

Page 10: Automatizacion de Pruebas

Pruebas Unitarias Automatizadas

ClaseBajo

Prueba

ClaseSoporte de

Prueba

Reporte

Llamar a método

Verificar resultado

Llamar a método

Verificar resultado

• Prueba de Unitaria o de Componente: Prueba de ComponenteIndividual

• Por lo general se usan “Frameworks de Pruebas Unitarias”

Page 11: Automatizacion de Pruebas

Frameworks para Pruebas Unitarias

• Existen multiples frameworks de pruebas unitarias

por lenguaje. Por ejemplo:

Lenguaje Unit Test Framework

C# Visual Studio Unit Testing Framework, Nunit, xUnit.net

JAVA JUnit, JTest, Cactus

Javascript Jasmine, Moche, QUnit

Page 12: Automatizacion de Pruebas

Como estructurar una Prueba Unitaria?

Arrange

Act

Assert

Page 13: Automatizacion de Pruebas

Estandares de nombres para Pruebas Unitarias

• El nombre básico consiste de 3 partes:

• Ejemplos:

Page 14: Automatizacion de Pruebas

Test Doubles

• Son todos aquellos objetos que son creados para

reemplazar a los objetos reales con el propósito

de hacer pruebas

Lenguaje Isolation Mocking Framework

C# Moq, RhinoMock, Typemock , Nsubstitute

JAVA Mockito, EasyMock, Jmock

Ruby RSpec Built-in, Mocha

Page 15: Automatizacion de Pruebas

Frameworks para Pruebas Unitarias

• PRACTICA

• Implementando Pruebas Unitarias Automatizadas

60

Page 16: Automatizacion de Pruebas

Contenido

• Pirámide de las Pruebas

• Pruebas Unitarias Automatizadas

• Integración Continua

•API Level

•UI Level

Page 17: Automatizacion de Pruebas

Integración Tradicional vs Frecuente

Page 18: Automatizacion de Pruebas

Integración Continua

• “Es una práctica donde los miembros de un

equipo integran su trabajo frecuentemente, en

general diariamente, lo que genera varias

integraciones en el día. Cada integración es

verificada por un build automatizado (incuyendo

testing) para detectar errores de integración tan

rápidamente como sea posible”

Page 19: Automatizacion de Pruebas

Contenido

• Pirámide de las Pruebas

• Pruebas Unitarias Automatizadas

• Integración Continua

•API Level

•UI Level

Page 20: Automatizacion de Pruebas

API Level

•Que es una API?

• API es un acronimo de Application Programming

Interface.

• Permite la comunicación e intercambio de datos entre

dos sistemas separados.

• Un sistema de software que implementa una API

contiene funciones/sub-rutinas que serán ejecutadas por

otro software.

Page 21: Automatizacion de Pruebas

API Level

•Una prueba nivel API es enteramente diferente a

una prueba de UI y principalmente se concentra

en la capa de lógica de negocios de la

arquitectura de software. No se concentra en el

“look & feel” de la aplicación.

• En lugar de utilizar en entradas y salidas de

usuario estándar (teclado), en pruebas API, utiliza

software para enviar llamadas a la API, obtener la

salida y verificar la respuesta del sistema.

Page 22: Automatizacion de Pruebas

UI Level

• Pirámide de las Pruebas

• Pruebas Unitarias Automatizadas

• Integración Continua

•API Level

•UI Level

Page 23: Automatizacion de Pruebas

Pruebas de Nivel UI y el Cuadrante de las Pruebas

Pruebas Funcionales

Construimos lo correcto?Automatizado

(Cucumber, Selenium, etc.)

Pruebas Exploratorias

Usabilidad, EscenariosUAT

ManualQ2

Orientada al Negocio

Pruebas Unitarias

Lo construimos bien?Automatizado

(frameworks xUnit)

Atributos de Calidad

Tiempo de respuesta; escalabilidad; seguridad

Herramientas

Q1 Q4

Q3

Apoyado p

or

pro

gra

mació

nCritic

a d

el P

roducto

Orientada a la Tecnología

Page 24: Automatizacion de Pruebas

UI Level

•Que son Pruebas de UI?

• Las pruebas de interfaz de usuario (UI) es el proceso de

probar la interfaz del sistema del SUT (subject under

test). UI testing involucra verificar las pantallas con los

controles como menus, botones, iconos, y todos los

tipos de barras - toolbar, menu bar, dialog boxes y

windows, etc.

• Un usuario no ve el código fuente. La interfaz es visible

al usuario. Especialmente el foco es en la estructura del

diseño e imágenes que estén trabajando

apropiadamente.

Page 25: Automatizacion de Pruebas

Selenium WebDriver

Page 26: Automatizacion de Pruebas

Inspeccionar elementos con FireFox Page Inspector

Activando el Page Inspector

• Haga click-derecho sobre un

elemento de la pagina y elija

“Inspect Element”

Seleccionando Elementos

• Seleccionar icono Inspector y

navegar por los elementos de la

pagina Web

Extensiones de FireFox

• Firebug

• FirePath

Page 27: Automatizacion de Pruebas

Abriendo una dirección Web

using OpenQA.Selenium.Firefox;using OpenQA.Selenium.Support.UI;

private static IWebDriver driver;driver = new FirefoxDriver();

driver.Navigate().GoToUrl("http://bolsatrabajo.azurews.net/");

Assert.AreEqual(“Bolsa Trabajo", driver.Title,“Se esperaba el titulo ‘Bolsa Trabajo’);

driver.Quit();

Agregar los namespaces

Implementar la prueba

Page 28: Automatizacion de Pruebas

Navegación por una Pagina

private static IWebDriver driver;driver = new FirefoxDriver();

IWebElement linkElement = driver.FindElement(By.Id("url1")); linkElement.Click();

System.Threading.Thread.Sleep(2000);

Assert.AreEqual(Url1, driver.Url, "Url de login incorrecto");

driver.Navigate().Back();

driver.Quit();

Hace click en el hipervinculo “url1” luego retrocede en el navegador

Page 29: Automatizacion de Pruebas

Seleccionando Elementos Web

• Devuelve el primer elemento con el Tag A.

IWebElement we = driver.FindElement(By.TagName(“A”));

• Accede al elemento por su nombre de clase

IWebElement we = driver.FindElement(

By.ClassName(“highlight”));

• Accede al elemento por su Id

IWebElement we = driver.FindElement(By.Id(“next”));

• Accede al element por su Nombre

IWebElement we = driver.FindElement(By.Name(“submit”));

• Encuentra un enlace por su texto

IWebElement we = driver.FindElement(By.LinkText (“news”));

• Encuentra un enlace si se conoce parte de su texto

IWebElement we = driver.FindElement(

By.PartialLinkText(“news”));

Page 30: Automatizacion de Pruebas

Leyendo Textos

private static IWebDriver driver;driver = new FirefoxDriver();

driver.Navigate().GoToUrl("http://bolsatrabajo.azurews.net/");

System.Threading.Thread.Sleep(2000);

IWebElement label = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_Label1"));

Assert.AreEqual("Bienvenido !!!", label.Text,“Se esperaba mensaje ‘Bienvenido !!!’")

driver.Quit();

Prueba que el texto de un elemento web sea el correcto

Page 31: Automatizacion de Pruebas

Envio de Informacion en una Pagina

driver.FindElement(By.Id("Text2")).SendKeys(strLoginName); driver.FindElement(By.Id("Password2")).SendKeys(“MyPassword");

driver.FindElement(By.Id("Button3")).Click();

Colocando datos en cajas de texto

Enviando Información

IWebElement loginName =driver.FindElement(By.Id("ctl00_LoginName1"));

Assert.AreEqual("Bienvenido " + strLoginName + " !", loginName.Text, “Se esperaba mensaje ‘Bienvenido usuario !’");

Comprobando ingreso

Page 32: Automatizacion de Pruebas

Instalar Selenium WebDriver en Visual Studio

Instalación desde el Administrador de Paquetes Nuget

Instalación desde la Consola

• PM> Install-Package Selenium.WebDriverCOMPATIBILIDAD: WebDriver v2.53.0 es compatible con FireFox 46.0 (x86). Con FireFox 47.0 no funciona.

Page 33: Automatizacion de Pruebas

UI Level

• PRACTICA

• Implementar BDD a nivel de UI con Specflow y Selenium

WebDriver

• 60 minutos

60