Testing Qt Model-View Implementations Stephen Kelly July 2010 T - - PowerPoint PPT Presentation

testing qt model view implementations stephen kelly july
SMART_READER_LITE
LIVE PREVIEW

Testing Qt Model-View Implementations Stephen Kelly July 2010 T - - PowerPoint PPT Presentation

Testing Qt Model-View Implementations Stephen Kelly July 2010 T esting Model-View Implementations Designing testable code High-level Model-View design T est-drivers and mock objects Unit test execution KDE ItemViews


slide-1
SLIDE 1

Testing Qt Model-View Implementations Stephen Kelly – July 2010

slide-2
SLIDE 2

T esting Model-View Implementations

  • Designing testable code
  • High-level Model-View design
  • T

est-drivers and mock objects

  • Unit test execution
  • KDE ItemViews library
slide-3
SLIDE 3

T esting Model-View Implementations

  • Designing testable code

– Motivation

slide-4
SLIDE 4

T esting Model-View Implementations

  • Designing testable code

– Motivation Class under test Class under test Dependency Dependency Test driver Test driver Dependency Dependency Dependency Dependency

slide-5
SLIDE 5

T esting Model-View Implementations

  • Designing testable code

– Motivation Class under test Class under test Dependency Dependency Test driver Test driver Dependency Dependency Dependency Dependency

slide-6
SLIDE 6

T esting Model-View Implementations

  • Designing testable code

– Motivation – Abstraction Class under test Class under test Fake Dependency Fake Dependency Test driver Test driver Fake Dependency Fake Dependency Fake Dependency Fake Dependency

slide-7
SLIDE 7

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns Model Model View View Delegate Delegate Selections Selections

slide-8
SLIDE 8

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns Model Model View View Delegate Delegate Selections Selections Object store Object store

slide-9
SLIDE 9

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns Model Model View View Delegate Delegate Selections Selections Fake Object store Fake Object store

slide-10
SLIDE 10

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns Model Model Test driver Test driver Fake Object store Fake Object store

slide-11
SLIDE 11

T esting Model-View Implementations

  • T

est drivers and mock objects

– Real-world model view EMail Model EMail Model Email view

slide-12
SLIDE 12

T esting Model-View Implementations

  • T

est drivers and mock objects

– Real-world model view EMail Model EMail Model Test Driver Test Driver

slide-13
SLIDE 13

T esting Model-View Implementations

  • T

est drivers and mock objects

– Real-world model view – Dependency injection EMail Model EMail Model Test Driver Test Driver Fake Data Fake Data

slide-14
SLIDE 14

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns – Abstraction Proxy Proxy View View Model Model

slide-15
SLIDE 15

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns – Abstraction Proxy Proxy View View Model Model

slide-16
SLIDE 16

T esting Model-View Implementations

  • High-level Model-View design

– Separation of concerns – Abstraction View View Model Model

slide-17
SLIDE 17

T esting Model-View Implementations

  • T

est drivers and mock objects

– Real-world model view – Dependency injection Proxy Proxy View View Model Model

slide-18
SLIDE 18

T esting Model-View Implementations

Test driver Test driver Fake Model Fake Model Proxy Proxy

  • T

est drivers and mock objects

– Real-world model view – Dependency injection – setSourceModel(new FakeModel);

slide-19
SLIDE 19

T esting Model-View Implementations

  • KDE ItemViews test suite

– Fake source model (interpreter pattern) – Fake selection model – ProxyModelT

est

– ModelSpy

slide-20
SLIDE 20

T esting Model-View Implementations

  • KDE ItemViews

– KSelectionProxyModel – KDescendantsProxyModel – KReparentingProxyModel

  • KDE ItemViews test suite

– Fake source model (interpreter pattern) – Fake selection model – ProxyModelT

est

– ModelSpy

slide-21
SLIDE 21

T esting Model-View Implementations

  • Unit test execution

– Multiple executions – Configurable tests for configurable proxies – Individually executable – Re-usable

slide-22
SLIDE 22

T esting Model-View Implementations

  • Summary

– Dependency injection – Simplify complex systems – 1,000's of tests – Re-usable – kdelibs/kdeui/tests/proxymodeltestapp

slide-23
SLIDE 23

T esting Model-View Implementations

Questions & Answers