Documentos de Académico
Documentos de Profesional
Documentos de Cultura
software
14-2-2023
Sesion No. 3
Manolo
ING. DE SISTEMAS
Clases o Sesion No
def calculate_average(numbers):
total = 0
count = 0
for num in numbers:
total += num
count += 1
average = total / count
return average
respuesta
Solución: En este código, puedes observar que se puede mejorar la calidad
haciendo lo siguiente:
def calculate_average(numbers):
"""
Calculates the average of a list of numbers.
"""
if not numbers:
return 0 # Return 0 if the list is empty
total = sum(numbers)
average = total / len(numbers)
return average
Página 2 de 12
Ejercicio 2: Pruebas de Unidad
python
Copy code
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_empty_list(self):
self.assertEqual(calculate_average([]), 0)
def test_positive_numbers(self):
self.assertEqual(calculate_average([1, 2, 3, 4, 5]), 3.0)
def test_negative_numbers(self):
self.assertEqual(calculate_average([-1, -2, -3]), -2.0)
def test_mixed_numbers(self):
self.assertEqual(calculate_average([10, -5, 20]), 8.3333, places=4)
if __name__ == '__main__':
unittest.main()
Detección de Duplicación de Código:
Enunciado: Utiliza una herramienta de análisis de código para identificar
fragmentos duplicados en diferentes partes del proyecto.
Solución: Puedes usar la herramienta cpd de PMD en Java para detectar
duplicaciones.
Código de ejemplo:
java
Copy code
// Fragmento duplicado
for (int i = 0; i < 10; i++) {
// ...
}
// Fragmento duplicado
for (int j = 0; j < 10; j++) {
// ...
}
Verificación de Cumplimiento de Estilo de Codificación:
Enunciado: Utiliza una herramienta de análisis estático para verificar si el
código sigue un estilo de codificación específico.
Solución: Puedes usar pylint en Python para verificar el estilo de
codificación.
Código de ejemplo:
def calculate_average(numbers):
total = 0
count = 0
for num in numbers:
total += num
count += 1
average = total / count
return average
Análisis de Complejidad Ciclomática:
Enunciado: Utiliza una herramienta para calcular la complejidad
ciclomática de las funciones en el código.
Solución: Puedes usar la herramienta radon en Python para calcular la
complejidad ciclomática.
Código de ejemplo:
def calculate_average(numbers):
total = sum(numbers)
average = total / len(numbers)
return average
Código de ejemplo:
javascript
Copy code
// Dependencia vulnerable
const lodash = require('lodash'); // Versión vulnerable
Análisis de Dependencias:
Enunciado: Realiza un análisis estático para identificar las dependencias
del proyecto y sus versiones.
Solución: Puedes usar npm audit en proyectos de Node.js para identificar
vulnerabilidades en las dependencias.
sh
Copy code
$ npm Audit
Pruebas de Unidad:
def sum_numbers(numbers):
return sum(numbers)
class TestSumNumbers(unittest.TestCase):
def test_empty_list(self):
self.assertEqual(sum_numbers([]), 0)
def test_positive_numbers(self):
self.assertEqual(sum_numbers([1, 2, 3, 4, 5]), 15)
def test_negative_numbers(self):
self.assertEqual(sum_numbers([-1, -2, -3]), -6)
if __name__ == '__main__':
unittest.main()
import unittest
def sort_numbers(numbers):
return sorted(numbers)
class TestSortNumbers(unittest.TestCase):
def test_empty_list(self):
self.assertEqual(sort_numbers([]), [])
def test_positive_numbers(self):
self.assertEqual(sort_numbers([5, 3, 1, 4, 2]), [1, 2, 3, 4, 5])
if __name__ == '__main__':
unittest.main()
class TestCalculateDiscount(unittest.TestCase):
def test_discount_calculation(self):
self.assertEqual(calculate_discount(100, 10), 10.0)
if __name__ == '__main__':
unittest.main()
import unittest
def is_valid_email(email):
# Verificación simplificada
return '@' in email and '.' in email
class TestIsValidEmail(unittest.TestCase):
def test_valid_email(self):
self.assertTrue(is_valid_email('test@example.com'))
def test_invalid_email(self):
self.assertFalse(is_valid_email('invalid-email'))
if __name__ == '__main__':
unittest.main()
Prueba de Función de Conversión de Temperatura:
Código de ejemplo usando unittest en Python:
python
Copy code
import unittest
def celsius_to_fahrenheit(celsius):
return (celsius * 9/5) + 32
class TestCelsiusToFahrenheit(unittest.TestCase):
def test_positive_conversion(self):
self.assertEqual(celsius_to_fahrenheit(0), 32)
def test_negative_conversion(self):
self.assertEqual(celsius_to_fahrenheit(-40), -40)
if __name__ == '__main__':
unittest.main()
Espero que estos ejemplos te sean útiles para entender cómo realizar
pruebas de análisis de código y pruebas de unidad. Ten en cuenta que estos
ejemplos son solo ilustrativos y que las implementaciones reales pueden
variar según el contexto y el lenguaje de programación que estés utilizando.
Bibliografía