Testing - Veronesi/web-developer-roadmap GitHub Wiki

Tipo de pruebas

Functional

Es una prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software (requisitos funcionales)

Unit testing

Unit testing se encarga de testear de forma individual los módulos o componentes de una aplicación, estos test son escritos por el desarrollador de dicho modulo/componente luego de haberse creado el mismo. Cada función del modulo es probada por unit test en especifico (escrito en el mismo lenguaje que el modulo). Además de verificar que el código hace lo que tiene que hacer, verificamos que sea correcto el nombre, los nombres y tipos de los parámetros, el tipo de lo que se devuelve, que si el estado inicial es válido, entonces el estado final es válido también.

Ejemplo:

// Jest
function sum(a, b) {
  return a + b;
}

test('la suma de 1 + 2 es igual a 3', () => {
  expect(sum(1, 2)).toBe(3);
});

✓ la suma de 1 + 2 es igual a 3 (5ms)

Integration testing

En Integration testing, una vez que los unit test son aprobados, lo que se hace es probar la integracion entre estos componentes (que poseen una conexión) funcionen en conjunto correctamente, por ejemplo es sistema de inicio de sesion. **Ejemplo: **

// Jest
import TestApp from "/imports/test-utils/helpers/TestApp";

let testApp;
beforeAll(async () => {
  testApp = new TestApp();
  await testApp.start();
});

afterAll(() => testApp.stop());

test("something", async () => {
  // (1) use testApp.collections to write to MongoDB collections to set up initial data state
  // (2) execute a GraphQL query or mutation using testApp.query()() or testApp.mutation()()
  // (3) verify the response is as expected and/or verify that the collection data has been changed
  // (4) optionally reset the database if there is a chance it will conflict with the next test in this file
});

System testing

System testing es un método de tesing de caja de negra que se utiliza para evaluar de forma completa e integrando todo el sistema como un todo para garantizar que cumpla con los requisitos especificados. Este test se hace de principio a fin antes de enviarlo a producción.

Acceptance testing

No-Functional

Es una prueba cuyo objetivo es la verificación de un requisito que especifica criterios que pueden usarse para juzgar la operación de un sistema (requisitos no funcionales) como por ejemplo la disponibilidad, accesibilidad, usabilidad, mantenibilidad, seguridad, rendimiento.

Performance testing

Security testing

Usability testing

Compatibility testing

https://smartbear.com/learn/automated-testing/software-testing-methodologies/