Curso-Testing Selenium
Curso-Testing Selenium
Maven (Descargar librerias), Data Driven (Excel) , Data Provider (Programación Descriptiva,
tomando datos desde un archivo), TestNG (Para comentarios y Reporteo).
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).
Defecto: Es el resultado de un error, conocido como bug (known as bug) y puede generar una
falla.
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.
• Precisa (accurate).
• Efectiva(effective).
• Trazable(traceable).
• Evolutiva(evolutive-evolutionary).
• Eficiente(efficent).
Se debe automatizar en escenarios donde se repitan los casos, como en las pruebas de regresión y
pruebas de humo.
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.
Niveles:
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.
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”).
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
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.
In Agile Scrum interviews, you may be asked to give some examples of impediments.
Business issues
Lack of skill
Test Plan
Test Scenarios
Test Cases/Scripts
Test Data
Installation/configuration guide
User guide
ALM
Se usa principalmente para administrar y gestionar los entornos de prueba generados.
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”>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.
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,
Esto es creado para usarse con los hilos y que no se pueda instanciar mas de un proceso de un tipo
a la vez.
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).
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,
Casting:
El Casting sirve para convertir las variables de un tipo a otro.
double num1=2.5;
syso(num2); = 2
-------------
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 clase es final, no puede heredar, por lo tanto las clases final no se pueden heredar.
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.
public String dameDescripcion(){return "Este empleado" + nom + "tiene un sueldo de " +sueldo;}
Alumno alumnoInstancia = new Alumno ("Luis") //INSTANCIA DEL OBJETO DE FORMA DIFERENTE
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
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.
Interfaz1 instanciaInterfaz = new Jefatura("Laura"); //No se puede instanciar una interfaz Interfaz1 in = new
Interfaz1, pero si a la 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.
lista.add(new Empleado("Jose"));
lista.Sort(); //ORDENA
hilo.start();
hilo2.start();
finally: se usa para complementar el try y catch y es un codigo que siempre se va a ejecutar
Try{CODIGO}
Modificadores de acceso:
private = clase
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.
algo.cambiaAlgo("sombrero"); = "sombrero"
algo.dimeAlgo(); = "algo"
SETTER Y GETTER:
SE Hace una instancia a la clase ENUM, los metodos son estaticos "Static", lo que hace que no se puedan
cambiar.
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.
Existen dos tipos de clases en java, las clases Propias (Las que creamos nosotros) y las Predefinidas
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.
minombre.substring(x,y); //Nos devuelve una sub cadena, empezando por la posición x y terminando en la y.
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#
POM: Project Objet Model, Its a XML File who describe the project and where you can put your
plugins and dependencies like libraries
APIS que he usado: Guidewire y una demo con postman utilizando las apis de facebook
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.”
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.
4) In case you want to handle some certain kind of exception in Selenium like
ElementNotSelectableException, ElementNotVisibleException,
NoSuchElementException etc. exceptions.
3) TimeoutException: This tells that the execution is failed because the command
did not complete in enough time.
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/
Para mostrar un mensaje de cada de texto, se declara como “msgbox”, Ej: msgbox a
Para generar un InputBox, para pedir datos, se usa Inptbox, Ej: str=Inputbox(“Pon Datos”)
Script:
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 GDF").Click
Browser("Banamex_2").Page("Banamex_2").Link("Impuestos y Contribuciones").Click
Browser("Banamex_2").Page("Banamex_2").Frame("Frame").WebEdit("Importe").Set TablaImporte
Browser("Banamex_2").Page("Banamex_2").Frame("Frame").WebList("Cuenta").Select TablaCuenta
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;
private By texto;
@BeforeMethod
System.setProperty("webdriver.chrome.driver", "C:\\SeleniumJar\\chromedriver.exe");
// Se maximiza la ventana
driver.manage().window().maximize();
helper.waitSeconds(10);
@Test
helper.Login("asdasd", "asdassd");
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
helper.Login("[email protected]", "contraseña1243");
helper.waitSeconds(5);
Assert.assertTrue(driver.findElement(By.xpath("//div[@role='alert']")).getText()
@Test
helper.Login("asdasd", "asdassd");
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
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;
private By emailField;
private By passwordField;
private By loginButton;
this.driver = driver;
emailField = By.id("email");
passwordField = By.id("pass");
loginButton = By.xpath("//*[@id=\"u_0_2\"]");
try {
Thread.sleep(seconds*1000);
} catch (InterruptedException e) {
e.printStackTrace();
driver.findElement(emailField).clear();
driver.findElement(emailField).sendKeys(email);
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
I Had = Tuve
I Went = Fuí
I Have = Tengo
That = Que/Ese,Esa
Than = de lo Que
Mediante = through
Instead = En vez
Against = EN contra
Compared= En comparación
Conjunto = Collection/Group/Set
Set = establecer/fijar
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.
I also had to
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).
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.
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).
Testing Definición
Prueba
Error
Defecto
Falla
Prioridad y Severidad
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
Sprint
Scrum
Impediment in Scrum
Casting
Final
Clases abstractas
polimorfismo
interfaces
array
expeciones
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
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