Testing

13
Sebastian Kügler <[email protected]>, FrOSCon 2006 Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]> Testeando tu código Testeando tu código Albert Astals Cid

Transcript of Testing

Page 1: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código

Testeando tu códigoAlbert Astals Cid

Page 2: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código

Page 3: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código

Tipos de testing

Unit Testing

QTestLib

System Testing

Testability

Page 4: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

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

Page 5: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

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

Page 6: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

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

Page 7: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código

QTestLib (compilar + ejecutar)

Linkar con qtestlib

./programa_test

./programa_test nombre_de_slot

Varios flags

-random

-silent

-xml

Page 8: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

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 ;-)

Page 9: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

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

Page 10: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

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)

Page 11: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código

Testability (tdriver_visualizer)

Visualizador de la estructura de la aplicación

Page 12: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código

Testability (scripts)

Ruby

Acceso a metodos y propiedades del objeto

Ejecutados en el servidor

ejemplo5/test.rb

Page 13: Testing

Sebastian Kügler <[email protected]>, FrOSCon 2006

Akademy-es 2012 – Zaragoza – 19 de Mayo - Albert Astals Cid <[email protected]>

Testeando tu código