Skip to content

Pruebas: Testing manual completo de GUI #23

Description

@jandrescodes

🧪 Descripción

Realizar pruebas exhaustivas de toda la funcionalidad de la GUI y crear archivo de tests unitarios test_gui_calculator.py para la interfaz gráfica.

Objetivo:
Probar manualmente cada funcionalidad de la calculadora GUI, documentar bugs encontrados y crear tests automatizados para la GUI.


📋 Tareas

  • Ejecutar la aplicación: python gui.py
  • Probar cada botón individualmente
  • Ejecutar casos de prueba de operaciones básicas
  • Probar operaciones con decimales
  • Probar funciones científicas (abs, max, min)
  • Verificar manejo de errores (división por cero)
  • Probar flujos de usuario comunes
  • Documentar cualquier bug encontrado como issue
  • Crear archivo test_gui_calculator.py con tests automatizados
  • Escribir pruebas con casos básicos y extremos
  • Verificar que las pruebas pasen con pytest

🧪 Casos de prueba a ejecutar manualmente

Operaciones básicas:

  • Suma: 5 + 3 = 8
  • Resta: 10 - 4 = 6
  • Multiplicación: 7 * 6 = 42
  • División: 15 / 3 = 5
  • Potencia: 2 ^ 3 = 8

Operaciones con decimales:

  • 5.5 + 2.3 = 7.8
  • 10.5 / 2 = 5.25
  • Solo un punto decimal por número

Funciones científicas:

  • Valor absoluto: abs(-5) = 5
  • Máximo: max(10, 20) = 20
  • Mínimo: min(10, 20) = 10

Manejo de errores:

  • División por cero muestra error
  • No crashea con inputs inválidos
  • Mensajes de error claros

Flujos de usuario:

  • Operaciones consecutivas: 5 + 3 = 8 * 2 = 16
  • Botón Clear resetea correctamente
  • Display se actualiza apropiadamente

💻 Estructura de test_gui_calculator.py

"""Tests para la interfaz gráfica de la calculadora.

Pruebas usando pytest para verificar funcionalidad de GUI.
Para correr los tests: pytest test_gui_calculator.py -v
"""

import pytest
import tkinter as tk
from gui import CalculatorGUI

def test_button_click():
    """Test de clicks en botones numéricos."""
    root = tk.Tk()
    calc = CalculatorGUI(root)
    
    calc.button_click('5')
    assert calc.current_value == '5'
    
    calc.button_click('3')
    assert calc.current_value == '53'
    
    root.destroy()

def test_clear():
    """Test de botón clear."""
    root = tk.Tk()
    calc = CalculatorGUI(root)
    
    calc.button_click('5')
    calc.clear_click()
    assert calc.current_value == ''
    assert calc.operator is None
    
    root.destroy()

def test_operations():
    """Test de operaciones básicas."""
    root = tk.Tk()
    calc = CalculatorGUI(root)
    
    # Test suma: 5 + 3 = 8
    calc.button_click('5')
    calc.operation_click('+')
    calc.button_click('3')
    calc.equals_click()
    assert calc.current_value == '8'
    
    root.destroy()

# Agregar más tests según sea necesario

📝 Plantilla de reporte de bug

Si encuentras bugs, créalos como issues usando este formato:

## Bug: [Descripción breve]

**Pasos para reproducir:**
1. Hacer click en...
2. Ingresar...
3. Presionar...

**Resultado esperado:**
[Qué debería pasar]

**Resultado actual:**
[Qué está pasando]

**Severidad:** [Crítica/Alta/Media/Baja]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

documentaciónCambios en README, docstrings, etc.guiFuncionalidades de la interfaz gráficapendienteAún no iniciadapruebaTareas relacionadas con testing

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions