-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_comprehensive.py
More file actions
148 lines (123 loc) · 5.29 KB
/
test_comprehensive.py
File metadata and controls
148 lines (123 loc) · 5.29 KB
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
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/usr/bin/env python3
"""
Script de prueba comprehensivo para evaluar el chatbot CodeHelperNET
con todos los nuevos temas agregados
"""
import sys
import time
from pathlib import Path
def test_chatbot():
"""Ejecutar pruebas comprehensivas del chatbot"""
print("🧪 CodeHelperNET - Pruebas Comprehensivas")
print("=" * 50)
try:
from rag_chatbot import RAGChatbot
# Inicializar el chatbot
print("🤖 Inicializando chatbot...")
chatbot = RAGChatbot()
# Lista de preguntas de prueba organizadas por categorías
test_questions = {
"Fundamentos de .NET": [
"¿Qué es .NET Core y cuáles son sus características principales?",
"¿Cuál es la diferencia entre .NET Framework y .NET Core?",
"¿Qué es el Common Language Runtime (CLR)?"
],
"ASP.NET Core": [
"¿Cómo funciona el middleware en ASP.NET Core?",
"¿Qué es la inyección de dependencias en .NET?",
"¿Cómo configurar el logging en ASP.NET Core?"
],
"Entity Framework": [
"¿Qué es Entity Framework Core?",
"¿Cómo usar migrations en EF Core?",
"¿Cuáles son las mejores prácticas para EF Core?"
],
"Patrones y Arquitectura": [
"¿Qué es la arquitectura de microservicios?",
"¿Cómo implementar el patrón Repository?",
"¿Qué son los patrones de diseño más comunes en .NET?"
],
"Testing y Calidad": [
"¿Cómo escribir unit tests en .NET?",
"¿Qué es TDD y cómo aplicarlo?",
"¿Cuáles son las mejores prácticas de testing?"
],
"DevOps y CI/CD": [
"¿Cómo configurar CI/CD para aplicaciones .NET?",
"¿Qué herramientas usar para DevOps en .NET?",
"¿Cómo hacer deployment de aplicaciones .NET?"
],
"Machine Learning": [
"¿Cómo usar ML.NET para machine learning?",
"¿Qué algoritmos están disponibles en ML.NET?",
"¿Cómo integrar modelos de ML en aplicaciones .NET?"
],
"Desarrollo Cloud": [
"¿Cómo desplegar aplicaciones .NET en Azure?",
"¿Qué servicios de Azure son útiles para .NET?",
"¿Cómo usar Azure DevOps con .NET?"
]
}
# Ejecutar pruebas por categoría
for category, questions in test_questions.items():
print(f"\n📚 {category}")
print("-" * 30)
for i, question in enumerate(questions, 1):
print(f"\n❓ Pregunta {i}: {question}")
print("🤖 Respuesta:")
try:
response = chatbot.chat(question)
print(f"✅ {response}")
except Exception as e:
print(f"❌ Error: {e}")
# Pausa entre preguntas
time.sleep(2)
print("\n🎉 Pruebas completadas!")
except Exception as e:
print(f"❌ Error en las pruebas: {e}")
return False
return True
def test_specific_topics():
"""Probar temas específicos de los nuevos documentos"""
print("\n🔬 Pruebas de Temas Específicos")
print("=" * 40)
try:
from rag_chatbot import RAGChatbot
chatbot = RAGChatbot()
specific_questions = [
"¿Qué es la serialización JSON en .NET y cómo usarla?",
"¿Cómo implementar caching en aplicaciones .NET?",
"¿Qué es Blazor y cómo funciona?",
"¿Cómo usar .NET MAUI para desarrollo multiplataforma?",
"¿Qué son los servicios en segundo plano en .NET?",
"¿Cómo implementar internacionalización en .NET?",
"¿Qué estrategias de migración existen para .NET?",
"¿Cómo optimizar el rendimiento de aplicaciones .NET?"
]
for i, question in enumerate(specific_questions, 1):
print(f"\n🔍 Pregunta {i}: {question}")
print("🤖 Respuesta:")
try:
response = chatbot.chat(question)
print(f"✅ {response}")
except Exception as e:
print(f"❌ Error: {e}")
time.sleep(1)
print("\n✅ Pruebas específicas completadas!")
except Exception as e:
print(f"❌ Error en pruebas específicas: {e}")
if __name__ == "__main__":
print("🚀 Iniciando pruebas comprehensivas del chatbot...")
# Verificar que exista la base vectorial
vector_db_path = Path("./vector_db")
if not vector_db_path.exists():
print("❌ No se encontró la base vectorial. Ejecuta primero:")
print(" python run_improved_system.py --mode build")
sys.exit(1)
# Ejecutar pruebas
if test_chatbot():
test_specific_topics()
print("\n🎯 Todas las pruebas completadas exitosamente!")
else:
print("\n❌ Las pruebas fallaron")
sys.exit(1)