@the-bearded-bear/claude-craft 8.8.1 → 8.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dev/i18n/de/Angular/commands/check-compliance.md +218 -168
- package/Dev/i18n/de/Common/agents/refactoring-specialist.md +146 -69
- package/Dev/i18n/de/Common/commands/add-technology.md +166 -68
- package/Dev/i18n/de/Common/commands/setup-ci.md +216 -33
- package/Dev/i18n/de/Laravel/commands/check-compliance.md +223 -115
- package/Dev/i18n/de/Python/checklists/new-feature.md +319 -44
- package/Dev/i18n/de/React/rules/02-architecture.md +483 -322
- package/Dev/i18n/de/React/rules/03-coding-standards.md +584 -368
- package/Dev/i18n/de/Symfony/commands/check-compliance.md +186 -114
- package/Dev/i18n/de/Symfony/rules/07-testing-symfony.md +679 -10
- package/Dev/i18n/de/UIUX/commands/a11y-component.md +284 -26
- package/Dev/i18n/de/UIUX/commands/design-tokens.md +199 -35
- package/Dev/i18n/de/UIUX/commands/user-flow.md +179 -16
- package/Dev/i18n/de/VueJS/commands/check-compliance.md +227 -102
- package/Dev/i18n/es/Angular/commands/check-compliance.md +217 -167
- package/Dev/i18n/es/Common/commands/add-technology.md +158 -60
- package/Dev/i18n/es/Laravel/commands/check-compliance.md +223 -115
- package/Dev/i18n/es/React/commands/check-testing.md +263 -169
- package/Dev/i18n/es/ReactNative/commands/check-testing.md +256 -198
- package/Dev/i18n/es/Symfony/commands/check-compliance.md +189 -117
- package/Dev/i18n/es/Symfony/commands/check-testing.md +301 -102
- package/Dev/i18n/es/Symfony/commands/migration-plan.md +267 -34
- package/Dev/i18n/es/UIUX/commands/a11y-component.md +274 -16
- package/Dev/i18n/es/UIUX/commands/design-tokens.md +186 -22
- package/Dev/i18n/es/UIUX/commands/user-flow.md +173 -10
- package/Dev/i18n/es/VueJS/commands/check-compliance.md +227 -102
- package/Dev/i18n/fr/Angular/commands/check-compliance.md +217 -167
- package/Dev/i18n/fr/Common/commands/ralph-run.md +138 -60
- package/Dev/i18n/fr/Laravel/commands/check-compliance.md +223 -115
- package/Dev/i18n/fr/React/commands/check-architecture.md +370 -53
- package/Dev/i18n/fr/React/commands/check-code-quality.md +454 -64
- package/Dev/i18n/fr/React/commands/check-testing.md +476 -102
- package/Dev/i18n/fr/Symfony/commands/check-compliance.md +188 -116
- package/Dev/i18n/fr/VueJS/commands/check-compliance.md +227 -102
- package/Dev/i18n/pt/Angular/commands/check-compliance.md +225 -175
- package/Dev/i18n/pt/Common/agents/ralph-conductor.md +211 -30
- package/Dev/i18n/pt/Common/commands/add-technology.md +149 -51
- package/Dev/i18n/pt/Common/commands/ralph-run.md +239 -35
- package/Dev/i18n/pt/Flutter/commands/analyze-performance.md +331 -46
- package/Dev/i18n/pt/Flutter/commands/check-compliance.md +234 -29
- package/Dev/i18n/pt/Flutter/commands/generate-feature.md +526 -51
- package/Dev/i18n/pt/Flutter/commands/generate-widget.md +515 -27
- package/Dev/i18n/pt/Flutter/commands/golden-update.md +322 -46
- package/Dev/i18n/pt/Flutter/commands/localization-check.md +278 -37
- package/Dev/i18n/pt/Laravel/commands/check-compliance.md +212 -104
- package/Dev/i18n/pt/React/commands/accessibility-check.md +151 -42
- package/Dev/i18n/pt/React/commands/bundle-analyze.md +300 -25
- package/Dev/i18n/pt/React/commands/check-architecture.md +369 -34
- package/Dev/i18n/pt/React/commands/check-code-quality.md +440 -34
- package/Dev/i18n/pt/React/commands/check-compliance.md +232 -62
- package/Dev/i18n/pt/React/commands/check-security.md +370 -31
- package/Dev/i18n/pt/React/commands/check-testing.md +473 -43
- package/Dev/i18n/pt/React/commands/generate-component.md +454 -19
- package/Dev/i18n/pt/React/commands/generate-hook.md +425 -24
- package/Dev/i18n/pt/React/commands/storybook-story.md +520 -35
- package/Dev/i18n/pt/ReactNative/commands/app-size.md +358 -387
- package/Dev/i18n/pt/ReactNative/commands/check-code-quality.md +246 -75
- package/Dev/i18n/pt/ReactNative/commands/check-compliance.md +191 -85
- package/Dev/i18n/pt/ReactNative/commands/check-security.md +363 -115
- package/Dev/i18n/pt/ReactNative/commands/check-testing.md +269 -79
- package/Dev/i18n/pt/ReactNative/commands/generate-screen.md +491 -324
- package/Dev/i18n/pt/ReactNative/commands/native-module.md +539 -82
- package/Dev/i18n/pt/ReactNative/commands/store-prepare.md +429 -185
- package/Dev/i18n/pt/ReactNative/rules/02-architecture.md +1084 -31
- package/Dev/i18n/pt/Symfony/commands/check-compliance.md +195 -123
- package/Dev/i18n/pt/UIUX/commands/a11y-audit.md +208 -24
- package/Dev/i18n/pt/UIUX/commands/a11y-component.md +281 -23
- package/Dev/i18n/pt/UIUX/commands/design-tokens.md +197 -33
- package/Dev/i18n/pt/UIUX/commands/user-flow.md +183 -20
- package/Dev/i18n/pt/VueJS/commands/check-compliance.md +228 -103
- package/Dev/i18n/pt/Workflow/commands/analyze.md +147 -146
- package/Dev/i18n/pt/Workflow/commands/design.md +205 -204
- package/Dev/i18n/pt/Workflow/commands/implement.md +184 -184
- package/Project/i18n/de/Sprint/commands/dev.md +339 -86
- package/Project/i18n/es/Sprint/commands/dev.md +342 -91
- package/Project/i18n/pt/Sprint/commands/dev.md +343 -92
- package/bundles/cursor/.cursorrules +1 -1
- package/bundles/windsurf/.windsurfrules +1 -1
- package/package.json +1 -1
|
@@ -15,183 +15,201 @@ $ARGUMENTS : Ruta del proyecto Symfony a auditar (opcional, por defecto: directo
|
|
|
15
15
|
|
|
16
16
|
## MISIÓN
|
|
17
17
|
|
|
18
|
-
Eres un experto en
|
|
18
|
+
Eres un experto en pruebas de software encargado de auditar la estrategia de testing de un proyecto Symfony: pruebas unitarias, de integración, funcionales, cobertura de código y pruebas de mutación.
|
|
19
19
|
|
|
20
|
-
### Paso 1: Verificación del Entorno de
|
|
20
|
+
### Paso 1: Verificación del Entorno de Pruebas
|
|
21
21
|
|
|
22
|
-
1.
|
|
23
|
-
2.
|
|
24
|
-
3.
|
|
25
|
-
4.
|
|
22
|
+
1. Identificar el directorio del proyecto
|
|
23
|
+
2. Verificar la presencia de PHPUnit en composer.json
|
|
24
|
+
3. Verificar la configuración de PHPUnit (phpunit.xml.dist)
|
|
25
|
+
4. Verificar la presencia del directorio tests/
|
|
26
26
|
|
|
27
27
|
**Referencia a las reglas**: `.claude/rules/symfony-testing.md`
|
|
28
28
|
|
|
29
|
-
### Paso 2: Estructura de
|
|
29
|
+
### Paso 2: Estructura de las Pruebas
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Analizar la estructura del directorio tests/:
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
# Listar la estructura de
|
|
34
|
+
# Listar la estructura de las pruebas
|
|
35
35
|
docker run --rm -v $(pwd):/app php:8.2-cli find /app/tests -type d
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
#### Organización de
|
|
38
|
+
#### Organización de las Pruebas (3 puntos)
|
|
39
39
|
|
|
40
|
-
- [ ]
|
|
41
|
-
- [ ]
|
|
42
|
-
- [ ]
|
|
40
|
+
- [ ] Directorio `tests/Unit/` para pruebas unitarias
|
|
41
|
+
- [ ] Directorio `tests/Integration/` para pruebas de integración
|
|
42
|
+
- [ ] Directorio `tests/Functional/` para pruebas funcionales
|
|
43
43
|
- [ ] Estructura espejo de src/ en tests/
|
|
44
44
|
- [ ] Namespace correctamente configurado
|
|
45
45
|
- [ ] Fixtures en tests/Fixtures/
|
|
46
|
-
- [ ] Mocks en tests/Mock/ o
|
|
47
|
-
- [ ] Configuración de
|
|
48
|
-
- [ ] Base de datos de
|
|
49
|
-
- [ ]
|
|
46
|
+
- [ ] Mocks en tests/Mock/ o en línea
|
|
47
|
+
- [ ] Configuración de prueba separada (config/packages/test/)
|
|
48
|
+
- [ ] Base de datos de prueba separada
|
|
49
|
+
- [ ] Pruebas aisladas e independientes
|
|
50
50
|
|
|
51
51
|
**Puntos obtenidos**: ___/3
|
|
52
52
|
|
|
53
|
-
### Paso 3:
|
|
53
|
+
### Paso 3: Pruebas Unitarias
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Ejecutar las pruebas unitarias:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
-
# Ejecutar
|
|
58
|
+
# Ejecutar solo las pruebas unitarias
|
|
59
59
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit tests/Unit --testdox
|
|
60
60
|
|
|
61
|
-
# Contar
|
|
61
|
+
# Contar las pruebas unitarias
|
|
62
62
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit tests/Unit --list-tests | wc -l
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
####
|
|
65
|
+
#### Pruebas Unitarias del Dominio (7 puntos)
|
|
66
66
|
|
|
67
|
-
- [ ]
|
|
68
|
-
- [ ]
|
|
69
|
-
- [ ]
|
|
70
|
-
- [ ]
|
|
67
|
+
- [ ] Pruebas para todas las Entidades del Dominio
|
|
68
|
+
- [ ] Pruebas para todos los Value Objects
|
|
69
|
+
- [ ] Pruebas para todos los Servicios de Dominio
|
|
70
|
+
- [ ] Pruebas para los Use Cases / Application Services
|
|
71
71
|
- [ ] Sin dependencias externas (BD, API, filesystem)
|
|
72
72
|
- [ ] Uso de mocks para las dependencias
|
|
73
|
-
- [ ]
|
|
74
|
-
- [ ]
|
|
75
|
-
- [ ]
|
|
76
|
-
- [ ] Cobertura de
|
|
73
|
+
- [ ] Pruebas de casos límite y errores
|
|
74
|
+
- [ ] Pruebas de las validaciones de negocio
|
|
75
|
+
- [ ] Retroalimentación rápida (< 1 segundo para todas las pruebas unitarias)
|
|
76
|
+
- [ ] Cobertura de las pruebas unitarias > 90%
|
|
77
77
|
|
|
78
|
-
Número de
|
|
78
|
+
Número de pruebas unitarias: ___
|
|
79
79
|
Tiempo de ejecución: ___ segundos
|
|
80
80
|
|
|
81
81
|
**Puntos obtenidos**: ___/7
|
|
82
82
|
|
|
83
|
-
### Paso 4:
|
|
83
|
+
### Paso 4: Pruebas de Integración
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
Ejecutar las pruebas de integración:
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
# Ejecutar
|
|
88
|
+
# Ejecutar las pruebas de integración
|
|
89
89
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit tests/Integration --testdox
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
####
|
|
92
|
+
#### Pruebas de Integración de Infraestructura (5 puntos)
|
|
93
93
|
|
|
94
|
-
- [ ]
|
|
95
|
-
- [ ]
|
|
96
|
-
- [ ]
|
|
97
|
-
- [ ]
|
|
98
|
-
- [ ] Uso de base de datos de
|
|
99
|
-
- [ ] Rollback o reset después de cada
|
|
100
|
-
- [ ] Fixtures para datos de
|
|
101
|
-
- [ ]
|
|
102
|
-
- [ ] Aislamiento de
|
|
103
|
-
- [ ]
|
|
94
|
+
- [ ] Pruebas para todos los Repositorios (con base de datos)
|
|
95
|
+
- [ ] Pruebas para los Adaptadores externos (Email, API, etc.)
|
|
96
|
+
- [ ] Pruebas para los Event Listeners / Subscribers
|
|
97
|
+
- [ ] Pruebas para los Servicios con dependencias de Symfony
|
|
98
|
+
- [ ] Uso de base de datos de prueba
|
|
99
|
+
- [ ] Rollback o reset después de cada prueba
|
|
100
|
+
- [ ] Fixtures para datos de prueba
|
|
101
|
+
- [ ] Pruebas de transacciones y restricciones de BD
|
|
102
|
+
- [ ] Aislamiento de pruebas (sin orden requerido)
|
|
103
|
+
- [ ] Pruebas de casos de error (conexión fallida, etc.)
|
|
104
104
|
|
|
105
|
-
Número de
|
|
105
|
+
Número de pruebas de integración: ___
|
|
106
106
|
Tiempo de ejecución: ___ segundos
|
|
107
107
|
|
|
108
108
|
**Puntos obtenidos**: ___/5
|
|
109
109
|
|
|
110
|
-
### Paso 5:
|
|
110
|
+
### Paso 5: Pruebas Funcionales
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
Ejecutar las pruebas funcionales:
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
|
-
# Ejecutar
|
|
115
|
+
# Ejecutar las pruebas funcionales
|
|
116
116
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit tests/Functional --testdox
|
|
117
117
|
|
|
118
118
|
# Verificar si Behat está instalado
|
|
119
|
-
docker run --rm -v $(pwd):/app php:8.2-cli test -f /app/vendor/bin/behat && echo "✅ Behat encontrado" || echo "⚠️ Behat
|
|
119
|
+
docker run --rm -v $(pwd):/app php:8.2-cli test -f /app/vendor/bin/behat && echo "✅ Behat encontrado" || echo "⚠️ Behat ausente"
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
####
|
|
122
|
+
#### Pruebas Funcionales (5 puntos)
|
|
123
123
|
|
|
124
|
-
- [ ]
|
|
125
|
-
- [ ]
|
|
126
|
-
- [ ]
|
|
127
|
-
- [ ]
|
|
128
|
-
- [ ]
|
|
129
|
-
- [ ]
|
|
130
|
-
- [ ]
|
|
131
|
-
- [ ]
|
|
132
|
-
- [ ]
|
|
133
|
-
- [ ]
|
|
124
|
+
- [ ] Pruebas para todas las rutas API/Web importantes
|
|
125
|
+
- [ ] Pruebas de los controladores con WebTestCase
|
|
126
|
+
- [ ] Pruebas de los formularios
|
|
127
|
+
- [ ] Pruebas de autenticaciones y autorizaciones
|
|
128
|
+
- [ ] Pruebas de flujos completos (recorridos de usuario)
|
|
129
|
+
- [ ] Pruebas con Behat para escenarios de negocio (opcional)
|
|
130
|
+
- [ ] Pruebas de respuestas HTTP (códigos, cabeceras, cuerpo)
|
|
131
|
+
- [ ] Pruebas de validaciones del lado de la API
|
|
132
|
+
- [ ] Pruebas de casos de error (404, 403, 500)
|
|
133
|
+
- [ ] Pruebas de redirecciones
|
|
134
134
|
|
|
135
|
-
Número de
|
|
136
|
-
|
|
135
|
+
Número de pruebas funcionales: ___
|
|
136
|
+
Pruebas Behat presentes: [SÍ|NO]
|
|
137
137
|
|
|
138
138
|
**Puntos obtenidos**: ___/5
|
|
139
139
|
|
|
140
140
|
### Paso 6: Cobertura de Código
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
Generar el informe de cobertura:
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
|
-
# Generar cobertura de código (requiere xdebug o pcov)
|
|
145
|
+
# Generar la cobertura de código (requiere xdebug o pcov)
|
|
146
146
|
docker run --rm -v $(pwd):/app php:8.2-cli php -d memory_limit=-1 /app/vendor/bin/phpunit --coverage-text --coverage-html=/app/var/coverage
|
|
147
147
|
|
|
148
|
-
# Mostrar resumen de cobertura
|
|
148
|
+
# Mostrar el resumen de cobertura
|
|
149
149
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit --coverage-text | grep "Lines:"
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
#### Cobertura de Código (5 puntos)
|
|
153
153
|
|
|
154
154
|
- [ ] Cobertura global ≥ 80%
|
|
155
|
-
- [ ] Cobertura
|
|
156
|
-
- [ ] Cobertura
|
|
157
|
-
- [ ] Cobertura
|
|
158
|
-
- [ ] Cobertura de
|
|
155
|
+
- [ ] Cobertura del Dominio ≥ 90%
|
|
156
|
+
- [ ] Cobertura de la Aplicación ≥ 85%
|
|
157
|
+
- [ ] Cobertura de la Infraestructura ≥ 70%
|
|
158
|
+
- [ ] Cobertura de ramas (condicionales) ≥ 75%
|
|
159
159
|
- [ ] Informe de cobertura generado (HTML)
|
|
160
|
-
- [ ] Exclusión explícita del código no
|
|
161
|
-
- [ ] Sin código crítico
|
|
162
|
-
- [ ]
|
|
160
|
+
- [ ] Exclusión explícita del código no testable
|
|
161
|
+
- [ ] Sin código crítico sin cobertura
|
|
162
|
+
- [ ] Pruebas de excepciones y casos de error
|
|
163
163
|
- [ ] Configuración de cobertura en phpunit.xml
|
|
164
164
|
|
|
165
165
|
Cobertura global: ___%
|
|
166
|
-
Cobertura
|
|
167
|
-
Cobertura
|
|
168
|
-
Cobertura
|
|
166
|
+
Cobertura del Dominio: ___%
|
|
167
|
+
Cobertura de la Aplicación: ___%
|
|
168
|
+
Cobertura de la Infraestructura: ___%
|
|
169
169
|
|
|
170
170
|
**Puntos obtenidos**: ___/5
|
|
171
171
|
|
|
172
|
-
|
|
172
|
+
Configuración PHPUnit esperada:
|
|
173
|
+
|
|
174
|
+
```xml
|
|
175
|
+
<coverage processUncoveredFiles="true">
|
|
176
|
+
<include>
|
|
177
|
+
<directory suffix=".php">src</directory>
|
|
178
|
+
</include>
|
|
179
|
+
<exclude>
|
|
180
|
+
<directory>src/Kernel.php</directory>
|
|
181
|
+
<directory>src/DataFixtures</directory>
|
|
182
|
+
</exclude>
|
|
183
|
+
<report>
|
|
184
|
+
<html outputDirectory="var/coverage"/>
|
|
185
|
+
<text outputFile="php://stdout" showUncoveredFiles="false"/>
|
|
186
|
+
</report>
|
|
187
|
+
</coverage>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Paso 7: Pruebas de Mutación con Infection
|
|
173
191
|
|
|
174
|
-
|
|
192
|
+
Ejecutar las pruebas de mutación:
|
|
175
193
|
|
|
176
194
|
```bash
|
|
177
195
|
# Verificar si Infection está instalado
|
|
178
|
-
docker run --rm -v $(pwd):/app php:8.2-cli test -f /app/vendor/bin/infection && echo "✅ Infection encontrado" || echo "❌ Infection
|
|
196
|
+
docker run --rm -v $(pwd):/app php:8.2-cli test -f /app/vendor/bin/infection && echo "✅ Infection encontrado" || echo "❌ Infection ausente"
|
|
179
197
|
|
|
180
198
|
# Ejecutar Infection
|
|
181
199
|
docker run --rm -v $(pwd):/app infection/infection --min-msi=70 --min-covered-msi=80 --threads=4
|
|
182
200
|
```
|
|
183
201
|
|
|
184
|
-
####
|
|
202
|
+
#### Pruebas de Mutación (5 puntos)
|
|
185
203
|
|
|
186
204
|
- [ ] Infection instalado y configurado
|
|
187
205
|
- [ ] MSI (Mutation Score Indicator) ≥ 70%
|
|
188
206
|
- [ ] Covered MSI ≥ 80%
|
|
189
|
-
- [ ]
|
|
190
|
-
- [ ]
|
|
207
|
+
- [ ] Las pruebas detectan mutaciones en el Dominio
|
|
208
|
+
- [ ] Las pruebas detectan mutaciones en la Aplicación
|
|
191
209
|
- [ ] Sin mutantes escapados en el código crítico
|
|
192
|
-
- [ ]
|
|
210
|
+
- [ ] Archivo infection.json presente con configuración
|
|
193
211
|
- [ ] Timeout configurado correctamente
|
|
194
|
-
- [ ] Exclusiones justificadas en
|
|
212
|
+
- [ ] Exclusiones justificadas en la configuración
|
|
195
213
|
- [ ] Informe de mutación generado
|
|
196
214
|
|
|
197
215
|
MSI: ___%
|
|
@@ -201,50 +219,231 @@ Mutantes escapados: ___
|
|
|
201
219
|
|
|
202
220
|
**Puntos obtenidos**: ___/5
|
|
203
221
|
|
|
204
|
-
|
|
222
|
+
Configuración esperada de Infection (infection.json):
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"source": {
|
|
227
|
+
"directories": ["src"]
|
|
228
|
+
},
|
|
229
|
+
"logs": {
|
|
230
|
+
"text": "var/infection.log",
|
|
231
|
+
"html": "var/infection-report.html"
|
|
232
|
+
},
|
|
233
|
+
"mutators": {
|
|
234
|
+
"@default": true
|
|
235
|
+
},
|
|
236
|
+
"minMsi": 70,
|
|
237
|
+
"minCoveredMsi": 80
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Paso 8: Cálculo de la Puntuación de Testing
|
|
205
242
|
|
|
206
243
|
**PUNTUACIÓN TESTING**: ___/25 puntos
|
|
207
244
|
|
|
208
245
|
Detalles:
|
|
209
|
-
- Organización de
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
246
|
+
- Organización de las Pruebas: ___/3
|
|
247
|
+
- Pruebas Unitarias del Dominio: ___/7
|
|
248
|
+
- Pruebas de Integración de Infraestructura: ___/5
|
|
249
|
+
- Pruebas Funcionales: ___/5
|
|
213
250
|
- Cobertura de Código: ___/5
|
|
214
|
-
-
|
|
251
|
+
- Pruebas de Mutación: ___/5
|
|
252
|
+
|
|
253
|
+
### Paso 9: Informe Detallado
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
=================================================
|
|
257
|
+
AUDITORÍA DE TESTING SYMFONY
|
|
258
|
+
=================================================
|
|
259
|
+
|
|
260
|
+
📊 PUNTUACIÓN: ___/25
|
|
261
|
+
|
|
262
|
+
📁 Organización de las Pruebas : ___/3 [✅|⚠️|❌]
|
|
263
|
+
🎯 Pruebas Unitarias del Dominio : ___/7 [✅|⚠️|❌]
|
|
264
|
+
🔌 Pruebas de Integración de Infraestructura: ___/5 [✅|⚠️|❌]
|
|
265
|
+
🌐 Pruebas Funcionales : ___/5 [✅|⚠️|❌]
|
|
266
|
+
📊 Cobertura de Código : ___/5 [✅|⚠️|❌]
|
|
267
|
+
🦠 Pruebas de Mutación : ___/5 [✅|⚠️|❌]
|
|
268
|
+
|
|
269
|
+
=================================================
|
|
270
|
+
ESTADÍSTICAS GLOBALES
|
|
271
|
+
=================================================
|
|
272
|
+
|
|
273
|
+
Número total de pruebas : ___
|
|
274
|
+
Pruebas unitarias : ___
|
|
275
|
+
Pruebas de integración : ___
|
|
276
|
+
Pruebas funcionales : ___
|
|
277
|
+
Pruebas Behat : ___
|
|
278
|
+
|
|
279
|
+
Tiempo total de ejecución : ___ segundos
|
|
280
|
+
Cobertura global : ___%
|
|
281
|
+
MSI (Mutation Score) : ___%
|
|
282
|
+
|
|
283
|
+
=================================================
|
|
284
|
+
COBERTURA POR CAPA
|
|
285
|
+
=================================================
|
|
286
|
+
|
|
287
|
+
Dominio : ___% [✅|⚠️|❌] (objetivo: 90%)
|
|
288
|
+
Aplicación : ___% [✅|⚠️|❌] (objetivo: 85%)
|
|
289
|
+
Infraestructura : ___% [✅|⚠️|❌] (objetivo: 70%)
|
|
290
|
+
Presentación : ___% [✅|⚠️|❌] (objetivo: 70%)
|
|
291
|
+
|
|
292
|
+
Archivos sin cobertura : ___
|
|
293
|
+
Métodos sin cobertura : ___
|
|
294
|
+
Líneas sin cobertura : ___
|
|
295
|
+
|
|
296
|
+
=================================================
|
|
297
|
+
PRUEBAS DE MUTACIÓN
|
|
298
|
+
=================================================
|
|
299
|
+
|
|
300
|
+
MSI (Mutation Score) : ___% [✅|⚠️|❌] (objetivo: 70%)
|
|
301
|
+
Covered MSI : ___% [✅|⚠️|❌] (objetivo: 80%)
|
|
302
|
+
|
|
303
|
+
Mutantes generados : ___
|
|
304
|
+
Mutantes eliminados : ___ (detectados por las pruebas)
|
|
305
|
+
Mutantes escapados : ___ (no detectados)
|
|
306
|
+
Mutantes timeout : ___
|
|
307
|
+
Mutantes con error : ___
|
|
308
|
+
|
|
309
|
+
Archivos con mutantes escapados críticos:
|
|
310
|
+
❌ src/Domain/Entity/Order.php - 3 mutantes escapados
|
|
311
|
+
❌ src/Application/UseCase/CreateUser.php - 2 mutantes escapados
|
|
312
|
+
|
|
313
|
+
=================================================
|
|
314
|
+
PROBLEMAS DETECTADOS
|
|
315
|
+
=================================================
|
|
316
|
+
|
|
317
|
+
Pruebas Faltantes:
|
|
318
|
+
❌ Sin pruebas para src/Domain/Entity/Invoice.php
|
|
319
|
+
❌ Sin pruebas para src/Application/UseCase/ProcessPayment.php
|
|
320
|
+
⚠️ Baja cobertura para src/Infrastructure/Repository/OrderRepository.php (45%)
|
|
321
|
+
|
|
322
|
+
Pruebas Lentas:
|
|
323
|
+
⚠️ tests/Integration/RepositoryTest.php - 15s (optimizar con fixtures)
|
|
324
|
+
⚠️ tests/Functional/ApiTest.php - 12s (usar cliente HTTP simulado)
|
|
325
|
+
|
|
326
|
+
Pruebas Inestables (Flaky):
|
|
327
|
+
❌ tests/Integration/EmailServiceTest.php - falla a veces
|
|
328
|
+
⚠️ tests/Functional/CheckoutTest.php - dependiente del orden de ejecución
|
|
329
|
+
|
|
330
|
+
Configuración:
|
|
331
|
+
❌ Infection no instalado
|
|
332
|
+
⚠️ Cobertura de código no configurada en phpunit.xml
|
|
333
|
+
❌ Base de datos de prueba no separada
|
|
334
|
+
|
|
335
|
+
=================================================
|
|
336
|
+
TOP 3 ACCIONES PRIORITARIAS
|
|
337
|
+
=================================================
|
|
338
|
+
|
|
339
|
+
1. 🎯 [ACCIÓN CRÍTICA] - Alcanzar el 80% de cobertura de código
|
|
340
|
+
Impacto: ⭐⭐⭐⭐⭐ | Esfuerzo: 🔥🔥🔥🔥
|
|
341
|
+
- Añadir pruebas para Invoice, ProcessPayment
|
|
342
|
+
- Probar todos los casos de error
|
|
343
|
+
- Probar todas las ramas condicionales
|
|
344
|
+
|
|
345
|
+
2. 🎯 [ACCIÓN IMPORTANTE] - Instalar y configurar Infection
|
|
346
|
+
Impacto: ⭐⭐⭐⭐ | Esfuerzo: 🔥🔥
|
|
347
|
+
Comando: composer require --dev infection/infection
|
|
348
|
+
Objetivo MSI ≥ 70%
|
|
349
|
+
|
|
350
|
+
3. 🎯 [ACCIÓN RECOMENDADA] - Separar y optimizar las pruebas
|
|
351
|
+
Impacto: ⭐⭐⭐ | Esfuerzo: 🔥🔥
|
|
352
|
+
- Separar Unit/Integration/Functional
|
|
353
|
+
- Usar base de datos en memoria para las pruebas
|
|
354
|
+
- Optimizar los fixtures
|
|
355
|
+
|
|
356
|
+
=================================================
|
|
357
|
+
RECOMENDACIONES
|
|
358
|
+
=================================================
|
|
359
|
+
|
|
360
|
+
Instalación de herramientas:
|
|
361
|
+
```bash
|
|
362
|
+
composer require --dev phpunit/phpunit ^10.0
|
|
363
|
+
composer require --dev infection/infection
|
|
364
|
+
composer require --dev symfony/test-pack
|
|
365
|
+
composer require --dev behat/behat
|
|
366
|
+
composer require --dev friends-of-behat/symfony-extension
|
|
367
|
+
composer require --dev doctrine/doctrine-fixtures-bundle
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Configuración phpunit.xml.dist:
|
|
371
|
+
```xml
|
|
372
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
373
|
+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
374
|
+
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
|
375
|
+
bootstrap="tests/bootstrap.php"
|
|
376
|
+
colors="true">
|
|
377
|
+
<testsuites>
|
|
378
|
+
<testsuite name="unit">
|
|
379
|
+
<directory>tests/Unit</directory>
|
|
380
|
+
</testsuite>
|
|
381
|
+
<testsuite name="integration">
|
|
382
|
+
<directory>tests/Integration</directory>
|
|
383
|
+
</testsuite>
|
|
384
|
+
<testsuite name="functional">
|
|
385
|
+
<directory>tests/Functional</directory>
|
|
386
|
+
</testsuite>
|
|
387
|
+
</testsuites>
|
|
388
|
+
<coverage processUncoveredFiles="true">
|
|
389
|
+
<include>
|
|
390
|
+
<directory suffix=".php">src</directory>
|
|
391
|
+
</include>
|
|
392
|
+
</coverage>
|
|
393
|
+
</phpunit>
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
Buenas prácticas:
|
|
397
|
+
- Usar factories para crear los objetos de prueba
|
|
398
|
+
- Usar builders para los objetos complejos
|
|
399
|
+
- Crear aserciones personalizadas reutilizables
|
|
400
|
+
- Aislar las pruebas con setUp/tearDown
|
|
401
|
+
- Usar data providers para probar múltiples casos
|
|
402
|
+
- Simular solo las dependencias externas
|
|
403
|
+
- Probar primero el Happy Path, luego los casos de error
|
|
404
|
+
|
|
405
|
+
CI/CD:
|
|
406
|
+
- Ejecutar las pruebas en cada commit
|
|
407
|
+
- Bloquear los merges si las pruebas fallan
|
|
408
|
+
- Generar y publicar los informes de cobertura
|
|
409
|
+
- Ejecutar Infection en las Pull Requests
|
|
410
|
+
- Alertar si la cobertura disminuye
|
|
411
|
+
|
|
412
|
+
=================================================
|
|
413
|
+
```
|
|
215
414
|
|
|
216
415
|
## Comandos Docker Útiles
|
|
217
416
|
|
|
218
417
|
```bash
|
|
219
|
-
# Ejecutar
|
|
418
|
+
# Ejecutar todas las pruebas
|
|
220
419
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit
|
|
221
420
|
|
|
222
|
-
#
|
|
421
|
+
# Solo pruebas unitarias
|
|
223
422
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit tests/Unit
|
|
224
423
|
|
|
225
|
-
#
|
|
424
|
+
# Pruebas con cobertura
|
|
226
425
|
docker run --rm -v $(pwd):/app php:8.2-cli php -d xdebug.mode=coverage /app/vendor/bin/phpunit --coverage-text
|
|
227
426
|
|
|
228
427
|
# Infection (mutation testing)
|
|
229
428
|
docker run --rm -v $(pwd):/app infection/infection --threads=4 --min-msi=70
|
|
230
429
|
|
|
231
|
-
# Behat (
|
|
430
|
+
# Behat (pruebas BDD)
|
|
232
431
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/behat
|
|
233
432
|
|
|
234
|
-
# Listar
|
|
433
|
+
# Listar todas las pruebas
|
|
235
434
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit --list-tests
|
|
236
435
|
|
|
237
|
-
# Ejecutar
|
|
436
|
+
# Ejecutar una prueba específica
|
|
238
437
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit tests/Unit/Domain/Entity/UserTest.php
|
|
239
438
|
|
|
240
|
-
#
|
|
439
|
+
# Pruebas con salida detallada
|
|
241
440
|
docker run --rm -v $(pwd):/app php:8.2-cli /app/vendor/bin/phpunit --testdox
|
|
242
441
|
```
|
|
243
442
|
|
|
244
443
|
## IMPORTANTE
|
|
245
444
|
|
|
246
|
-
-
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
-
|
|
445
|
+
- Usar SIEMPRE Docker para los comandos
|
|
446
|
+
- NUNCA almacenar archivos en /tmp (usar var/ del proyecto)
|
|
447
|
+
- Proporcionar estadísticas precisas
|
|
448
|
+
- Identificar los archivos críticos sin pruebas
|
|
449
|
+
- Sugerir pruebas concretas a añadir
|