El documento habla sobre diferentes métodos para probar código, incluyendo QTestLib para pruebas unitarias en C++ y Qt, y Testability para pruebas de sistema a través de scripts de Ruby. Explica cómo usar QTestLib para verificar condiciones, comparar valores, y probar interfaces gráficas, y cómo Testability permite visualizar la estructura de una aplicación y ejecutar scripts de prueba en un servidor.
1. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Testeando tu código
Albert Astals Cid
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
2. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
3. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Tipos de testing
Unit Testing
QTestLib
System Testing
Testability
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
4. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
QTestLib
Forma parte de Qt
C++
Introducido en Qt 4.1
Dirigido a Unit Testing (white box)
Soporte para GUI, señales, eventos
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
5. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
QTestLib
Forma parte de Qt
C++
Introducido en Qt 4.1
Dirigido a Unit Testing (white box)
Soporte para GUI, señales, eventos
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
6. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
QTestLib (test básicos)
Crear una clase que hereda de QObject
Cada slot es un test
QVERIFY para condiciones true/false
QCOMPARE para comparaciones de dos valores
ejemplo1/main.cpp
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
7. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
QTestLib (compilar + ejecutar)
Linkar con qtestlib
./programa_test
./programa_test nombre_de_slot
Varios flags
-random
-silent
-xml
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
8. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
QTestLib (datos para tests)
Permite añadir “iteraciones” a un test sin añadir código
QTest::addColumn, para añadir columna de datos
QTest::newRow, para añadir fila de datos
QFETCH para recuperar datos de una fila
ejemplo2/main.cpp
Usar flag -v2 para ver que realmente se testean los 3 casos ;-)
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
9. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
QTestLib (tests gráficos)
QTest::key[Clicks|Click|Press|Release]
QTest::mouse[Click|DClick|Move|Press|Release]
QTest::touchEvent()
QTest::qWaitForWindowShown
QSignalSpy
ejemplo3/main.cpp
ejemplo4/main.cpp
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
10. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Testability
Desarrollado por Nokia (no el departamento de Qt)
Infraestructura cliente/servidor
Scripts Ruby
No es parte de Qt (Qt 4.6 añade soporte)
Dirigido a System Testing (gray box)
Soporte para GUI, señales, etc
kdelibs >= 4.8.3 (para programas basados en kdelibs)
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
11. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Testability (tdriver_visualizer)
Visualizador de la estructura de la aplicación
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
12. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Testability (scripts)
Ruby
Acceso a metodos y propiedades del objeto
Ejecutados en el servidor
ejemplo5/test.rb
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>
13. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Testeando tu código
Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <aacid@kde.org>