Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - Marcus Harringer and Christine Mitterbauer

487 views

Published on

OSGi DevCon 2008

This tutorial introduces test-driven methodologies for developing OSGi-based [1] Java ME [2] applications. We present a solution using the Eclipse IDE and a modified version of the FitNesse testing framework [3]. FitNesse extends the Framework for Integrated Tests (FIT) [4] with a wiki interface.

One of the main challenges when developing embedded systems is the fact that development and execution take place on different platforms. Ideally, application code and corresponding automated tests are executed on the target execution platform. Common practice, however, is that automated tests are mostly performed on the development machine using simulators - tests on the target platform are often performed manually.

Another challenge in software development is customer acceptance. Developer understanding and customer expectation based on written requirement specifications often differ drastically. These misunderstandings can result in problems which are recognized fairly late in the development process, particularly when acceptance tests are performed with the final software version only.

Why not encourage the customer to express his requirements and expectations as acceptance tests in a human readable (while also executable) form ? If this method is adpoted, developers are able to implement the software which fulfills the defined requirement tests, and acceptance procedures become a verification process of the test execution. FitNesse closes this gap by providing a wiki with an easy to learn markup language to define acceptance tests and an extensible feature set to execute and verify these tests.

In this tutorial we present our modified version of FIT/FitNesse, called eFitNesse, a bundle that enables OSGi applications to be tested via the FitNesse wiki interface. eFitNesse enables OSGi applications that can either run on the development machine or on an embedded Java ME-enabled target device. eFitNesse can be seamlessly integrated into the already available Eclipse plug-in for FitNesse [5].

We discuss the extension of the FitNesse framework to enable
Java ME
Remote debugging
Execution on the target platform
Support for standard JUnit test cases to unify unit and acceptance testing within one framework and user interface
Extendible system analysis feature with standard queries for system
properties or OSGi bundle states

We will also show live demonstrations for how to express acceptance tests within eFitNesse and test them on embedded applications running on a Linux Gumstix device and a Windows Mobile smartphone.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Methodologies for Test-Driven Development of OSGi enabled Embedded Devices - Marcus Harringer and Christine Mitterbauer

  1. 1. © 2008 by Christine Mitterbauer, Marcus Harringer | MicroDoc GmbH | www.microdoc.com Tutorial Methodologies for Test-Driven Development of OSGi enabled Embedded Devices
  2. 2. 2 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Or .....
  3. 3. 3 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 About the Tutorial The tutorial includes an overview, some real life examples, demos and hands-on excercises Requirements Notebook Java ME Eclipse 3.3 Eclipse FitNesse Plug-In We provide the contents of the tutorial on CD-ROM and USB stick Slides PDF-Article eFitNesse software About → Challenges → Solution → eFitNesse → Demos
  4. 4. 4 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 About us – MicroDoc About → Challenges → Solution → eFitNesse → Demos Located in Munich – Germany Test Driven Process Model using Java and OSGi Cross industry expertise Financial Airline Automation Automotive Logistics IT First european business partner for IBM’s embedded Java platform Customized platform ports Distribution and licensing for the IBM embedded product range. Active member of the Eclipse Foundation Open Source Business Foundation www.microdoc.com
  5. 5. 5 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 About our partners and projects in the embedded space About → Challenges → Solution → eFitNesse → Demos • IBM Business Partner • AMD • SKIDATA AG • Daimler Fleetboard • Lufthansa • Trolltech • Emlix • Feig Electronic • Banksys • Gumstix
  6. 6. 6 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Challenges in Embedded Development Development environment versus runtime environment Device unit costs versus software development costs High end user expectations Bug fixing much more complicated and expensive no or minimal access to customer devices Requirements High stablility and quality Advanced requirements for recovery strategies Remote update possibilities Remote analyzing features About → Challenges → Solution → eFitNesse → Demos
  7. 7. 7 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Our experiences in real-life projects About → Challenges → Solution → eFitNesse → Demos Number of features Time needed for testing Testing and Features Exponential relation if testing is done manually A lot of tests are performed manually on the embedded device. Customers complain about time- consuming quality assurance Customers tend to reduce full test coverage Software quality suffers
  8. 8. 8 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Another experience in a real-life project Legacy Systems Customer with a long-running embedded system in the area of access control systems Grown legacy software with all known problems: Hard to maintain/ extend No testing possibilities besides manual testing Each change leads to a quality risk Customer Decision New software architecture → open source, OSGi Focus on → changeability, maintainability, extendibility, testability Introduction of → Agile methods, test-driven development About → Challenges → Solution → eFitNesse → Demos
  9. 9. 9 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Need for a testing framework Ideally usable for all testing layers Tests deployable and runnable on the target device Communication basis with the customer Requirement specification (acceptance tests) Bug reporting Better understanding of business use cases Test automation support Less manual test effort Continuous testing Tests as application documentation Reduce time to market About → Challenges → Solution → eFitNesse → Demos
  10. 10. 10 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Our Solution Story Tests / Acceptance Tests Encourage your customer to define expectations and requirements as story tests Clear communication through concrete examples Business rules as executable tests Implement story-driven / test-driven Acceptance procedure = test verification Continuous Testing Reduce Risk / Improve Software Quality Test from a business perspective Integration in a Continuous Build process Test on the target platform / on the embedded device About → Challenges → Solution → eFitNesse → Demos
  11. 11. 11 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FIT/FitNesse FIT - Framework for Integrated Tests captures business rules in a simple table format FitNesse Collaborative Wiki for building and executing tests Runs tests by reading HTML files, looks for tables, uses data in the tables to execute tests and compare results to expectations Easy to learn Markup Language Business rules fall into two broad categories Rules that calculate something or make decisions Business process or workflow specification on how something gets done and what the outcomes should be About → Challenges → Solution → eFitNesse → Demos
  12. 12. 12 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Two Minute Example About → Challenges → Solution → eFitNesse → Demos Test Case Test division of calculator application Tests are expressed as table of: Input Expected Output Input: numerator, denominator Expected output: quotient 10 : 2 = 5 Test Case
  13. 13. 13 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Two Minute Example About → Challenges → Solution → eFitNesse → Demos Test Case Java Code (Fixture) Wiki Page (Test Table)
  14. 14. 14 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Two Minute Example About → Challenges → Solution → eFitNesse → Demos Eclipse Setup Install BandXI FitNesse Plug-In Eclipse Update Site: http://www.bandxi.com/fitnesse/ Create a new Project Create source folder called “src” Add FitNesse to project class path (right click -> FitNesse) Create a wiki folder called “FitnesseRoot” Configure the root directory of the FitNesse plugin point to your “FitNesseRoot” Start FitNesse Plug-In
  15. 15. 15 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Two Minute Example About → Challenges → Solution → eFitNesse → Demos Wiki page Edit wiki page and enter test table Set page properties to “test”
  16. 16. 16 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Two Minute Example About → Challenges → Solution → eFitNesse → Demos Wiki Page (Test Table) |examples.Division| |numerator|denominator|quotient()| |10|2|5| |10|1|10| Java Code (Fixture) package examples; import com.microdoc.efitnesse.fit.ColumnFixture; public class Division extends ColumnFixture { public double numerator, denominator; public double quotient() { return numerator/denominator; } }
  17. 17. 17 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Two Minute Example About → Challenges → Solution → eFitNesse → Demos
  18. 18. 18 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Wiki Pages Wikis, SubWikis Page Properties, Refactoring Pages PageHeader, PageFooter SetUp, TearDown Useful built-in support Index of contained subwiki pages: !contents Include other pages: !include Collapsable sections: !*****> Variables: !define Keyword support: null, blank, error About → Challenges → Solution → eFitNesse → Demos
  19. 19. 19 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 FitNesse – Basic Fixture Types ColumnFixture Rows of data represent inputs and expected outputs RowFixture Check the exact set of result objects of a query ActionFixture Useful for emulating a series of events Additional support in fixtures Standard Java data types, Arrays Parameters Comparison expressions in numeric table cells About → Challenges → Solution → eFitNesse → Demos missing / surplus-marker execute(), reset() start(), press(), check()
  20. 20. 20 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 About → Challenges → Solution → eFitNesse → Demos Java Micro Edition OSGi Applications Remote Test Execution Remote Debugging About → Challenges → Solution → eFitNesse → Demos System Analysis JUnit Test Cases Timeout behaviour
  21. 21. 21 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Architecture – Developer‘s View About → Challenges → Solution → eFitNesse → Demos
  22. 22. 22 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Architecture – Technical View About → Challenges → Solution → eFitNesse → Demos Webserver hosting Wiki Testing Framework (Fit) Application HTTP ServiceFitServlet OSGi container HTTP
  23. 23. 23 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Extended Features – QueryRowFixture Extended RowFixture Assertion mode (default behaviour) Query/Analyze mode (argument „query“) Fixtures already available for analysis of OSGi bundles OSGi services System properties About → Challenges → Solution → eFitNesse → Demos
  24. 24. 24 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Extended Feature – JUnitFixture Generic fixture to run JUnit Tests within FitNesse Advantage: One user interface for different test levels About → Challenges → Solution → eFitNesse → Demos
  25. 25. 25 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Extended Feature – TimeoutColumnFixture Extends ColumnFixture Abstract superclass for userdefined fixtures Waits for the expected results within a distinct timeout interval without canceling the test Redos assertion of the results until the assertion is passed or the max timeout is reached The interval between two assertions is configurable Useful for Asynchronous operations Slow devices Device specific delays About → Challenges → Solution → eFitNesse → Demos
  26. 26. 26 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Demo 1: Automated Tests SKIDATA AG www.skidata.com Access Control Systems Several thousands of access transactions per day Methodology was adopted within the customer‘s QA department Used for automated regression tests About → Challenges → Solution → eFitNesse → Demos
  27. 27. 27 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Demo 1: Automated Tests (cont‘d) About → Challenges → Solution → eFitNesse → Demos
  28. 28. 28 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Demo 2: GUI Testing FleetBoard DispoPilot http://www.fleetboard.com Automatic GUI Testing GUI Fixtures with timeout behaviour Edit Button-Cick Hardkey-Click Select Assert Pages, Dialogs Test Recorder Tool GUI Analyze Feature About → Challenges → Solution → eFitNesse → Demos
  29. 29. 29 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Demo 3: Hands-On Embedded Devices Gumstix device Windows Mobile Smartphone Software eFitNesse including runtime, documentation, wiki, and examples About → Challenges → Solution → eFitNesse → Demos
  30. 30. 30 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Outlook Continuous Build Integration Wiki improvements Extended Keywords Embedded HTML, PHP Flash About → Challenges → Solution → eFitNesse → Demos
  31. 31. 31 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Useful Links Technical Paper – eFitnesse http://www.microdoc.com/efitnesse FitNesse Testing Framework http://fitnesse.org Patang Testing Framework http://patang.sourceforge.net Eclipse FitNesse Plug-In http://www.bandxi.com/fitnesse/index.html General information about embedded Java and OSGi http://www.microdoc.com/ Custom Embedded Java Virtual Machines http://www.microdoc.com/microdoc/products About → Challenges → Solution → eFitNesse → Demos
  32. 32. 32 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Trademarks & Copyrights Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries. IBM, and WebSphere are trademarks or registered trademarks of IBM Corporation in the United States and other countries. OSGi is a trademark of the OSGi Allicance. All other trademarks montioned are trademarks of the resperctive owners About → Challenges → Solution → eFitNesse → Demos
  33. 33. 33 Methodologies for Test-Driven Development of OSGi enabled embedded devices | How fit is your device ? | © 2008 by C.Mitterbauer, M.Harringer made available under the EPL v1.0 Thanks About → Challenges → Solution → eFitNesse → Demos

×