Test driving-qml
Upcoming SlideShare
Loading in...5

Test driving-qml



How to test-drive your Qt QML code. Overview on how you do simple testing, UI level testing, synchronous testing, data-driven testing. ...

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 in the Helsinki MeeGo meetup in 2012.



Total Views
Views on SlideShare
Embed Views



33 Embeds 19,314

http://agilesoftwaredevelopment.com 16305
http://www.agilesoftwaredevelopment.com 2077
http://www.rocketcityhooligans.com 407
http://rocketcityhooligans.com 347
http://feeds.agilesoftwaredevelopment.com 66
http://webcache.googleusercontent.com 18
http://scrum.collected.info 17
https://twitter.com 13
http://translate.googleusercontent.com 11
http://codingthis.com 11
http://theoldreader.com 6
http://knowledgehubnetworks.com 5
http://vtunnel.com 3
http://web.archive.org 3
http://www.hanrss.com 2
http://xss.yandex.net 2
http://www.feedreader.com 2
http://www.newsblur.com 2
http://cache.baiducontent.com 2
http://agilesoftwaredevelopment.com. 2
https://www.google.com.mx 1
http://smashingreader.com 1
https://www.linkedin.com 1
http://emulator.mobilewebsitesubmit.com 1
http://www.agile-tools.net 1
http://inoreader.com 1
http://www.inoreader.com 1
http://pre-excursion16.veritise.com 1
http://www.agilesoftwaredevelopment.com. 1
http://www.bluemini.com 1 1
http://ymb16 1
http://feedreader.com 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • Adding numbers continuously – property bindingChange color when result is over 1000 => .toString() when comparing complex built-in objectsMove to states. Change the default color
  • Increase font on mouseClick – when:windowShown

Test driving-qml Test driving-qml Presentation Transcript

  • Test-Driving QML Helsinki Artem Marchenko Helsinki Qt Meetup May 15, 2012
  • Artem Marchenkohttp://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
  • 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.promakemake installmake docsmake checkProject 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/bashclear/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 – 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 (possibly fixed for 4.8) – 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. Is supposed to be fixed for Qt 5.0• 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
  • My company TwineLAB Oy• Startup with proven financing• We need more people excited about high quality software and bringing end-to-end products to people• Buzzwords: – Qt/QML – Linux platform – high quality SW – video/audio codecs – server-side Java / GWT – large-scale metrics artem.marchenko@twinelab.com
  • Q&As time You can find these [and nearly identical older version of the same] slides athttp://agilesoftwaredevelopment.com/tags/tdd Further contacts: http://fi.linkedin.com/in/artemmarchenko artem.marchenko@twinelab.com