Clases y Debug
Hola a todos/as, espero estas entradas sean de ayuda, de curiosidad, de inquietud y que nos permitan querer seguir adquiriendo nuevos conocimientos. El mundo de QA es muy amplio y cada día tenemos nuevas herramientas que hacen que nuestras pruebas cumplan con la finalidad de entregar un producto con la menor cantidad de errores.
Es por ello que las pruebas automatizadas nos ayudarán a tener un pensamiento lógico para crear escenarios y automatizar casos en los cuales ahorremos el mayor tiempo posible y, sobre todo, que estos casos sean cada vez más eficientes.
Quiero contarte un poco más sobre mi experiencia. Comencé mi carrera con una pasantía como Programadora Jr. y me contrataron a los 3 meses. Fue muy bonito sentir que una empresa confía en ti y que te brinda una oportunidad de conocer el mundo real.
Ya dentro de la empresa, mis funciones eran desde modificar el color de un botón hasta crear o modificar una funcionalidad en un ERP. Allí comencé a utilizar herramientas de manejo de tickets y horas, ingreso de tareas y otras más. Como la empresa inició su transformación, entró al mundo de las Metodologías Ágiles, algo que permitió que adquiriera más conocimiento, aprendizajes y experiencias que respaldaron mi CV.
La finalidad de esta pequeña introducción es para mostrar que, a veces, iniciamos en un área y luego continuamos en otras, pero tener las herramientas ayuda mucho a abrir puertas y oportunidades, algo que debemos reforzar con los estudios para no quedarnos obsoletos.
Continuemos…
En la entrada anterior hablamos sobre POO, ¿recuerdad? Un tema muy importante que necesitas tocar a más profundidad es el de las clases.
Para escribir una clase es necesario que sepamos que existen diferentes tipos de datos que podemos ingresar en ella y te los muestro en este momento:
Variables y Tipos
Una variable en Java es un contenedor de datos representado en una palabra de memoria que contiene información. El tipo de dato almacenado en una variable depende del tipo de dato con que se declare esa variable.
Por ejemplo, en la siguiente tabla veremos los tipos con que se declaran los nombres de la variable y el tipo de dato que almacena la variable. Esta información es utilizada en todos los lenguajes de programación. Veamos la siguiente tabla:
Java posee dos categorías de tipos para las variables:
Las variables de tipos primitivos almacenan un valor que deben tener el mismo tipo de dato. Por ejemplo, una variable int guarda un valor entero como 1, 2, 0, -1, etc.
Esto quiere decir que, al colocar una variable de tipo int en otra variable int, esta copiará la información de la variable almacenada.
Las variables que brindan referencia a un objeto almacenan direcciones y no datos. Una referencia a un objeto es la dirección de un área de memoria destinada a representar ese objeto. Para hacer un llamado al área de memoria se utiliza el operador new.
Cuando asignamos una variable haciendo referencia a un objeto de una variable, se asigna la dirección y no el objeto referenciado. Esto significa que las dos variables mencionadas harán referencia a un mismo objeto.
Veamos un ejemplo: recuerda los pasos que anteriormente hemos realizado desde crear nuestro proyecto, tales como importar librerías, instancias, navegador, crear nuestras clases, etc. Aquí puedes verlos:
package com.selenium.automatizacion;
import java.util.Calendar;
import java.util.Date;
public class Navegador {
private String fabricante;
private Date fechaFabricante;
private String autor;
private boolean obsoleto;
public String getFabricante() {
return fabricante;
}
public void setFabricante(String fabricante) {
this.fabricante = fabricante;
}
public Date getFechaFabricante() {
return fechaFabricante;
}
public void setFechaFabricante(Date fechaFabricante) {
this.fechaFabricante = fechaFabricante;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public boolean isObsoleto() {
return obsoleto;
}
public void setObsoleto(boolean obsoleto) {
this.obsoleto = obsoleto;
}
Navegador() {
fabricante = "Desconocido";
fechaFabricante = new Date(Calendar.getInstance().getTimeInMillis());
autor = "desconocido";
obsoleto = false;
}
public String compatibleSistema (String sistema) {
String mensaje = "";
if (sistema.equals("windows") || sistema.equals("mac")) {
mensaje = "El navegador es compatible en esta solicitud";
}else {
mensaje = "El navegador no es compatible con esta solicitud";
}
return mensaje;
}
}
¿Para qué sirve un constructor en Java?
¿Te has preguntado qué es un constructor en Java? A mí también me costó un poco entender para qué servía, pero fue posible al tener claro que es una clase y un objeto, es decir, lo que hemos visto.
Un constructor crea un nuevos objetos y los inicializa. Los constructores pueden representarse de diferentes maneras, pero su principal función será orientada al objeto y no devolverá ningún valor. En otras palabras, debe tener el mismo nombre de la clase. También debo mencionarles que un constructor puede aceptar argumentos, lo que permite configurar valores.
Puedes generar tus constructores de la siguiente forma en IDE Eclipse:
En el ejemplo anterior, utilizamos todos los elementos de los temas vistos: métodos, clases, objetos, atributos, tipos de datos, etc. Además, hemos instanciado cuatro variables de diferentes tipos de datos y sus constructores con la finalidad de comprobar si un sistema es operativo o no.
Crearemos otra clase con el método main, en el cual implementaremos nuestros objetos de la clase Navegador.
Veamos el ejemplo:
package com.selenium.automattizacion;
public class ProgramaBase {
public static void main(String[] args) {
// TODO Auto-generated method stub
Navegador navegadorWeb1 = new Navegador ();
Navegador navegadorWeb2 = new Navegador ();
navegadorWeb2.setAutor("MacIntosh");
navegadorWeb2.setObsoleto(true);
System.out.println("Navegador Web 1: " + navegadorWeb1.getAutor());
System.out.println("Navegador Web 2: " + navegadorWeb2.getAutor() + " " + navegadorWeb2.isObsoleto());
}
}
Mostraré la respuesta en consola:
Podemos ver cómo utilizamos el objeto del navegador y ver de qué formas llenamos cada variable. En el caso del autor, en las líneas de código colocamos “autor = “desconocido”” y vemos cómo se llenan los datos que hemos solicitados. También vimos la respuesta del objeto Navegador web 2 obtuvimos el nombre del autor y con evaluación supimos si esta respuesta era true o false (en este caso nos mostró true).
Es así como jugamos con los objetos de una clase, cómo llamamos sus atributos, cómo podemos llenarlo y utilizarlo, sea para realizar un método, una función o mostrar información y así ver en consola los datos que necesitamos según el sistema.
Otro dato importante es “System.out.println(“”);”. Esta sección de código que nos proporciona Java sirve para imprimir resultados. Supongamos que queremos saber cuál contenido o dato tiene una variable. Simplemente colocamos la variable dentro de los () y nos mostrará su contenido en consola.
Cómo comenzar la depuración de Selenium
La depuración, conocida como Debug, ayuda a identificar fallas y a comprender el flujo de nuestro código. Es una forma más sencilla de entender el flujo de ejecución. La depuración también ayuda a identificar las fallas y descubrir la causa raíz de éstas de manera efectiva, al tiempo que facilita entender el código de otra persona.
Depuración en Selenium
Asignar puntos de interrupción
Primero comprendamos qué son los puntos de interrupción y cómo usarlos durante la depuración.
Los puntos de interrupción en nuestro script de automatización nos ayudan a detener la ejecución en un punto particular de nuestro código. Cuando se aplica un punto de interrupción en algún punto de nuestro código, esto ayuda a depurar el código paso a paso. Desde ese punto, podemos saber qué contienen las variables, cuáles valores regresa un método o qué contienen sus parámetros, entre otros.
Veamos cómo asignar puntos de interrupción y ejecutar nuestro código en modo de depuración:
- Paso 1: Coloca el cursor en la línea donde deseas aplicar el punto de interrupción y presiona Ctrl+Shift+B. También lo puedes hacer dando doble clic en la parte del lado izquierdo. En una línea de código, por ejemplo, busca donde quieras comenzar tu debug y justo cerca del número de línea, inicializar.
Aquí puedes ver que el punto de interrupción se aplica en la línea número 13.
Paso 2: Puedes colocar tu punto debug navegando y seleccionando Ejecutar > Alternar punto de interrupción en el editor de Eclipse.
Paso 3: Después de seleccionar la opción de Debug, tu código comenzará a ejecutarse en modo de depuración y la ejecución se detendrá en el punto de interrupción que aplicaste en la línea 13.
Paso 4: Hay otra pestaña de variables que muestra los valores asignados a las variables durante la ejecución. También puedes ver cómo cambian los valores de las variables a medida que el flujo de ejecución pasa de una línea a otra.
Este es otro ejemplo:
Podemos notar cuáles datos nos muestran las variables que declaramos y es así como depuramos nuestro código (o el de alguien más) y conocer el flujo de trabajo de cada aplicativo. Realizar estas actividades nos ayudará a encontrar del inicio hasta el final de un flujo y conocer los métodos o funciones usados en cierta sección del aplicativo. Puedes utilizarlo e ir, poco a poco, entendiendo más sobre su funcionalidad.
Ahora bien, hemos realizado un par de ejercicios que te ayudarán a reflexionar sobre cómo utilizar los temas que hemos puesto en práctica en estas líneas de código. Te recomiendo que realices estos ejercicios para mejorar tus habilidades y dominar lo visto en este artículo.
Si tienes alguna duda, escríbeme a mi correo marcela_amaya9412@hotmail.com y con gusto las resolveremos en conjunto.
También puedes realizar búsquedas en la documentación oficial. Aquí te dejo el link.
¡Nos leemos pronto!
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.