0% encontró este documento útil (0 votos)
102 vistas28 páginas

Curso-Testing Selenium

Este documento resume los principales conceptos y marcos de trabajo para pruebas de software. Describe varios frameworks como Log4j, Maven y TestNG que son útiles para registrar acciones, descargar librerías y generar informes de pruebas. También explica los principios básicos de las pruebas de software, los diferentes tipos de pruebas como unitarias, de regresión y de aceptación, y los métodos de prueba como las pruebas estáticas, dinámicas y de caja negra y caja blanca. Por último, discute conceptos á

Cargado por

Luis Padilla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
102 vistas28 páginas

Curso-Testing Selenium

Este documento resume los principales conceptos y marcos de trabajo para pruebas de software. Describe varios frameworks como Log4j, Maven y TestNG que son útiles para registrar acciones, descargar librerías y generar informes de pruebas. También explica los principios básicos de las pruebas de software, los diferentes tipos de pruebas como unitarias, de regresión y de aceptación, y los métodos de prueba como las pruebas estáticas, dinámicas y de caja negra y caja blanca. Por último, discute conceptos á

Cargado por

Luis Padilla
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 28

Frameworks: Log4j (Log “Registro” de acciones, cuando se da clic y falla o pasa, registrar todo) ,

Maven (Descargar librerias), Data Driven (Excel) , Data Provider (Programación Descriptiva,
tomando datos desde un archivo), TestNG (Para comentarios y Reporteo).

What are the principles of Software Testing?

Testing shows presence of defects


Exhaustive testing is impossible
Early testing
Defect clustering
Pesticide Paradox
Testing is context depending
Absence of error fallacy

El Testing de software: es el proceso de evaluar un sistema o sus componentes con el intento de


saber si satisface o no los requerimientos específicos. (with the intent to know if it satisfies or not)

El Testing: es la ejecución de un sistema en orden para identificar cualquier brecha or bug

Prueba: Operación técnica que consiste en determinar una o más características de un proceso,
producto o servicio, mediante un procedimiento específico (by a especific procedure).

Error: Acción humana que produce un resultado incorrecto.

Defecto: Es el resultado de un error, conocido como bug (known as bug) y puede generar una
falla.

Falla: (deviation) Desviación del componente o sistema en comparación (compared) con el


resultado esperado.

Ciclo de Vida de un Defecto:

Como funciona el flujo de vida de un defecto: Se manejan diferente, acorde a cada proyecto,
siguen un patron(Pattern) que es generar el defecto, definir que prioridad y severidad.

Seguir el defecto paso a paso hasta (Until) llegar al problema(Get to the problem) , determinar si
es un defecto o un error,

Estados de un defecto: Nuevo, Asignado, Activo, Rechazado, Solucionado, Reabierto, Para probar,
verificado Y Cerrado.

And If it was mark like solved, but it is not, you need to detail in what step
the expectation were not met compared to the especific requirment.
Severidad: Se refiere a Cuanto tiempo queda(left) para salir a producción, cuánto tiempo lleva(takes)
resolver el defecto, quien está disponible para arreglarlo, cuán(how) importante es para el negocio
arreglarlo, cual (What) es el impacto, cual la probabilidad de ocurrencia(occurrence - the number of
times its being repeated) y cuál es el grado de efectos colaterales que puede causar el defecto (and
what is the degree of side effects that the defect can cause.), the deliver times, you need to check every
regard and considerations.

Prioridad: La mayoría de veces el negocio define la prioridad, o el lider de pruebas, esto puede
cambiar con el tiempo, pero la mayoría de veces esto (la prioridad) fue definido antes( before)
dependiendo el calendario y que otros defectos hay en la lista. La prioridad puede pensarse (thought)
como el orden con el que los defectos tienen (might be) que ser resueltos en un tiempo específico.

Características de una prueba:

• Precisa (accurate).
• Efectiva(effective).
• Trazable(traceable).
• Evolutiva(evolutive-evolutionary).
• Eficiente(efficent).

Metodología de Desarrollo ágil de software


Es usada dentro de la automatización de pruebas para reducir costos (“Tiempos”), reduciendo el
tiempo del desarrollo de las pruebas(test development), eliminando los pasos innecesarios dentro
de los flujos. (eliminating the unnecessary steps within the flows.)

Se debe automatizar en escenarios donde se repitan los casos, como en las pruebas de regresión y
pruebas de humo.

Si es un ambiente que cambia constantemente, es preferible usar el Testing Manual.

(If its a constantly changing environment)

Para esto se evalúan tiempos y costos.

SCRUM ES UN FRAMEWORK, COMO UN ALGORITMO PARA AGILIZAR (Speed up) SPRINTS (timeline
of 2 weeks to 1 month to ENTREGABLES- deliverable) or shippable a product.

Documentos:

Caso de Prueba (Test Case): Como hacerlo (Documento donde se anexa todas las
funciones que el programa es capaz de realizar y representan un conjunto de entrada de datos
que ejecutan un escenario de casos (case scenario) para obtener los resultados de datos de salida),
habrá un caso de prueba positivo y un caso de prueba negativo, se pone cada paso de cómo llegar
al resultado (you put every step of how to get to the result), la información que se aplicará dentro
del paso(will be applied within the step), resultados esperados, resultado actual (current result),
estatus y comentarios(comments).

Escenario de Prueba (Test Scenario): Que hacer, verificando si tiene que ser positivo o
negativo cada uno de los resultados de la prueba.

Plan de Pruebas (Test Plan): Es un documento que detalla los objetivos, recursos y
procesos para una prueba específica de una aplicación de software.
Métodos:
Estáticos:
Revisión de documentación y código fuente (source code).

Dinámicos:
Estructurales, White box: Se conoce la estructura y la lógica interna del software y el codigo

Comportamiento, Black box: No se sabe que es lo que contiene dentro, no se puede ver el codigo
que contiene y se trabaja mediante entradas o salidas que se conocen.

Grey box: combinación entre white y black.

Niveles:

Testing funcional, que se basa en las especificaciones dadas.

Testing no funcional, que involucra todo lo que no es funcional como performance, seguridad,
interfaz de usuario, etc.

Pruebas unitarias, mediante casos de prueba específicos de ciertos códigos o áreas. (El propósito es
probar los componentes individuales y mostrar que el código funciona).

Pruebas de regresión, se usa para verificar que se arreglan bugs y errores y minimizar problemas,
ejecutando casos de prueba ciertas veces mediante scripts, verificando las áreas en riesgo.

Re-Test, Verificar que no se afectaron otras áreas relacionadas.

Pruebas de aceptación, que contienen todas las especificaciones de calidad

Pruebas de stress, realizando múltiples solicitudes y verificando el comportamiento.

Pruebas de humo, Son aquellas pruebas que pretenden evaluar la calidad de un producto
de software previo a una recepción formal, ya sea al equipo de pruebas o al usuario final, es decir,
es una revisión rápida del producto de software para comprobar que funciona y no tiene defectos
que interrumpan la operación básica del mismo, no se sabe cómo es o cómo funciona el sistema, se
suelen hacer cuando hay nuevas versiones de la aplicación.

Pruebas de Sistema, para detectar errores dentro del sistema. (El propósito es probar la
funcionalidad integral del sistema “end to end”).

Pruebas Exploratorias, Cuando no se cuenta con información.

Pruebas de integración, El propósito es identificar defectos en las interfaces y las interacciones


entre los diferentes componentes y sistemas.
MANUAL O AUTOMATIZADO?

It depends on how constant the changes are or if it is repetitive.

Las pruebas automatizadas tienen un proceso de 6 fases:


1. Tomar la decisión para tomar las pruebas y generación de propuesta de herramienta de
prueba (Depende de que tan constante son los cambios o si es repetitivo).
2. Proceso de introducción de pruebas automatizadas.
3. Planificación, diseño y desarrollo de prueba.
4. Ejecución y gestión de pruebas.

SPRINT:
What is a Sprint?

In Scrum, the project is divided into Sprints. Each Sprint has a specified timeline (2 weeks to 1 month).

This timeline will be agreed by a Scrum Team during the Sprint Planning Meeting. Here, User Stories are split
into different modules. The end result of every Sprint should be a potentially shippable product.

Virtualización, como lo que hacia con virtualbox, al emular windows, docker es parecido pero no lo he usado

JFRAME Para aplicaciones graficas

Scrum
Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar
colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto.

En Scrum un proyecto se ejecuta en ciclos temporales cortos y de duración fija (iteraciones que normalmente
son de 2 semanas, aunque en algunos equipos son de 3 y hasta 4 semanas,

límite máximo de feedback de producto real y reflexión). Cada iteración tiene que proporcionar un resultado
completo, un incremento de producto final que sea susceptible de ser entregado con el mínimo esfuerzo al
cliente cuando lo solicite.

What is an impediment in Scrum?


Impediments are the obstacles faced by the scrum team. Any obstacle that keeps the team from getting work
done and that slows velocity is known as Impediment. Scrum Master is responsible for removing impediments.

In Agile Scrum interviews, you may be asked to give some examples of impediments.

What are the examples of impediments?


Impediments come in many forms. Some of the impediments are mentioned below

Resource unavailability (Sick team member)

Lack of management support

Business issues

Lack of skill

Technical, operational issues

Even external issues such as weather

List out Test Deliverables? - ENTREGABLES EN TESTING


Test Strategy

Test Plan

Test Scenarios

Test Cases/Scripts

Test Data

Requirement Traceability Matrix (RTM)

Defect Report/Bug Report

Test Execution Report

Graphs and Metrics

Test summary report

Test incident report

Installation/configuration guide

User guide

Test status report

Weekly status report (Project manager to client)

ALM
Se usa principalmente para administrar y gestionar los entornos de prueba generados.

Requerimientos: Se agregan dependiendo del documento de requerimientos. (Número de


requerimiento, ID del requerimiento, Nombre del Requerimiento, Descripción y Criterios de
aceptación)

Testing>Test Plan: Se pone cada uno de los niveles de prueba a ejecutar y se agregan los test
(Validos e inválidos) de cada uno de los requerimientos.
Test Plan>”Prueba Creada”>Design Steps: Se ingresa la información de la documentación de Casos
de Prueba, en descripción se agrega el paso a realizar y en resultados esperados las validaciones
que se esperan, junto con los resultados.

Test Plan>”Prueba Creada”>Parameters: Se agrega el nombre y los valores ( como usuario y


contraseña).

Test Plan>”Prueba Creada”>Req. Coverage: Para verificar que los casos de prueba sean los del
requerimiento seleccionado. Se selecciona el requerimiento dentro del caso, seleccionando dentro
del “Requeriment Tree”, Al caso de prueba deseado.

O Dando click dentro del requerimiento en “Requirements”, “Coverage Analysis”.

Test Lab: Donde se ejecutan los casos de prueba.

Design Pattern (SingleTon), cuando existe una clase, se desea una y sólo una instancia del
objeto, mediante la creación de un metodo estático que no permita instanciar más de una vez el
objeto,

manteniendo la misma instancia en todas las nuevas instancias.

Se crean los metodos getter y setter de la clase creada.

Esto es creado para usarse con los hilos y que no se pueda instanciar mas de un proceso de un tipo
a la vez.

public class Logger


{
private static Logger log;

public static synchronized Logger getInstance(){


if(log == null){
log = new Logger();
}
return log;}

MVC; Modelo Vista Controlador (MVC) es un estilo de arquitectura de software que separa los
datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.

View (Se hace la peticion al controlador para que el modelo traiga ciertos datos)- Controller (El
controlador le indica que datos debe mostrar)- Model (El modelo trae los datos de la BD y los
muetra los datos a la vista)

El Modelo que contiene una representación de los datos que maneja el sistema, su lógica de
negocio, y sus mecanismos de persistencia.
La Vista, o interfaz de usuario, que compone la información que se envía al cliente y los
mecanismos interacción con éste.

El Controlador, que actúa como intermediario entre el Modelo y la Vista, gestionando el flujo de
información entre ellos y las transformaciones para adaptar los datos a las necesidades de cada
uno.

REST: REST es cualquier interfaz entre sistemas que use HTTP para obtener datos o generar
operaciones sobre esos datos en todos los formatos posibles, como XML y JSON.
• Cada petición HTTP contiene toda la información necesaria para ejecutarla, lo que permite que ni
cliente ni servidor necesiten recordar ningún estado previo para satisfacerla. Aunque esto es así,
algunas aplicaciones HTTP incorporan memoria caché.
• Las operaciones más importantes relacionadas con los datos en cualquier sistema REST y la
especificación HTTP son cuatro: POST (crear), GET (leer y consultar), PUT (editar) y DELETE
(eliminar).

REST AND SOAP DIFFERENCES


REST API has no has no official standard at all because it is an architectural style. SOAP API, on the other
hand, has an official standard because it is a protocol.

RESTAPIs uses multiple standards like HTTP, JSON, URL, and XML while SOAP APIs is largely based on
HTTP and XML (Use Request and Response).

JAVA
Herencia: si se hereda una clase a otra, en el constructor de la clase hijo se debe llamar a la clase padre,
utilizando la palabra reservada "super(param);", con los parametros de la clase padre.

La clase hija tendra que tener todos los metodos de la clase padre, y estos metodos se pueden modificar,

mediante la sobrecarga de los metodos "override"

class Empleado extends Persona{

public Empleado(String nom, double sueldo){super(nom); sueldo = sueldo;}

Casting:
El Casting sirve para convertir las variables de un tipo a otro.

double num1=2.5;

int num2= (int) num1;

syso(num2); = 2

-------------

Empleado[] empleados = new Empleado[5];

empleados[5] = new Jefatura("Luis");


Jefatura jefaFinanzas = (Jefatura) empleados[5]; //Al hacer esto se convierte el objeto de tipo empleado a tipo
Jefatura

esto depende de la herencia, un empleado puede ser que no pueda ser un jefe, ya que las clases padres no
pueden convertirse en las hijas.

Final:
las clases, las variables y los metodos pueden ser final,

cuando una variable se convierte en final, pasa a ser una constante.

Cuando una clase es final, no puede heredar, por lo tanto las clases final no se pueden heredar.

cuando un metodo es final, no se puede modificar.

private final String nombre;

Double Numero = Math.Pi;

Clases abstractas: Son clases más genericas, que se usan cuando se requiere un metodo para
diferentes clases,

un metodo que dará resultados diferentes dependiendo de quien lo solicite, cuando existe 1 metodo
abstracto,

se debe declarar la clase como abstracta. PUEDE TENER METODOS NORMALES Y METODOS ABSTRACTOS

Este metodo abstracto se debe sobreescribir en la clase hijo y la respuesta depende de la clase y puede ser
diferente y se debe llamar al constructor de la clase padre mediante la llamada a la clase super.

abstract class Persona{

public abstract String dameDescripcion(); //Esto es un metódo abstracto

class Empleado extends Persona{

public Empleado(String nom, double sueldo){super(nom); sueldo = sueldo;}

public String dameDescripcion(){return "Este empleado" + nom + "tiene un sueldo de " +sueldo;}

public class usoPersona{

Alumno alumnoInstancia = new Alumno ("Luis") //INSTANCIA DEL OBJETO DE FORMA DIFERENTE

Persona[] personaCreada = new Persona[2];


Polimorfismo: muchas formas, un objeto se puede comportar de diferente forma, dependiendo del
concepto.

personaCreada[0] = new Empleado ("Arturo", 2000) //EJEMPLO DE POLIMORFISMO, UN EMPLEADO PUEDE


SER UNA PERSONA O UN ALUMNO

personaCreada[1] = alumnoInstancia //SE AGREGA LA INSTANCIA AL ARRAY

for (Persona p: personaCreada){System.out.println(p.dameNombre()+ p.dameDescripcion()); }

Las interfaces son clases que tienen direcrtices (metodos) predefinidos, una clase que implementa una
interfaz,

SE USA POR QUE NO SE PUEDE HEREDAR MAS DE 2 CLASES (HERENCIA MULTIPLE), PERO SI SE PUEDEN
IMPLEMENTAR O HEREDAR VARIAS INTERFACES

debe contener obligatoriamente los metodos de la interfaz, un ejemplo de interfaces es la api de java, como
Java Util

no se pueden instanciar (no uso de new), no se implementan. no tienen variables, si constantes

TODOS SUS METODOS SON PUBLICOS Y ABSTRACTOS, POR LO TANTO SI HAY VARIAS INTERFACES QUE
HEREDAN METODOS, DEBEN DE MODIFICARSE EN

DEBEN DE IMPLEMENTARSE LOS METODOS EN LA CLASE HIJA DE FORMA OBLIGATORIA YA QUE SON
ABSTRACTOS TODOS LOS METODOS.

class Jefatura extends Empleado implements Interfaz1, Interfaz2{

Interfaz1 instanciaInterfaz = new Jefatura("Laura"); //No se puede instanciar una interfaz Interfaz1 in = new
Interfaz1, pero si a la clase

PARA COMPROBAR SI UNA INSTANCIA PERTENECE A UNA CLASE se utiliza “INSTANCEOF”


if(instanciaInterfaz instanceof Jefautra){syso.println ("es de tipo jefatura");} //devuelve un valor, si el objeto
pertenece a una clase

Array:
Ordenar arreglos con ArrayList y Sort.

Ordenar arreglos con Arrays.Sort(); y implementando Comparable, que tiene un metodo abstracto
compareTo que se tiene que agregar a la clase.

ArrayList<Empleado> lista =new ArrayList<Empleado>();

lista.add(new Empleado("Jose"));

lista.Sort(); //ORDENA

System.out.println(lista.size()); //DEVUELVE EL TAMAÑO DEL ARREGLO

lista.trimToSize(); //OPTIMIZA RECURSOS


lista.set(0, new Empleado("Jesus")); //MODIFICA LA POSICION 0 DEL ARREGLO Y LA CAMBIA

for (Empleado e : lista){ System.out.print(e.metodoEmpleado());}

TIENE VARIAS OPCIONES, ITERATOR, HASNEXT, NEXT, REMOVE

Threads: (Unit of a process)


Es la forma de llevar mas de un proceso a la vez en el programa, se usa para aprovechar todo el sistema de
procesamiento del CPU.

public class Proceso extends Thread{

public Proceso(String msg){super(msg);}

public void run(//EL CODIGO QUE SE DESEA EJECUTAR){}

public class Proceso2 extends Thread{

public Proceso2(String msg){super(msg);}

public void run(//EL CODIGO QUE SE DESEA EJECUTAR){}

public class ThreadDemo_Ejecutable{

public static void main (String[]args){

Thread hilo = new Proceso("Proceso 1");

Thread hilo2 = new Proceso2("Proceso 2");

hilo.start();

hilo2.start();

Excepciones: Se maneja la excepciones con Try, Catch


En try, va el codigo, las acciones que queremos que intente

El catch atrapa los erroreres

finally: se usa para complementar el try y catch y es un codigo que siempre se va a ejecutar

Try{CODIGO}

catch(Exception e){syso.out.println("El error");}

finally{syso.out.println("Se ejecuto correctamente");}


Encapsulacion: Sirve para hacer colecciones de datos, dependiendo de los modificadores de acceso de
clases, metodos y variables.

los modificadores de acceso cambian la visibilidad de las cosas.

Modificadores de acceso:

publico = clase,package, subclase, todos

protected = clase,package, subclase

private = clase

por defecto = clase, package

Instancia: Un objeto es una instancia de clase


para instanciar un objeto se utilizan los metodos GETTER Y SETTER,

SETTER Y GETTER
para poder modificar una clase, captar o proporcionar informacion y tener comuinicacion entre clases.

El metodo getter, devolvera el valor del objeto de la clase, que tenga en el constructor definido.

public class UsoAlgo{

public static void main (String[]args){

Algo algo = new Algo(); //INSTANCIA DEL OBJETO

algo.cambiaAlgo("sombrero"); = "sombrero"
algo.dimeAlgo(); = "algo"

SETTER: public void cambiaAlgo(String alg){algo=alg;}

GETTER: public String dimeAlgo(){return "algo";}

SETTER Y GETTER:

Enums(enumerados): objeto de la api de java, de nombre enum


es una variable objeto, en la cual solo se podra almacenar datos del mismo tipo.

SE Hace una instancia a la clase ENUM, los metodos son estaticos "Static", lo que hace que no se puedan
cambiar.

Estos tipos enums, permiten la programacion de constructores y metodos getter y setter.

public class PruebaEnums{

enum Talla{MINI,MEDIANO}; //Unicamente MINI Y MEDIANO se podran usar al instanciar Talla.

public static void main (String[]args){Talla s= Talla.MINI; Talla m = Talla.MEDIANO;}

Modularización: Es cuando un muchos o todos los objetos (o Clases) se unen para formar un todo
(Programa).
Esto sirve para que cuando alguna parte (Módulo) del programa se descomponga, las demás (Módulos )sigan
funcionando.

Metodo constructor: da un estado inicial al objeto de clase


Clase: Una clase es un prototipo o template que indica qué características van a tener
y cómo se van a comportar los elementos creados a partir de dicha clase.

Existen dos tipos de clases en java, las clases Propias (Las que creamos nosotros) y las Predefinidas

Objeto: Un objeto es una instancia de clase


Los objetos son los elementos creados a partir de las clases.
Tiene propiedades y comportamiento.

SOBRECARGA: OVERRIDE METHOD - sobreescritura del metodo

Override: Es cuando se modifica el texto de un método en una clase hijo.


Overload: Es cuando se crean varios métodos con diferentes datos, por ejemplo, varios métodos
constructores que reciben diferentes parámetros, o métodos con el mismo nombre, pero con void.

En selenium:
Override Method: Selenium WebDirver provides an interface WebDriver, which consists of abstract
methods getDriver() and closeDriver(). So any implemented class with respect to browser can
override those methods as per their functionality, like ChromeDriver implements the WebDriver
and can override the getDriver() and closeDriver().
Lets take a simple example to understand this. We have two classes: A child class Boy and a parent
class Human. The Boy class extends Human class. Both the classes have a common method void
eat(). Boy class is giving its own implementation to the eat() method or in other words it is
overriding the eat() method.

Tipos Primitivos:
• Números enteros (byte, short, int, long).
• Números reales (float, double).
• Carácter (char).
• Booleano o lógico (boolean).

Metodo Main:
Es el punto de entrada de la aplicación, en donde comienza la ejecución.
Siempre es public y static

No retorna ningún valor, ya que es void, solo retorna un tipo de devolución void.

Cualquier valor que se introduzca, se transformara en string a la hora de ejecutarse.

public static void Main(String[] args) {

String: Es una Clase


Manipulación de Strings:
String minombre = “Luis”; //En este caso minombre es una instancia de la clase String, un objeto de tipo String.

minombre.length(); //Devuelve el número de la longitud de la cadena de caracteres

minombre.charAt(2); //Nos devuelve el carácter en la posición 2, en este caso sería la “i”.

minombre.substring(x,y); //Nos devuelve una sub cadena, empezando por la posición x y terminando en la y.

minombre.equals(“Luis”); //Devuelve True si es igual, False si no, distingue mayúsculas y minúsculas.

minombre.equalsIgnoreCase (“Luis”); //Devuelve True si es igual, False si no, no importan mayúsculas.

API JAVA:
Es una Api predefinida, propia de JAVA. (Son Clases Organizadas en Paquetes)

Java y Javax, java.util, java.io, java.awt , java.lang (Cosas de Strings, Tipos de datos, Math),
javax.activity, javax.annotation y se agregan con Import, como “import java.util.*;”.

import java.util.*; //Aquí se está indicando que se requiere traer todas las clases del paquete
java.util, con el “*” se importan todas las clases, por lo cual ocupa más memoria, si se desea ocupar
menos memoria, se importa la clase directamente.

Categorias de Exceptions:
• Checked Exception: Is an exception that is tipically a user error or an error that cannot be
foreseen(Prevenir, ver a futuro) by the programmer.
• Runtime Exception: Is an exception that occurs that probably could have been avoided by the
programmer .
• Errors
SELENIUM Y GENERAL
Lenguajes de programación que he usado: Java, Gosu, Pyton, VBS, C#

IDE que he usado: Eclipse, Visual Studio, Netbeans

Editores de texto que he usado: NotePad ++, Sublime Text

Metodologías que he usado: Agile, WarterFall

FrameWorks: Selenium, TestNG, JUNIT

Herramientas: UFT, Postman, SoapUI, Eclipse with Maven

POM: Project Objet Model, Its a XML File who describe the project and where you can put your
plugins and dependencies like libraries

Librerias que he usado: selenium, maven, testng

APIS que he usado: Guidewire y una demo con postman utilizando las apis de facebook

How to handle exceptions on selenium:

PARA CORRER EN UN TEST EN SELENIUM DESDE MAVEN, SE UTILIZA


EN EL CMD: LA RUTA: MVN PACKAGE

What is an Exception
An Exception is an event, which occurs during the execution of a program, that
disrupts the normal flow of the program’s instructions or in simple words, any
issue which makes your test case stop in between the execution is an Exception.
Difference between Error and
Exception
An Error “indicates serious problems that a reasonable application should not try
to catch.”

An Exception “indicates conditions that a reasonable application might want to


catch.”

Whenever an error occurs while executing a statement, creates an exception


object and then the normal flow of the program halts and it tries to find someone
that can handle the raised exception. The exception object contains a lot of
debugging information such as method hierarchy, line number where the
exception occurred, type of exception etc. When the exception occurs in a
method, the process of creating the exception object and handing it over to
runtime environment is called “throwing the exception”.

What is Exception Handling


Exception handling refers to the anticipation, detection, and resolution of
programming application, and communications errors. It is the block of code that
processes the exception object and helps us by giving us a chance to act on it.

Why Exception Handling is Important


1) Think of a situation where you have got an exception and you want to print
some custom message in your logs, so that it can be understandable by the whole
team.

2) There can be some situations where you want to just eat up the exception and
want your test to carry on with rest of the execution.

3) In case you want to perform some series of steps on occurring of an certain


exception for e.g. if you got an exception because a product is out of stock, that
product is no longer displayed on the page and you want you to go with another
product available on the page.

4) In case you want to handle some certain kind of exception in Selenium like
ElementNotSelectableException, ElementNotVisibleException,
NoSuchElementException etc. exceptions.

Different Exceptions in Selenium


There is a complete list of Exceptions mentioned on the Selenium Doc which you
may or may not encounter in course of your testing.

Most common Exceptions:

1) NoSuchElementException : FindBy method can’t find the element.


2) StaleElementReferenceException : This tells that element is no longer appearing
on the DOM page.

3) TimeoutException: This tells that the execution is failed because the command
did not complete in enough time.

4) ElementNotVisibleException: Thrown to indicate that although an element is


present on the DOM, it is not visible, and so is not able to be interacted with

5) ElementNotSelectableException: Thrown to indicate that may be the element is


disabled, and so is not able to select.

https://www.youtube.com/watch?v=6cgU8302FaY&list=PLjM3-neCG6qwYzuAGvZrRnhJ2tt-
4WiG4&index=3

https://www.quora.com/What-is-method-overriding-in-selenium-WebDriver

https://www.toolsqa.com/selenium-webdriver/exception-handling-selenium-webdriver/

UFT – (Anteriormente QTP)


Las variables se tienen que declarar como “Dim”, Ej: Dim a,b

Para mostrar un mensaje de cada de texto, se declara como “msgbox”, Ej: msgbox a

Operadores lógicos: NOT, AND, OR

Concatenación: Ej: str1= a&b

Para generar un InputBox, para pedir datos, se usa Inptbox, Ej: str=Inputbox(“Pon Datos”)

Para regresar el tipo de la variable usada, msgbox typename(a)

Script:

while Browser("Banamex").Page("Banamex").Exist = False

wait 1

Wend

Browser("Banamex").Page("Banamex").WebButton("ENTRAR").Click

wait 5

Browser("Banamex_2").Page("Banamex").WebButton("Continuar").Click

Browser("Banamex_2").Page("Banamex_2").Link("Pago a GDFRealice el pago").Click

Browser("Banamex_2").Page("Banamex_2").Link("Pago a GDF").Click
Browser("Banamex_2").Page("Banamex_2").Link("Impuestos y Contribuciones").Click

TablaImporte = DataTable ("Importe", dtGlobalSheet)

Browser("Banamex_2").Page("Banamex_2").Frame("Frame").WebEdit("Importe").Set TablaImporte

TablaCuenta = DataTable ("Cuenta", dtGlobalSheet)

Browser("Banamex_2").Page("Banamex_2").Frame("Frame").WebList("Cuenta").Select TablaCuenta

TablaPruebas = DataTable ("Pruebas", dtGlobalSheet)

Browser("Banamex_2").Page("Banamex_2").Frame("Frame").WebEdit("Pruebas").Set TablaPruebas

Browser("Banamex_2").Page("Banamex_2").Frame("Frame").WebButton("Aceptar").Click

Browser("Banamex_2").Page("Banamex_2").WebEdit("WebEdit").SetSecure
"5ace782035791f7c1ecfb22f194e4b5bffb72e37f4a3"

Browser("Banamex_2").Page("Banamex_2").WebButton("Continuar").Click

Script2:

Browser("index:=0").Navigate "https://www.capgemini.com/"
wait 2
Browser("index:=0").Navigate "https://www.google.com/"
wait 2
Browser("index:=0").Back
wait 2
Browser("index:=0").Close
wait 2

SELENIUM CODIGO
POM.XLM
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>SeleniumTest</groupId>

<artifactId>Test1</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>Automation Maven</name>

<description>Automation Project</description>

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.8.0</version>

</plugin>

</plugins>

</build>

<dependencies>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>3.141.59</version>

</dependency>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.10</version>

<scope>test</scope>

</dependency>

</dependencies>
</project>

package seleniumAutomation;

//https://www.youtube.com/watch?v=iGxG9U56hvQ&list=PLjM3-neCG6qwYzuAGvZrRnhJ2tt-4WiG4&index=2

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.support.ui.ExpectedConditions;

import org.openqa.selenium.support.ui.Wait;

import org.openqa.selenium.support.ui.WebDriverWait;

import org.testng.Assert;

import org.testng.annotations.AfterMethod;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.Test;

import Helpers.Helper;

public class FirstTest {

private WebDriver driver;

private By texto;

@BeforeMethod

public void OpenFacebookPage() {

String ulr = "http://www.facebook.com";

System.setProperty("webdriver.chrome.driver", "C:\\SeleniumJar\\chromedriver.exe");

driver = new ChromeDriver();

WebDriverWait wait = new WebDriverWait(driver, 60);

// Se maximiza la ventana

driver.manage().window().maximize();

String baseUrl = "http://www.facebook.com";


driver.get(baseUrl);

// se hace un wait de 5, se puede crear un metodo en otra clase y mandarlo a

// llamar, para no tener que hacerlo siempre

Helper helper = new Helper(driver);

helper.waitSeconds(10);

@Test

public void validacionesTest1() {

Helper helper = new Helper(driver);

helper.Login("asdasd", "asdassd");

// Para hacer una validación con Assert

helper.waitSeconds(5);

Assert.assertTrue(driver.findElement(By.xpath("//div[@role='alert']")).getText()

.contains("The email or phone number you’ve entered doesn’t match any account."));

@Test

public void validacionesTest2() {

Helper helper = new Helper(driver);

helper.Login("[email protected]", "contraseña1243");

//Para hacer una validación con Assert

helper.waitSeconds(5);

Assert.assertTrue(driver.findElement(By.xpath("//div[@role='alert']")).getText()

.contains("The email you’ve entered doesn’t match any account."));

@Test

public void validacionesTest3() {

Helper helper = new Helper(driver);

helper.Login("asdasd", "asdassd");

// Para hacer una validación con Assert


helper.waitSeconds(5);

Assert.assertTrue(driver.findElement(By.xpath("//*[@role='alert']")).getText()

.contains("The email or phone number you’ve entered doesn’t match any account. "));

Assert.assertTrue(driver.findElement(By.xpath("//*[contains(text(),'The email')]")).isDisplayed());

@AfterMethod

public void cerrar() {

driver.close();

package Helpers;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.support.ui.WebDriverWait;

public class Helper {

private WebDriver driver;

//Se agregan elementos de tipo By Objects

private By emailField;

private By passwordField;

private By loginButton;

public Helper(WebDriver driver) {

this.driver = driver;

emailField = By.id("email");

passwordField = By.id("pass");
loginButton = By.xpath("//*[@id=\"u_0_2\"]");

public void waitSeconds(int seconds)

try {

Thread.sleep(seconds*1000);

} catch (InterruptedException e) {

e.printStackTrace();

public void Login (String email, String pass)

driver.findElement(emailField).clear();

driver.findElement(emailField).sendKeys(email);

driver.findElement(passwordField).clear(); //para limpiar el campo en caso de que este tenga algo

driver.findElement(passwordField).sendKeys(pass);

//driver.findElement(passwordField).submit(); //es como dar enter, se usa en la página de google para hacer
busquedas

driver.findElement(loginButton).click();

Ive = He

Ide like = Me gustaría = I Would like

I Had = Tuve

I Did = Hice/Lo hice


I Was = Estuve/Era

I Went = Fuí

I Have = Tengo

That = Que/Ese,Esa

Than = de lo Que

I Didnt have to do it = No tuve que hacerlo

Mediante = through

Instead = En vez

Against = EN contra

Compared= En comparación

Conjunto = Collection/Group/Set

Set = establecer/fijar

las demas = the others

preocuparte= worry

In my previous work, I worked for 6 months in the development area, my main activities were the creation of modules

in an insurance application using java code/ and its own graphic tool "guidewire", making queries to tables, to obtain the
required information and creating web services to connect the aplication.

After that I spent 2 months in the QA area, my activities here were, do integration test, and basicly my activities here was
checking web se rvices with soap ui and creating test scenarios and unit test.

And in my last project i was in the automation area for more than 1 year, creating scripts by test cases

I had two basic trainings , with selenium and UFT like automation tools for one month,

the client decided to used UFT as the automation tool for that proyect, so in all the time I was there, i used UFT,

they also teach us how to use ALM to manage the generated test environments, after that we had all the workload,

The first thing there I did was to automate all the test cases that i recived, creating the scripts and give them
maintenance.

I Run these test from ALM to check all the test cases. in case there was a defect or bug, I uploaded the defect on alm, I
assigned a responsible person and before

i generate the necessary documentation to replicate step by step the defect, when the developer tells me that he was
fixed the bug,

i proceed to execute the scripts again in alm, in the case that an element on the page was changed,

i Proceed to perform the maintenance of the scripts changing the properties in UFT,

in case the error or the problem has not been solved, i proceed to generate a document of why i considered that it was
not resolved the defect or bug.
A common day was check the progress of the tasks ive been working on, and update their status so i can get a better idea
of what i was doing,

identify any blockers/stoppers that might exist and follow up on them on priority,

after that working on the test cases i left the day before and take note on any concern regarding test case desing and
functionality.

On Saturday - Yesterday

I woke up early like 8 O'clock AM to clean my house and to take my dogs for a ride.

Before of that i took a breakfast, i thing it was fruit.

I also had to

do some homework, and prepare somethings I needed for my english clasess.

I Watched some funny videos

I finished cleaning the house and

listened to my favorite music from The killers while doing so. For lunch I

ate pizza, and i got tired easly for clean all my house,

because of that I

had to go to the bed early. That’s what I did (last weekend- Yesterday).

Test Data = Informacion

Prueba de Integración = Es comprobar que despues de un cambio,

las actualizaciones se reflejen en los sistemas conectados, por ejemplo una base de datos de una página en la interfaz de
otra página.

Como priorizar la creación de test cases: Se prioriza los defectos que impiden (Prevent) el funcionamiento del sistema o
bloquean alguna funcionalidad importante, tienen menos prioridad los aspectos graficos que no afectan al
funcionamiento (operation) del sistema, y los tiempos de entrega (Delivery Times) de cada uno.

ETL: Extract, Transform and Load in a DataWhearhouse

Test Suite is a collection of test cases. The test cases which are intended or related to test an application.

Test Data is the data that is used by the testers to run the test cases. While we running the test cases, we need to enter
some input data.

Retesting helps To ensure that the defects which were found and posted in the earlier build were fixed or not.
End to End Testing Refer System Testing.

Hotfix means A bug which needs to handle as a high priority bug and fix it immediately

Diferencia entre Test Scenario y Test Plan: El test scenario te da una idea de lo que se va a testear (Que hacer) y el Test
Plan a todos los recursos, procesos y actividades que se tienen que hacer para poder realizar(do-take) la prueba (Que
ocupo para realizar la prueba).

Diferencia entre Test Case y Test Plan: El Test Case se refiere especificamente al requerimiento (Como hacerlo) y el Test
Plan a todos los recursos, procesos y actividades que se tienen que hacer para poder realizar la prueba (Que ocupo para
realizar la prueba).

Diferencia entre Test Case y Test Scenario: El Test scenario te da una idea de lo que se va a testear (Que hacer) y el Test
Case te dice como hacerlo paso a paso de forma positiva o negativa y los resultados esperados (Como Hacerlo).

principios del testing de software

Testing Definición

Prueba

Error

Defecto

Bug Life Cicle - Estado de vida de un Defecto

Falla

Prioridad y Severidad

Caracteristricas de una Prueba

GUI = Grafic User Interface

Metodologia de Desarrollo Agil

Caso de Prueba (Nombre CP, Tipo de CP (Positivo o Negativo), Pasos, Descripcion del Paso, Datos Ingresados, resultados
esperados, resultado actual)

Test Scenario

Test Plan

Metodos de pruebas

BlackBox, GrayBox, WitheBox

6 fases de las pruebas automatizadas

Sprint

Scrum

Impediment in Scrum

Entregables en Testing - Test Deliverables


ALM

Dessing Pattern MVC-Singleton

Diferencia entre REST Y SOAP

Herencia(Inheritance - Inherite (Hereda))

Casting

Final

Clases abstractas

polimorfismo

interfaces

array

threads (Runnable , Thread)

expeciones

encapsulación - modificadores de acceso

instancia

Setter y Getter

Enums

Modularización (Its when multiple objects of clases come together to make a program)

metodo constructor

clase

objeto

Sobrecarga(Overload)

Sobreescritura(Override)

Tipos primitivos (BYTE, Short int, Long, float, double, char, boolean)

Metodo main

String es una Clase

Manipulación de Strings

Api de JAVA

Manejo de excepciones

Errores en Selenium
COMBINAR ARRAYS Y SACAR LOS NUMEROS REPETIDOS **********

https://www.softwaretestingmaterial.com/100-software-testing-interview-questions/

Error es generado por las personas por el mal uso de las aplicaciones

y la excepcion son condiciones que la aplicación intentara resolver o contener

También podría gustarte