Test driving QML

Post on 24-May-2015

59.315 views 0 download

Tags:

description

How to test-drive your Qt QML code. Overview on how you do simple testing, UI level testing, synchronous testing, data-driven testing. These are the slides used on the Tampere MeeGo meetup on March 15, 2011 and text may not be super clear for those who didn't attend the meetup. You can still download the example and examine it.

Transcript of Test driving QML

Test-Driving QML

Artem MarchenkoMarch 15, 2011

Artem Marchenko

Product Manager shipping multi-

hundred MEur productsScrum Master, Practitioner, Product Owner and CoachThree times Forum Nokia

ChampionPrivate entrepreneurAvailable for hire

Product Manager, Researcher, Coach

http://fi.linkedin.com/in/artemmarchenko

Test-Driven Development. Or just testing QML

• What TDD is about• Getting started• Simple Synchronous test• Simulating mouse and keyboard actions• Asynchronous tests (verifying callbacks)• Data-driven tests• Current limitations• Q&As

Test-Driven Development

Remove

duplication

Example of a QML-code developed via TDD

Getting started 1(3)git clone git://gitorious.org/qt-labs/qtest-qml.gitCloning into qtest-qml...remote: Counting objects: 888, done.remote: Compressing objects: 100% (669/669), done.remote: Total 888 (delta 445), reused 393 (delta 187)Receiving objects: 100% (888/888), 411.11 KiB, done.Resolving deltas: 100% (445/445), done.

cd qtest-qml/qmake qtest-qml.pro makemake installmake docsmake check

Project page: http://qt.gitorious.net/qt-labs/qtest-qml

Getting started 2(3)

• Create the simplest test in your project

Getting started 3(2)

• And a script that runs the test: runTests.sh in this case

#!/bin/bash

clear/Users/artem/QtSDK/Desktop/Qt/471/gcc/bin/QMLViewer.app/Contents/MacOS/QMLViewer tst_tddCalculator2.qml

Simple synchronous tests

UI level: simulating mouse click

UI level: simulating touch and drag

Asynchronous testing: tryCompare

Asynchronous testing: SignalSpy

Data-driven tests

Current Limitations• Installation doesn’t install qtest-qml to QtCreator

2.1 Tech Preview– Not that you would need it for TDD, but if you are into

“just testing” already written code, debugger may be helpful

• Bug: only one TestCase is allowed: http://bugreports.qt.nokia.com/browse/QTBUG-17200

– It makes init() and cleanup nearly useless– Organize your test structure by your own tools

• Small difficulties comparing built-in classes (e.g. color)– toString() helps most of the time

Current limitations

• Very strange errors when object/property can be accessed e.g. because of a typo

• Segmentation faults, sometimes even “file not found”• In 95% of cases that is a typo or an attempt to access a

non-public property

Current limitations

• SignalSpy can only count – It cannot examine the signal arguments or the state of

other objects• Benchmarking is a part of a qtest-qml, but doesn’t

work properly– That is I failed to make it run for a given amount of

times (most of the time it does just a single run)• No built-in device test runners

– Though you can certainly, embed a “run tests” button right into your application

Thank you

Q&As time

You can find these slides at http://agilesoftwaredevelopment.com/tags/tdd