Módulo 12: Automatización con Katalon Studio

Objetivos del módulo

  • Instalar y configurar Katalon Studio
  • Crear proyectos de automatización web
  • Usar grabación y modo manual
  • Escribir scripts con Groovy
  • Implementar data-driven testing
  • Gestionar objetos (Object Repository)

1. ¿Qué es Katalon Studio?

Katalon Studio es una plataforma de automatización de pruebas “todo en uno” que permite automatizar tests web, móviles, API y de escritorio.

Características principales

Característica Descripción
Gratuito Versión Free para equipos pequeños
Low-code Grabación y modo manual sin código
Scripting Groovy (basado en Java) para tests avanzados
Multi-plataforma Web, Mobile, API, Desktop
Object Repository Gestión centralizada de elementos
Data-driven Tests con datos de Excel, CSV, BD
Integración CI/CD Jenkins, Azure DevOps, GitHub Actions
Reportes Reportes HTML integrados

Katalon vs Selenium vs Playwright

Aspecto Selenium Playwright Katalon
Curva de aprendizaje Alta Media Baja
Código necesario Opcional
IDE VS Code / Visual Studio VS Code Propio
Grabación No nativa Codegen Sí, integrada
Mantenimiento Alto Medio Medio
Personalización Total Total Media

2. Instalación

  1. Descarga desde katalon.com
  2. Instala (Windows, Mac o Linux)
  3. Crea una cuenta gratuita
  4. Activa la licencia Free en el primer inicio

Interfaz principal

┌────────────────────────────────────────────────────────────┐
│  File  Edit  Action  Run  ...                              │
├──────────────┬─────────────────────────────────────────────┤
│ Tests        │                                             │
│ Explorer     │         Editor principal                    │
│              │         (Script/Manual/Grabación)           │
│ ── Test Cases│                                             │
│ ── Test Suite│                                             │
│ ── Object    │                                             │
│    Repository│                                             │
│ ── Test Data │                                             │
│ ── Keywords  │                                             │
│              ├─────────────────────────────────────────────┤
│              │         Log / Console / Output              │
└──────────────┴─────────────────────────────────────────────┘

3. Crear un proyecto

  1. FileNew Project
  2. Nombre: TiendaOnlineTests
  3. Tipo: Web
  4. Ubicación: elegir carpeta

Estructura del proyecto

TiendaOnlineTests/
├── Test Cases/           ← Scripts de prueba
├── Test Suites/          ← Agrupaciones de tests
├── Object Repository/    ← Elementos de la página
├── Test Data/            ← Datos de prueba (Excel, CSV)
├── Keywords/             ← Funciones reutilizables
├── Profiles/             ← Variables de entorno
└── Reports/              ← Resultados de ejecución

4. Grabación de tests

Paso a paso

  1. Clic en Record Web (botón rojo en la barra)
  2. Introducir URL: https://www.saucedemo.com/
  3. Seleccionar navegador: Chrome
  4. Clic en Record
  5. Realizar las acciones en el navegador:
    • Escribir usuario
    • Escribir contraseña
    • Clic en Login
  6. Clic en Stop al terminar
  7. Guardar como: Login_Test

Resultado de la grabación

Katalon genera un test con los pasos grabados:

# Acción Objeto Valor
1 Open Browser https://www.saucedemo.com/  
2 Set Text input_Username standard_user
3 Set Text input_Password secret_sauce
4 Click btn_Login  
5 Verify Element Present div_Products  

5. Object Repository

Concepto

El Object Repository es un almacén centralizado de todos los elementos web con los que interactúan tus tests.

Propiedades de un objeto

Propiedad Valor
Nombre btn_Login
Selector XPath //input[@id='login-button']
Selector CSS #login-button
Atributos id=login-button, type=submit

Organizar el Object Repository

Object Repository/
├── Pages/
│   ├── LoginPage/
│   │   ├── input_Username
│   │   ├── input_Password
│   │   └── btn_Login
│   ├── InventoryPage/
│   │   ├── div_Products
│   │   ├── btn_AddToCart
│   │   └── link_Cart
│   └── CartPage/
│       ├── div_CartItems
│       └── btn_Checkout

Estrategias de selección

Método Prioridad Ejemplo
id 1 (mejor) #login-button
name 2 input[name='user-name']
CSS 3 .inventory_item_name
XPath 4 //div[@class='inventory_list']
Imagen 5 Reconocimiento visual

6. Modo Script (Groovy)

Sintaxis básica

import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

// Abrir navegador
WebUI.openBrowser('https://www.saucedemo.com/')

// Maximizar ventana
WebUI.maximizeWindow()

// Escribir texto
WebUI.setText(findTestObject('Pages/LoginPage/input_Username'), 'standard_user')
WebUI.setText(findTestObject('Pages/LoginPage/input_Password'), 'secret_sauce')

// Click
WebUI.click(findTestObject('Pages/LoginPage/btn_Login'))

// Verificaciones
WebUI.verifyElementPresent(findTestObject('Pages/InventoryPage/div_Products'), 10)
WebUI.verifyTextPresent('Products', false)

// Obtener texto
String titulo = WebUI.getText(findTestObject('Pages/InventoryPage/header_Title'))
WebUI.verifyEqual(titulo, 'Products')

// Esperar
WebUI.waitForElementVisible(findTestObject('Pages/InventoryPage/div_Products'), 10)

// Cerrar navegador
WebUI.closeBrowser()

Keywords más usados

Keyword Descripción
WebUI.openBrowser(url) Abre el navegador
WebUI.setText(obj, text) Escribe en un campo
WebUI.click(obj) Hace clic
WebUI.getText(obj) Obtiene el texto visible
WebUI.verifyElementPresent(obj, timeout) Verifica que existe
WebUI.verifyTextPresent(text, isRegex) Verifica texto en la página
WebUI.waitForElementVisible(obj, timeout) Espera hasta que sea visible
WebUI.selectOptionByLabel(obj, label) Selecciona en dropdown
WebUI.check(obj) Marca checkbox
WebUI.takeScreenshot(path) Captura pantalla
WebUI.closeBrowser() Cierra el navegador

7. Data-Driven Testing

Crear datos de prueba

  1. Test DataNewExcel File
  2. Nombre: LoginData
  3. Crear archivo Excel:
username password expected
standard_user secret_sauce Products
locked_out_user secret_sauce locked out
problem_user secret_sauce Products
invalid_user wrong_pass Username and password

Usar datos en el test

import com.kms.katalon.core.testdata.TestDataFactory as TestDataFactory
import internal.GlobalVariable

// Cargar datos
def loginData = TestDataFactory.findTestData('LoginData')

// Iterar por cada fila
for (int row = 1; row <= loginData.getRowNumbers(); row++) {
    String username = loginData.getValue('username', row)
    String password = loginData.getValue('password', row)
    String expected = loginData.getValue('expected', row)

    WebUI.openBrowser('https://www.saucedemo.com/')

    WebUI.setText(findTestObject('Pages/LoginPage/input_Username'), username)
    WebUI.setText(findTestObject('Pages/LoginPage/input_Password'), password)
    WebUI.click(findTestObject('Pages/LoginPage/btn_Login'))

    WebUI.verifyTextPresent(expected, false)

    WebUI.closeBrowser()
}

Test Suite con datos

  1. Crear Test SuiteLoginSuite
  2. Añadir test case Login_Test
  3. En la configuración del test, activar Data Binding
  4. Vincular con LoginData
  5. Ejecutar → se repite por cada fila

8. Test Suites y ejecución

Crear Test Suite

Test Suite: SmokeTests
├── TC_Login
├── TC_VerProductos
├── TC_AgregarAlCarrito
└── TC_Checkout

Test Suite Collection (multi-navegador)

Test Suite Collection: CrossBrowser
├── SmokeTests → Chrome
├── SmokeTests → Firefox
└── SmokeTests → Edge
Configuración Valor
Ejecución Paralelo o secuencial
Navegadores Chrome, Firefox, Edge
Perfiles Desarrollo, Staging

9. Profiles (Variables de entorno)

Profile: default
  baseUrl = https://www.saucedemo.com/
  timeout = 10

Profile: staging
  baseUrl = https://staging.saucedemo.com/
  timeout = 15

Profile: production
  baseUrl = https://saucedemo.com/
  timeout = 5

Usar en el script:

import internal.GlobalVariable

WebUI.openBrowser(GlobalVariable.baseUrl)
WebUI.waitForElementVisible(obj, GlobalVariable.timeout)

10. Reportes

Reporte integrado

Tras ejecutar, Katalon genera automáticamente:

Sección Contenido
Resumen Total tests, pass/fail, duración
Detalle Cada test con paso a paso
Log Mensajes de log completos
Screenshots Capturas en caso de fallo
Video Grabación de la ejecución (si se activa)

11. Ejercicios

Ejercicio 1

Graba un test en Katalon que: abra SauceDemo, haga login, añada un producto al carrito y verifique que el contador del carrito es “1”.

Ejercicio 2

Convierte el test grabado a modo Script (Groovy) y organiza los objetos en el Object Repository por páginas.

Ejercicio 3

Crea un archivo Excel con 4 combinaciones de usuario/contraseña y ejecuta un test data-driven que pruebe todas.

Ejercicio 4

Crea un Test Suite con 3 tests y ejecútalo. Revisa el reporte generado e identifica las secciones.


Resumen

Concepto Descripción
Katalon Studio Plataforma de automatización todo en uno
Grabación Captura acciones en el navegador automáticamente
Object Repository Almacén centralizado de elementos web
Groovy Lenguaje de scripting (basado en Java)
Data-driven Tests con datos de Excel/CSV
Test Suite Agrupación de casos de prueba
Profiles Variables de entorno reutilizables