Ejemplo de pruebas Unitarias

|

El siguiente código es un ejemplo de como se pueden crear pruebas unitarias con un framework de pruebas para reflejar casos de pruebas en un proyecto de desarrollo de software:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

[TestMethod]

public void PruebaObtenerOpcionesMenuParaUsuarioAdministrador()

{

//Se fijan los parametros requeridos para las pruebas

string strUsuario = "Administrador";

string strPassword = "Password";

string strNombreOpcion = "ReporteAspirantesIdoneos";

//Se fijan los resultados esperados

var ResultadoAutenticarEsperado = true;

//Se obtiene el resultado de la primera operación

var ResultadoautenticarObtenido =

eRecruit.Logic.clsNegocio.Autenticar(strUsuario, strPassword);

//Se comparan los resultados, de no coincidir se notifica con un mensaje

Assert.AreEqual(

ResultadoautenticarObtenido,

ResultadoAutenticarEsperado,

"Ha fallado la autenticacion del Usuario");

//Se fijan los resultados esperados en la segunda operación

var ResultadoEsperadoOpciones = true;

//Se obtiene la lista que contiene los datos para buscar la opción esperada

var ListadoOpciones = eRecruit.Logic.clsNegocio.ObtenerOpcionesMenu(strUsuario);

//Se busca si existe la opción esperada

var ResultadoObtenidoOpciones =

ListadoOpciones.Any(lst => lst.Nombre == strNombreOpcion);

//Se compara el resultado de la búsqueda con el resultado esperado

//si falla se notifica con un mensaje de error

Assert.AreEqual(

ResultadoObtenidoOpciones,

ResultadoEsperadoOpciones,

"El usuario no tiene acceso a la opción de generación del reporte");

}

[TestMethod]

public void PruebaGenerarReporteAspirantesIdoneos()

{

//Se fijan los parametros

string strDescripcionProceso = "SISTEMAS01";

//Se obtiene un resultado intermedio

var ProcesoSeleccion =

eRecruit.Logic.clsNegocio.ObtenerProcesoSeleccion(strDescripcionProceso);

//Se obtiene el listado de aspirantes aprobados para el proceso seleccionado

var ListadoAprobado =

eRecruit.Logic.clsNegocio.ObtenerAspirantesIdoneos(ProcesoSeleccion.IdProceso);

//Se compara si el proceso devolvio al menos un aspirante aprobado

//si no existen aprobados se notifica con un mensaje de error

Assert.AreNotEqual(

ListadoAprobado.Any,

true,

"No existen aspirantes aprobado para el proceso");

//Se genera el reporte, el metodo devuelve el path del reporte generado

var PathReporte =

eRecruit.Logic.clsNegocio.GenerarReporteAspirantesAceptados(ListadoAprobado);

//Se verifica que el Path no sea vacio

// de lo contrario se notifica un error

Assert.IsFalse(

String.IsNullOrEmpty(PathReporte),

"No se ha devuelto un path correcto");

}

[TestMethod]

public void PruebaPublicarResultadosPruebas()

{

//Se fijan los parametros

string strPathReporte = "~/reportes/plantillaaceptados.pdf";

string strTituloReporte = "Reporte de Aspirantes Aprobados";

//Se fija el resultado esperado

bool ResultadoPublicacionEsperado = true;

//Se obtiene el resultado del proceso

bool ResultadoPublicacionObtenido =

eRecruit.Logic.clsNegocio.PublicarReporte(strTituloReporte, strPathReporte);

//Se comparan los resultados esperados y obtenido

//si no coincide se notifica con un error

Assert.AreEqual(

ResultadoPublicacionObtenido,

ResultadoPublicacionEsperado,

"No se ha ejecutado la publicación del reporte");

}

[TestMethod]

public void PruebaGenerarNotificacionesResultadosAspirantes()

{

//Se fijan los parametros

string strDescripcionProceso = "SISTEMAS01";

//Se obtiene un resultado intermedio

var ProcesoSeleccion =

eRecruit.Logic.clsNegocio.ObtenerProcesoSeleccion(strDescripcionProceso);

//Se obtiene el listado de aspirantes aprobados para el proceso seleccionado

var ListadoAprobado =

eRecruit.Logic.clsNegocio.ObtenerAspirantesIdoneos(ProcesoSeleccion.IdProceso);

//Se compara si el proceso devolvio al menos un aspirante aprobado

//si no existen aprobados se notifica con un mensaje de error

Assert.AreNotEqual(

ListadoAprobado.Any,

true,

"No existen aspirantes aprobado para el proceso");

//Se establece el resultado esperado

bool ResultadoNotificacionEsperado = true;

//Se obtiene el resultado del proceso

bool ResultadoNotificacionObtenido =

eRecruit.Logic.clsNegocio.GenerarNotificacionesAspirantes(

ListadoAprobado,

eRecruit.Logic.Enumeraciones.Aceptado);

//Se comparan los resultados obtenidos con los esperados

//si no coinciden se notifica con un error

Assert.AreEqual(

ResultadoNotificacionObtenido,

ResultadoNotificacionEsperado,

"No se han generado las notificaciones correctamente");

}

[TestMethod]

public void PruebaPublicacionRevisionResultados()

{

//Paso 1 del caso de prueba

PruebaObtenerOpcionesMenuParaUsuarioAdministrador();

//Paso 2 del caso de prueba

PruebaGenerarReporteAspirantesIdoneos();

//Paso 3 del caso de prueba

PruebaPublicarResultadosPruebas();

//Paso 4 del caso de prueba

PruebaGenerarNotificacionesResultadosAspirantes();

}

Nota: El código aquí expuesto funciona con la herramienta de pruebas de Visual Studio Team Tester y se desarrollo en lenguaje C#, se pueden usar otros frameworks para pruebas como NUnit u otros disponibles según la conveniencia de cada equipo de desarrollo para desarrollar las pruebas, además las líneas al lado del código tienen el propósito de ser referencia.

Como se puede ver en el ejemplo, en las líneas 2, 37, 68 y 89 se encuentran los métodos que representan a las pruebas funcionales, cada uno usa la técnica de pruebas unitarias para verificar los resultados, cada uno de los métodos representa un paso del caso de pruebas, además en la línea 124 está el método que representa a todo el caso de prueba, que ejecuta en el mismo orden los métodos que representan a los pasos del caso de uso. En caso de fallar uno de los métodos se entiende que el caso de prueba ha fallado, y debe ser enviado de nuevo a revisión al equipo de desarrollo.

1 comments:

Anonymous said...

Simple y dulce. Estoy pensando en empezar otro blog o cinco muy pronto, y definitivamente voy a considerar este tema. Mantenga 'em coming!