DT8021 Ed 2016
- 1 Contact
- 2 Objectives
- 3 Assessment
- 4 Slides and Study Material
- 5 Project Description
- 6 Academic Papers
- 7 Acknowledgment
- 8 Back to Home
- Office: E 305
- Telephone 035 16 71 22
- Email: firstname.lastname@example.org
Lectures: 4 live lectures, 4 recorded lectures
Labs: 3 lab sessions, 1 presentation sessions
- Knowledge and understanding
- Explain various classification of test techniques
- Explain behavioral modeling, techniques and model-based testing and test case generation from behavioral models
- Explain the latest research trends in the area of testing and alternatives to testing, particularly, model checking
- Skills and abilities
- Apply the traditional test techniques to realistic examples
- Write abstract behavioral models for embedded systems
- Use the behavioral models in order to perform model-based testing.
- Judgement and approach
- Analyse the suitability of various test techniques given the test assumptions and test goals
- Analyse research results in the field of testing embedded systems
Assessment is performed in terms of the deliverable of the paper presentation (oral presentation + report), the practical project (software + report) and a written examination. Each of these will contribute to one-third of the final mark.
Final Examination at Chalmers/GU, March 2015, Final Examination at Chalmers / GU, March 2015 with Solutions
Final Examination at Chalmers/GU, April 2015, Final Examination at Chalmers / GU, April 2015 with Solutions
Slides and Study Material
|Lecture||Handouts / Slides||Other Material|
| Lecture 1: Terminology and Functional Testing
|Intro: Handouts Intro: Slides||
Chapters 6 and 7 of Jorgensen
Chapters 1 and 4 of Ammann and Offutt
| Lecture 2: Test Driven Development and Integration Testing
April 21, 2016
| Lecture 3: Coverage Criteria
| Chapter 2 Ammann and Offutt
Chapters 9 and 10 of Jorgensen
| Lecture 4: Data Flow Testing
| Practical 1: Coverage and Data Flow Testing
April 28, 2016
| Lecture 5: Model Checking
| Practical 2: Model Checking
May 4, 2016
| Guest Lecture: UI Testing
VGT Cheat Sheet (Examples, Exercises)
| Lecture 6: Slicing and Debugging
Chapters 5, 6, and 13 of Zeller M. Wiser, Program Slicing
| Practical 3: Slicing and Model Examination
May 19, 2016
- P. Ammann and J. Offutt. Introduction to Software Testing. Cambridge, 2008.
Recommended Reading Material
- P.C. Jorgensen. Software Testing: A Craftsman’s Approach. Auerbach Publications, 3rd edition, 2008.
- L. Aceto, A. Ingolfsdottir, K.G. Larsen, and J. Srba. Reactive Systems: Modelling, Specification and Verification, Cambridge University Press, 2010.
- A. Zeller. Why Programs Fail? Morgan Kaufmann, 2nd edition, 2009.
- Sujoy Acharya. Test-driven development with Mockito.
- Marcin Grzejszczak. Instant Mockito.
- F. Vaandrager, A First Introduction to Uppaal. In J. Tretmans, editor. Quasimodo Handbook. To appear.
- M. Wiser, Program Slicing, Proc. of ICSE'81, pp. 439-449, ACM, 1981.
The practical assignment (called "project" henceforth) is about Test-Driven Development of a communication protocol between two processor boards for an autonomous vehicle. One processor board, henceforth called Arduino, is connected to sensors and periodically sends through a USB channel to the other processor, called Odroid, 3 values concerning wheel torque, distance measured by the ultrasonic sensor and distance measured by the infrared sensor. The other processor is connected to the servo and periodically sends through a USB channel to the first processor speed and steering angle.
We develop the protocol at the Arduino side as a Java class in a test-driven fashion and integrate it with a mocked USB channel and Odroid. Subsequently, we build and test a simple command-line interface that sends and receive messages that makes call to the send interfaces on either sides and periodically reads the received values on the other side. Finally, we make a model of the protocol and model check its correctness.
From the testing and verification perspective, the project comprises the application of the following techniques:
- test-driven development,
- unit testing using jUnit,
- gathering coverage metrics using EclEmma (or similar tools),
- integration testing, including developing stubs using Mockito (or similar tools),
- model checking using Uppaal, and
- UI testing using the Sikuli tool.
This is a group project that is to be carried out in groups of 2. You need to have formed your groups in GUL and emailed your group structure to the lecturer and both instructors by Thursday January 18 at 17:00; please put '[DT8021] Group Registration' in the subject line of your email.
The deliverables are to be delivered personally to the lecturer and discussed orally in the presence of all team members. The deliverables comprise a report and the implementation code: the report should document the major steps in each phase and code snippets (few concise examples) of how they are implemented and possibly screen shots of the results. Extensive pieces of program code should not be included in the report. The most important factors in judging the reports are: their logical structure and sufficiently clear explanation of the steps (all figures and code snippets should be accompanied with clear descriptions).
The deadlines are to be respected and each phase is to be sent by an email to the lecturer and discussed with him before the deadline.
As a general principle, when you find an ambiguity in the requirements, make a reasonable assumption and document it clearly in your report.
After you deliver each phase, each and every member of the group should send an email with an estimate of each member's participation in that phase (in percents) and the parts of the deliverable each member has contributed to.
|Phase 1: TDD of a Unit||April 28, 2016 23:59|
|Phase 2: Integration Testing||May 12, 2016 23:59|
|Phase 3: UI Testing and Model Checking||May 22, 2016 23:59|
Each group is supposed to write a short report on an academic paper and present it in the allocated time-slot. The following papers are examples of papers that can be selected for this exercise:
- Model Checking Lots of Systems: Efficient Verification of Temporal Properties in Software Product Lines
- Does this fault lead to failure? Combining refinement and input–output conformance checking in fault-oriented test-case generation
The report is to be submitted on May 15; the presentations will be held on May 20.
This course is based on the material produced for several earlier editions given at TU Eindhoven, the Netherlands. Part of the material has been produced (or is based on the produced material) by Judi Romijn and Tim Willemse.