LAB02 Andrea Laura TIM PDF

Title LAB02 Andrea Laura TIM
Author Andrea Laura
Course Testing, implantación y mantenimiento de Sistemas
Institution Universidad Católica de Santa María
Pages 12
File Size 981.2 KB
File Type PDF
Total Downloads 84
Total Views 183

Summary

Download LAB02 Andrea Laura TIM PDF


Description

1

Testing Implantación y Mantenimiento de Sistemas: Informe del Lab01 Laura Oliva Andrea Carolina Escuela Profesional de Ingeniería de Sistemas Universidad Católica de Santa María [email protected] Resumen - - En este trabajo se analiza la importancia de las pruebas de Software y el uso de estándares y/o procesos que mejoren la calidad de un software durante y después de su creación, para el logro de un producto confiable y deseado por el usuario final o cliente. Además de poner en práctica lo aprendido por medio de ejercicios en el IDLE de Python, con aserciones y arrays. El trabajo usa información obtenida de libros y de prácticas de laboratorio para el mejor entendimiento del tema “Software Testing” Índice de Términos –Aserciones, Python, Software Testing.

I. INTRODUCCIÓN En la actualidad, el desarrollo de software juega un rol muy importante en la vida de muchos, facilitando labores cotidianas de todo aspecto, tanto social como económico [1]. Por ello, las pruebas de software es parte vital del ciclo de vida de este. Es de gran ayuda a la hora de verificar si los resultados fueron los esperados por el cliente y complace las necesidades que se nec esita solventar. Además, este proceso de testing sirve para identificar errores, desajustes o requerimientos que se obvian por errores humanos o de herramientas. El desarrollo de esta temática se realizó por el interés de conocer la importancia de las pruebas de software, conocer la importancia de los elementos de las pruebas de software y apreciar la forma de pensar en los diferentes elementos del software testing.[2]. Todo este conocimiento ayudó a entender más los tipos de errores que se puede generar en las diferentes etapas del desarrollo del software, cómo identificar el error y saber crear un software testeable. El trabajo se realizó con actividades propuestas y casos de investigación, para el mejor entendimiento de la temática del trabajo. El informe se divide en bloques presentados a continuación, los cuales son: las actividades propuestas, ejercicios que se realizan mediante codificación en Python de estructuras de datos como las colas, un cuestionario para consolidar lo estudiado y finalmente las conclusiones. II. ACTIVIDADES A. Entender y valorar cada concepto de esta práctica. Se aprendió de mandamientos básicos que se debe saber del testing [3], todos son muy importantes pero lo que más destaco son: que es imposible probar todos los casos posibles en el testing de un software, ya que nunca se está libre de errores, hasta grandes compañías como Google o Microsoft experimentaron errores de software en público. También resalta el punto de la paradoja del pesticida, que enfatiza en la idea que un conjunto de pruebas detectará los errores para lo que fue diseñado, pero no encontrará los errores para los cuales no se construyó y por último la que siempre se debe tener presente es que un software sin errores es una falacia. Otros puntos que se aprendieron en esta práctica son, cómo reconocer errores en el software y ubicar en que etapa se encuentra, es decir, saber si el error identificado está cuando el software está bajo testeo, en la aceptabilidad del testeo, en las especificaciones o es un error del SO, compilador, hardware o cualquier componente externo. Un método de chequeo ejecutable aprendido fueron las aserciones, los cuales comprueban que una propiedad deber ser siempre verdadera, nos ayuda a que el código se auto verifique, que se encuentren fallos a temprana edad, en lugar que se acumulen hasta el final y hacer un software más eficiente y documentable. B. Realizar los ejercicios y preguntas realizadas en el curso “Software testing ” en el servidor www.udacity.com. El curso nos proporción en la primera lección de 9 quizes, los cuales se especificarán a continuación. 1) Quiz: Mars Climate Orbiter: En este quiz, se requiere marcar la respuesta correcta de la siguiente pregunta: “What’s going on when we test?”, y la respuesta fue que el error estaba en la etapa de especificación ya que no hubo comunicación constante entre las dos partes involucradas y originó un pequeño cambio que originó un gran desastre.

2

Figura. 2 Respuesta del primer quiz correcta

Figura. 1 Primer quiz: Mars Climate Orbiter

2) Quiz: Filling the queue: En este quiz, se requiere marcar la respuesta correcta de la siguiente pregunta: “What are the values in r1, r2, r3, r4, r5, r6?”

Figura. 3 Segundo Quiz: Filling The Queue

3

Figura. 4 Respuesta del Segundo quiz correcta

3) Quiz What we learn: En este quiz, se requiere marcar la respuesta correcta de la siguiente pregunta: “What we learn?”

Figura. 6 Tercer quiz: What we learn

Figura. 5 Respuesta del tercer quiz correcta

4

4) Quiz Testing the queue, para esta prueba, se escribió las funciones test2 y test3 de modo que prueben la cola de alguna manera. Por ejemplo, asegurarse de que el método en cola devuelve el “verdadero” correcto si tiene éxito y “falso” si no. Si la prueba falla en algún momento, se debe imprimir "test2 no está bien" para la función test2 y "test3 no está bien" para la función test3. Si pasan todas las pruebas, se debe imprimir "test2 ok" para la función test2 y "test3 ok" para la función test3.

Figura. 7 Resolución del cuarto quiz

Figura. 8 Continuación de la resolución del cuarto quiz

Figura. 9 Cuarto quiz correcto

5 5) Quiz Checkrep creación de assert, ejecutables para validar verdades.

Figura. 10 Creación de asserts en el quinto quiz

Figura. 11 Quinto quiz resuelto

6) Quiz Specification: En este quiz nos muestra el ejemplo de una raíz cuadrada de 9, cuál sería su resultado .

Figura. 12 Sexto quiz para marcar

6

Figura. 13 Sexto quiz resuelto.

7) Quiz Refining the specification Nos muestra otro ejemplo de raíz cuadrada del número -1, el resultado que daría el programa , que en este caso fueron tres, una excepción de número imaginario “i”.

Figura. 14 Séptimo quiz para marcar

Figura. 15 Septimo quiz resuelto

7 8) Quiz Domain and Ranges: la cuestión aquí es si sería factible realizar una raíz cuadrada con números negativos.

Figura. 16 Octavo quiz para marcar

Figura. 17 Octavo quiz resuelto

9) Quiz Good test cases: Nos pregunta sobre cuál alternativa es la mejor para hacer una llamada al sistema. Siempre es de buena práctica testear todos los posibles parámetros por ello la respuesta serían todas las alternativas.

Figura. 18 Noveno quiz para marcar

8

Figura. 19 Noveno quiz resuelto

III. EJERCICIOS A. Instala el python y prueba todo el código visto de la Estructura de Datos: Colas.

Figura. 20 Implementación de la estructura de datos, cola

9

Figura. 21 Implementación de la estructura de datos, cola

Figura. 22 Programa de cola ejecutada

10 B. Busca un software que genere automáticamente test cases para Python. Úsalo con el Código de la Cola. Algunos frameworks de testeo de Python son: unittest, nose y pytest. Este último, es el más popular. Se debe permitir los permisos de escrituras para poder instalar pytest por medio del cmd.

Figura. 23 Instalación de pytest mediante el comando “pip install pytest”

Luego de ello, creamos un archivo .py y codificamos algún programa para testear, uno pequeño, lo guardamos y en el cmd ejecutamos el pytest y el nombre de nuestro archivo del programa que creamos.

Figura. 24 Ejecución del test a test_mathlib.py

Como se observa hay muchas formas de ejecutar el testeo de un programa, uno muestra más detalle que el otro. Como en la figura. 23 se observa que en la segunda ejecución del testeo a diferencia del primero, muestra cada una de las funciones que fueron testeadas. Ahora en la figura. 24 se observa un mensaje de error en la ejecución de la segunda función.

Figura. 25 Se notifica un error en “assert”

11

IV. CUESTIONARIO Defina los siguientes términos: A. Software bajo pruebas, corresponde al software siendo testeado para su correcta operación, término utilizado en el testing de software [4]. B. Aserciones, son ejecuciones que verifican la afirmación sobre algo, demuestran de manera formal que un algoritmo funciona [5]. C. Especificaciones, son requisitos o comportamientos del sistema que se va a desarrollar [6]. D. Casos de pruebas, es una condición sobre una funcionalidad del software para verificar que cumpla con el resultado que se espera de él [7]. E. Precondiciones, condiciones que deben cumplir ciertos parámetros antes de realizar una función para que se ejecute y funcione de manera correcta [8]. F. Postcondiciones, condiciones que cumple el valor de resultado y los parámetros recibidos, siempre que hayan cumplido con las precondiciones. Estado del software después de la operación [8]. G. Invariables, refieren a estados o situaciones que no cambian dentro de un contexto o porción de código [9]. V. CONCLUSIONES Se concluye la importancia del TMM para cualquier tipo de desarrollo de software, para garantizar el nivel de calidad que se tiene y si es que se está en un nivel bajo de este modelo, mejorar o establecer técnicas para incrementar la calidad. Es de suma importancia, saber los conceptos básicos del Testing Software, por el motivo de tener más herramientas que puedan mejorar en gran medida la calidad. La comunicación entre los usuarios/clientes y los desarrolladores/programadores es esencial para generar retroalimentación por parte del usuario de lo que quieren y para que los desarrolladores sepan lo que deben hacer para cumplir con el objetivo. Se debe documentar todo los procesos, decisiones u objetivos que se tracen desde el comienzo del desarrollo del software, especificando claramente los requisitos por parte del usuario, y aclarando la manera en que se hará por parte de los desarrolladores. Las pruebas constantes a lo largo del desarrollo del software son muy importantes para no acumular errores que al final sólo retrasarían el proyecto, generando más costos y demora en la entrega del proyecto. Y sobre todo la insatisfacción del cliente. Es de suma importancia saber aplicar los casos de prueba, como las aserciones de manera efectiva. No es solo cuestión de verificar cualquier porción de código, si no, se trata de evaluar cada una de ellas y ver donde se requiere un testing. Tener en claro dónde se encontró el error es esencial para saber qué medidas tomar para su solución. REFERENCIAS [1]"What is Software Testing? Introduction, Definition, Basics & Types", Guru99.com, 2020. [Online]. Available: https://www.guru99.com/software-testing-introduction-importance.html. [Accessed: 04- Apr- 2020]. [2] S. Singh, G. Kaur, P. Kaur and A. City, "Importance of Testing Maturity Model", csjournals, vol. 8, pp. 85-87, 2015. [Accessed 5 April 2020]. [3]"Los 7 Mandamientos de las Pruebas del Software", El Laboratorio de las TI, 2020. [Online]. Available: https://www.laboratorioti.com/2014/07/28/los-7-mandamientos-de-las-pruebas-del-software/. [Accessed: 18- Apr- 2020]. [4] W. from? A. Souza, D. Lewis, M. Borgwardt and N. Alexeev, "What is SUT and where did it come from?", Stack Overflow, 2020. [Online]. Available: https://stackoverflow.com/questions/7321407/what-is-sut-and-where-did-it-come-from. [Accessed: 18- Apr- 2020]. [5]"Aserciones en código administrado - Visual Studio", Docs.microsoft.com, 2020. [Online]. Available: https://docs.microsoft.com/es-es/visualstudio/debugger/assertions-in-managed-code?view=vs-2019. [Accessed: 18- Apr- 2020].

12

[6]"Especificación de Requisitos del Sistema | Marco de Desarrollo de la Junta de Andalucía", Juntadeandalucia.es, 2020. [Online]. Available: http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/407. [Accessed: 18- Apr- 2020]. [7]E. ENCAMINA, "QA: Caso de uso vs Caso de prueba | ENCAMINA", Piensa en software, desarrolla en colores, 2020. [Online]. Available: https://blogs.encamina.com/piensa-en-software-desarrolla-en-colores/qa-caso-de-uso-vs-caso-de-prueba/. [Accessed: 18- Apr- 2020]. [8]"10.1. Pre y Postcondiciones (Algoritmos de Programación con Python)", Uniwebsidad.com, 2020. [Online]. Available: https://uniwebsidad.com/libros/algoritmos-python/capitulo-10/pre-y-postcondiciones. [Accessed: 18- Apr- 2020]. [9]"10.2. Invariantes de ciclo (Algoritmos de Programación con Python)", Uniwebsidad.com, 2020. [Online]. Available: https://uniwebsidad.com/libros/algoritmos-python/capitulo-10/invariantes-de-ciclo. [Accessed: 18- Apr- 2020]....


Similar Free PDFs