DT8021 Ed 2016

From CERES
Jump to: navigation, search

Contact

Lecturer

Mohammad Mousavi

Schedule

Lectures: 4 live lectures, 4 recorded lectures

Labs: 3 lab sessions, 1 presentation sessions

Objectives

  • 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

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.


Assessment Guide 2015

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

Slides

Lecture Handouts / Slides Other Material
Lecture 1: Terminology and Functional Testing

April, 2016

Intro: Handouts Intro: Slides

Functional Test: Handouts Functional Test: Slides

Chapters 6 and 7 of Jorgensen

Chapters 1 and 4 of Ammann and Offutt

M. Grochtmann and K. Grimm, Classification trees for partition testing

Lecture 2: Test Driven Development and Integration Testing

April 21, 2016

TDD and Mocking: Slides

TDD Example: Account

TDD Example: Stack

Testing Protected Methods

Dependency Injection in Java Examples

Mocking Using Mockito Examples


Lecture 3: Coverage Criteria

Recorded Lecture

Handouts Slides

Chapter 2 Ammann and Offutt

Chapters 9 and 10 of Jorgensen

Lecture 4: Data Flow Testing

Recorded Lecture

Handouts Slides

Practical 1: Coverage and Data Flow Testing

April 28, 2016

Practical 1 with Solutions

Lecture 5: Model Checking

Recorded Lecture

Handouts Slides

F. Vaandrager, A First Introduction to Uppaal

Gossip and Jobshop Examples

Practical 2: Model Checking

May 4, 2016

Guest Lecture: UI Testing

May 11

Slides

VGT Cheat Sheet (Examples, Exercises)

Lecture 6: Slicing and Debugging

Recorded Lecture

Handouts Slides

Chapters 5, 6, and 13 of Zeller M. Wiser, Program Slicing

Practical 3: Slicing and Model Examination

May 19, 2016

Model Exam Model Exam with Solutions


Main Textbook

  • 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.
  • A. Zeller. Why Programs Fail? Morgan Kaufmann, 2nd edition, 2009.
  • M. Wiser, Program Slicing, Proc. of ICSE'81, pp. 439-449, ACM, 1981.

Project Description

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.


Practical Deadline Notes
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


Academic Papers

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:


The report is to be submitted on May 15; the presentations will be held on May 20.

Acknowledgment

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.


Back to Home