1 |
¿Qué es una prueba unitaria? |
Una prueba que valida la funcionalidad de una unidad de código, como un método o una función, de manera aislada. |
2 |
¿Qué herramienta se usa comúnmente para pruebas unitarias en Java? |
JUnit. Ejemplo:
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calc = new Calculator();
assertEquals(5, calc.add(2, 3));
}
}
|
3 |
¿Cómo se realiza una prueba unitaria en Python? |
Se utiliza el módulo unittest . Ejemplo:
import unittest
class TestCalculator(unittest.TestCase):
def test_add(self):
calc = Calculator()
self.assertEqual(calc.add(2, 3), 5)
if __name__ == '__main__':
unittest.main()
|
4 |
¿Qué framework se utiliza para pruebas unitarias en C#? |
NUnit. Ejemplo:
using NUnit.Framework;
[TestFixture]
public class CalculatorTests {
[Test]
public void TestAdd() {
Calculator calc = new Calculator();
Assert.AreEqual(5, calc.Add(2, 3));
}
}
|
5 |
¿Cómo se hacen pruebas unitarias en TypeScript? |
Se usa Jest. Ejemplo:
import { add } from './calculator';
test('adds 1 + 2 to equal 3', () => {
expect(add(1, 2)).toBe(3);
});
|
6 |
¿Qué es el "Test Driven Development" (TDD)? |
Una metodología de desarrollo en la que se escriben primero las pruebas y luego el código para hacer que las pruebas pasen. |
7 |
¿Cómo se crea un "mock" en Python? |
Usando unittest.mock . Ejemplo:
from unittest.mock import MagicMock
def test_function():
mock = MagicMock(return_value=5)
assert mock() == 5
|
8 |
¿Cómo se usa el atributo [Test] en NUnit? |
Se usa para marcar un método como una prueba unitaria en C#. Ejemplo:
using NUnit.Framework;
[TestFixture]
public class MyTests {
[Test]
public void MyTest() {
// test code
}
}
|
9 |
¿Qué es un "assert" en el contexto de pruebas unitarias? |
Una afirmación que verifica si un resultado esperado coincide con un resultado real. |
10 |
¿Cómo se usa "assertEquals" en JUnit? |
Para comparar valores esperados con valores reales en pruebas. Ejemplo:
import static org.junit.jupiter.api.Assertions.assertEquals;
@Test
public void testAdd() {
Calculator calc = new Calculator();
assertEquals(5, calc.add(2, 3));
}
|
11 |
¿Qué es la cobertura de código? |
Una métrica que indica el porcentaje de código fuente que es ejecutado por las pruebas unitarias. |
12 |
¿Qué herramientas se usan para medir la cobertura de código en Java? |
Jacoco y Cobertura. Ejemplo con Jacoco:
# En el archivo pom.xml, añadir la dependencia de Jacoco:
org.jacoco
jacoco-maven-plugin
0.8.7
prepare-agent
report
|
13 |
¿Cómo se puede realizar la integración de pruebas en un pipeline CI/CD? |
Se añaden etapas en el pipeline para ejecutar las pruebas unitarias y generar reportes de resultados. Ejemplo en Jenkins:
pipeline {
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
}
}
|
14 |
¿Qué es un "test case"? |
Un conjunto de condiciones y datos de prueba diseñados para evaluar una parte específica del código. |
15 |
¿Qué es la técnica de "Boundary Value Analysis"? |
Una técnica de prueba que se enfoca en las fronteras de los valores de entrada para encontrar errores. |
16 |
¿Cómo se usan los "stubs" en pruebas unitarias? |
Son objetos simulados que devuelven respuestas predefinidas para las pruebas. |
17 |
¿Qué es el "Refactoring" en el contexto de pruebas? |
El proceso de mejorar el código sin cambiar su comportamiento externo, basado en los resultados de las pruebas. |
18 |
¿Cómo se puede realizar la parametrización de pruebas en JUnit? |
Utilizando la anotación @ParameterizedTest . Ejemplo:
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class ParameterizedTestExample {
@ParameterizedTest
@ValueSource(strings = {"racecar", "radar", "level"})
void testIsPalindrome(String word) {
assertTrue(isPalindrome(word));
}
}
|
19 |
¿Qué es un "test suite"? |
Un conjunto de pruebas unitarias agrupadas que se ejecutan juntas para verificar el comportamiento de un módulo. |
20 |
¿Cómo se pueden manejar excepciones en pruebas unitarias en Python? |
Usando el contexto assertRaises . Ejemplo:
import unittest
def divide(x, y):
if y == 0:
raise ValueError("Cannot divide by zero")
return x / y
class TestDivide(unittest.TestCase):
def test_divide_by_zero(self):
with self.assertRaises(ValueError):
divide(1, 0)
|
21 |
¿Qué es un "test fixture"? |
Un conjunto de datos y condiciones que se configuran antes de ejecutar las pruebas y se limpian después. |
22 |
¿Cómo se realiza la configuración de un "test fixture" en JUnit? |
Utilizando los métodos @BeforeEach y @AfterEach . Ejemplo:
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
public class MyTest {
@BeforeEach
void setUp() {
// Código de configuración
}
@AfterEach
void tearDown() {
// Código de limpieza
}
}
|
23 |
¿Qué es un "integration test"? |
Una prueba que verifica la interacción y integración entre diferentes módulos o servicios del sistema. |
24 |
¿Cómo se pueden hacer pruebas de rendimiento? |
Usando herramientas como JMeter o LoadRunner para simular cargas y medir el rendimiento del sistema. |
25 |
¿Qué es una prueba de regresión? |
Una prueba realizada para asegurar que los cambios en el código no han introducido nuevos errores. |
26 |
¿Qué es el "Code Coverage" y cómo se mide? |
Es la proporción de código ejecutado durante las pruebas. Se mide usando herramientas como Jacoco o Istanbul. |
27 |
¿Cómo se pueden realizar pruebas unitarias en un entorno de integración continua? |
Se configuran los scripts de prueba para ejecutarse automáticamente en el servidor de CI después de cada commit. |
28 |
¿Qué es el "Test Pyramid"? |
Una estrategia de pruebas que sugiere tener más pruebas unitarias que pruebas de integración y menos pruebas end-to-end. |
29 |
¿Cómo se puede asegurar la calidad de las pruebas unitarias? |
Implementando prácticas como la revisión de código, pruebas automatizadas y cobertura de código adecuada. |
30 |
¿Qué es el "Test Driven Development" (TDD) y cómo se implementa? |
TDD es una metodología que consiste en escribir pruebas antes de escribir el código. Se implementa escribiendo una prueba que falla, luego escribiendo el código necesario para pasar la prueba y finalmente refactorizando. |
31 |
¿Qué es una prueba de caja negra? |
Una prueba que evalúa la funcionalidad del software sin conocer su estructura interna. |
32 |
¿Qué es una prueba de caja blanca? |
Una prueba que examina el funcionamiento interno del software, como el flujo de control y las estructuras de datos. |
33 |
¿Cómo se puede implementar el patrón "Arrange-Act-Assert" en pruebas unitarias? |
Es un patrón para estructurar pruebas unitarias que implica organizar (Arrange) el escenario de prueba, actuar (Act) sobre el código y afirmar (Assert) los resultados. |
34 |
¿Cómo se usan los "fakes" en pruebas unitarias? |
Son implementaciones de prueba que simulan el comportamiento de componentes reales sin tener efectos secundarios. |
35 |
¿Qué es el "Mock Object Pattern"? |
Un patrón de diseño que usa objetos simulados para controlar y verificar la interacción con dependencias. |
36 |
¿Cómo se realiza la simulación de dependencias en Java? |
Usando bibliotecas como Mockito. Ejemplo:
import static org.mockito.Mockito.*;
public class MyServiceTest {
@Test
public void testService() {
MyDependency mockDependency = mock(MyDependency.class);
when(mockDependency.someMethod()).thenReturn("Mocked Response");
MyService service = new MyService(mockDependency);
String result = service.useDependency();
assertEquals("Mocked Response", result);
}
}
|
37 |
¿Cómo se utilizan los "fixtures" en pruebas unitarias en Python? |
Se pueden configurar usando métodos de configuración en el módulo pytest . Ejemplo:
import pytest
@pytest.fixture
def sample_data():
return {"key": "value"}
def test_sample_data(sample_data):
assert sample_data["key"] == "value"
|
38 |
¿Qué es el "Behavior-Driven Development" (BDD) y cómo se usa en TypeScript? |
BDD es una metodología que utiliza lenguaje natural para definir el comportamiento esperado del software. Se usa con herramientas como Cucumber. Ejemplo:
import { Given, When, Then } from 'cucumber';
import { expect } from 'chai';
Given('I have {int} cukes', function (cucumbers) {
this.cukes = cucumbers;
});
When('I add {int} cukes', function (cucumbers) {
this.cukes += cucumbers;
});
Then('I should have {int} cukes', function (cucumbers) {
expect(this.cukes).to.equal(cucumbers);
});
|
39 |
¿Qué es una prueba de "Smoke Testing"? |
Una prueba superficial que verifica que las funcionalidades básicas del software funcionan después de una implementación. |
40 |
¿Cómo se puede usar el comando pytest para ejecutar pruebas en paralelo en Python? |
Usando el plugin pytest-xdist . Ejemplo:
pip install pytest-xdist
pytest -n 4
|
41 |
¿Qué es una prueba de "Integration Testing"? |
Una prueba que evalúa cómo interactúan varios componentes del sistema en conjunto. |
42 |
¿Cómo se puede asegurar la idempotencia de las pruebas unitarias? |
Diseñando pruebas que siempre produzcan el mismo resultado independientemente de la cantidad de veces que se ejecuten. |
43 |
¿Cómo se configuran las pruebas unitarias en un proyecto TypeScript con Jest? |
Instalando jest y @types/jest , y configurando el archivo jest.config.js . Ejemplo:
npm install --save-dev jest @types/jest
{
"preset": "ts-jest",
"testEnvironment": "node"
}
|
44 |
¿Qué es el "Test Coverage" y por qué es importante? |
El porcentaje del código que es ejecutado durante las pruebas. Es importante porque ayuda a identificar áreas no cubiertas por las pruebas. |
45 |
¿Cómo se realiza la prueba de "Mocking" en Java? |
Utilizando frameworks como Mockito para crear objetos simulados y verificar interacciones. Ejemplo:
import static org.mockito.Mockito.*;
public class MyServiceTest {
@Test
public void testMocking() {
MyDependency mockDependency = mock(MyDependency.class);
verify(mockDependency).someMethod();
}
}
|