-
Notifications
You must be signed in to change notification settings - Fork 129
/
Copy pathcobertura.html
138 lines (116 loc) · 5.9 KB
/
cobertura.html
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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Desarrollo ágil: Tests de cobertura</title>
<link rel="stylesheet" href="dist/reset.css">
<link rel="stylesheet" href="dist/reveal.css">
<link rel="stylesheet" href="dist/extra.css">
<link rel="stylesheet" href="dist/agil.css" id="theme">
<!-- Theme used for syntax highlighted code -->
<link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme">
</head>
<body>
<div class="reveal">
<div class="slides">
<section><h2>Desarrollo ágil</h2>
<h1>Tests de cobertura</h1>
<h3><a href="https://jj.github.io/curso-tdd/temas/cobertura"><code>jj.github.io/curso-tdd/temas/cobertura</code></a></h3>
</section>
<section><h2>✓ TODO</h2>
<h2 class="fragment">□ ¿Se ha creado una hoja
de ruta en los milestones? </h2>
<h2 class="fragment">□ ¿Se ha configurado un
sistema de CI?</h2>
<h2 class="fragment">□ ¿Se ha reorganizado la
lógica de negocio con tests usando inversión de dependencias?</h2>
</section>
<section data-background="https://live.staticflickr.com/8754/27848828203_78234bea95_k_d.jpg">
<h1>Si no se ha comprobado, está roto</h1>
</section>
<section><h1>Cobertura: número de <em>caminos de
código</em> que los tests ejercitan</h1>
<aside class="notes">Si se usa TDD es difícil
que aparezcan caminos descubiertos, pero puede aparecer código no
cubierto en refactorizaciones o en código
legacy. También puede haber <em>corner
cases</em> que no estén cubiertos por ningún test
(aunque haya código para ellos</aside>
</section>
<section><!-- Mejores prácticas -->
<section><h1>Buscar el nivel ideal de
cobertura</h1>
</section>
<section><h1>Usar los tests de cobertura para
identificar código <em>muerto</em></h1>
</section>
<section><h1>En proyectos libres, usarlo para
código añadido</h1>
</section>
<section><h1>En combinación con el
<em>profiler</em>, identificar cuellos de
botella</h1>
</section>
</section>
<section><!-- como se hace -->
<section
data-background="https://live.staticflickr.com/4315/35807522581_e6582aa183_k_d.jpg">
<h1>Elegir un marco/servicio de
cobertura.</h1>
</section>
<section><h1>Generación de informes a partir
del código</h1>
<pre><code>go test
-coverprofile=coverage.out</code></pre>
</section>
<section><h1>Visualización de esos
informes</h1>
<img src="../img/gocover.png"
alt="cobertura chugga">
<aside class="notes">Antes de pasar por la
refactorización</aside>
</section>
<section><h1>Refactorización</h1>
<img src="../img/gocover-2.png"
alt="cobertura menos chunga">
<aside class="notes">En muchos casos, los tests de
cobertura revelan problemas en el código que hay que
refactorizar; por ejemplo, mal diseño de ramificaciones,
o excepciones mal planteadas</aside>
</section>
</section>
<section data-background="../img/cobertura.png"><h1>Integrar los tests de cobertura en
integración continua</h1>
</section>
<section><h1>Usando servicios online de cobertura</h1>
<h1 class="fragment">Coveralls, codecov</h1>
</section>
<section><h1>✓ TODO hito 15 (último)</h1>
<h2 class="fragment">Configurar tests de
cobertura e integrarlos en CI</h2>
<h3 class="fragment"><code>[gestor de
tareas] coverage</code> en el <code>README.md</code></h3>
<h3 class="fragment">Badge de codecov con
cobertura aceptable.</h3>
</section>
</div>
</div>
<script src="dist/reveal.js"></script>
<script src="plugin/notes/notes.js"></script>
<script src="plugin/markdown/markdown.js"></script>
<script src="plugin/highlight/highlight.js"></script>
<script>
// More info about initialization & config:
// - https://revealjs.com/initialization/
// - https://revealjs.com/config/
Reveal.initialize({
hash: true,
width: "95%",
slideNumber: true,
// Learn about plugins: https://revealjs.com/plugins/
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
});
</script>
</body>
</html>