Automatizacion de Pruebas
-
Upload
guino-henostroza -
Category
Software
-
view
35 -
download
0
Transcript of Automatizacion de Pruebas
Contenido
• Pirámide de Automatización de las Pruebas
• Pruebas Unitarias Automatizadas
• Integración Continua
•API Level
•UI Level
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
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.
Pirámide de Automatización de las Pruebas
•ACTIVIDAD
• Dibuja como lucen sus pruebas automatizadas
• Donde se enfocan mas?
Contenido
• Pirámide de Automatización de las Pruebas
• Pruebas Unitarias Automatizadas
• Integración Continua
•API Level
•UI Level
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
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”
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
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
Contenido
• Pirámide de las Pruebas
• Pruebas Unitarias Automatizadas
• Integración Continua
•API Level
•UI Level
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”
Contenido
• Pirámide de las Pruebas
• Pruebas Unitarias Automatizadas
• Integración Continua
•API Level
•UI Level
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.
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.
UI Level
• Pirámide de las Pruebas
• Pruebas Unitarias Automatizadas
• Integración Continua
•API Level
•UI Level
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
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.
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
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
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
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”));
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
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
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.