Grado en Ingeniería Informática
Dep. de Lenguajes y Sistemas Informáticos
Jorge Vicente Cantero / Vlad Filip
Prof. Ramón Alberto Mollineda Cardenas
El objetivo de las aplicaciones web es el de transmitir el mensaje de una compañia u ofrecer un servicio accesible desde el exterior a todo el mundo.
La implementación de tecnologías web permite crear un sistema con clientes ligeros (normalmente el navegador) separado del servidor donde residen centralizados el hardware, software y datos. Por esta razón, es imprescindible tener un sistema eficiente y sin errores.
css
html
compatibilidad
scripts
base de datos
api
www
js
ui
Necesitamos herramientas diseñadas para probar las diferentes partes de la arquitectura de un producto web: scripts, formato gráfico, seguridad, entorno multiplataforma etc.
y si es gratis, hemos encontrado el santo grial
Tiempo invertido
Ganancias
Test sin automatizar
Pagar un servicio
Test manuales
Aprender nuevos lenguajes
Humano
Máquina
vs
Son herramientas especiales enfocadas a comprobar la correcta funcionalidad de las aplicaciones web.
Intentan descubrir fallos en funcionalidad, seguridad, accesibilidad, usabilidad, compatibilidad y eficiencia antes de lanzar un producto final al público.
Sirve para
Crear tests robustos y suits de automatización de la pruebas de regresión para diferentes navegadores
Escalar y distribuir scripts en diferentes entornos
Automatizar tareas aburridas cuando se despliegan aplicaciones web
Productos
Selenium Webdriver
Selenium Grid
Selenium IDE
Características
Ejecutable en cualquier navegador y sistema operativo
Soporte para C#, Java, Ruby, PHP, Python
Entornos de test soportados: JUnit, TestNG, Nunit, pyunit
Muy buena documentación y comunidad
Innovador en ofrecer el servicio
Muy utilizado
Nos ofrece
Flexibilidad, potencia y soporte para lenguajes comunes
Problemas
Fallan los tests por problemas de timing
Tenemos que usar nuestros propios servidores
Difícil de usar
public class TestMultipleThreads {
@Test(invocationCount = 5)
public void loadTestThisWebsite() {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
System.out.println("Page Title is " + driver.getTitle());
Assert.assertEquals("Google", driver.getTitle());
driver.quit();
}
}
Características
Ejecutable en cualquier navegador y sistema operativo
Soporte Java/Python
Multiplataforma Mac OS, Linux y Windows
Soporte Maven
Integrado en IDEs como Eclipse
Nos ofrece
Automatización web de una manera sencilla basándose en Selenium.
Usa un lenguaje de scripting de alto nivel.
startChrome();
goTo("facebook.com");
write("email", into("Email or Phone"));
write("password", into("Password"));
click("Log In");
write("Hello from Helium!", into("Update Status"));
click("Post");
Actulizar status en Facebook
from . import TheInternetTestCase
from helium.api import Text, write, press, ENTER, click
class BasicAuthTest(TheInternetTestCase):
def get_page(self):
return "http://the-internet.herokuapp.com/login"
def test_valid_credentials(self):
self._login("tomsmith", "SuperSecretPassword!")
self.assertTrue(Text("Secure Area").exists())
self._logout()
def test_no_credentials(self):
click("Login")
self.assertTrue(Text("Your username is invalid!").exists())
def test_invalid_password(self):
self._login("tomsmith", "INVALID_PASSWORD")
self.assertTrue(Text("Your password is invalid!").exists())
def _login(self, username, password):
write(username, into="Username")
write(password, into="Password")
press(ENTER)
def _logout(self):
click("Logout")
self.assertTrue(Text("You logged out of the secure area!").exists())
Código para comprobar el login
Sauce Labs
Equafy
Automatización múltiples navegadores
Automatización testing para móviles
Testing manual
Utiliza Selenium tests, soporte Maven
Grabación y compartir
Test seguros
Herramientas debugging
Compatibilidad con otros tests o CI
Localizar problemas fácilmente (log visual)
if (publico.leHaGustado()){
publico.aplaudir(3000);
}