DIT085

From CERES
Jump to: navigation, search

Testing and Verification @ Chalmers / GU - Edition 2015

Contact

Lecturer

Mohammad Mousavi

  • Office: Halmstad University, E 305 (on Fridays at Chalmers: Jupiter, 477)
  • Telephone 035 16 71 22 (on Fridays at Chalmers: (031 772) 60 77)
  • Email: m.r.mousavi@hh.se

Instructors

Eugene Groshev

Björn Olsson

Schedule

Lectures: Friday 10:15-12:00, Lindholmen Campus, Patricia, Alfons Hall

Supervised Labs: Fridays 13:00-16:45, Lindholmen Campus, Patricia, Mållgan Hall

Objectives

  • Knowledge and understanding:
    • understand the basic terminology of testing;
    • name and describe basic concepts on testing, as well as different testing techniques and approaches
    • describe the connection between software development phases and kinds of testing
  • Skills and abilities:
    • write models in at least one formal specification language;
    • construct appropriate and meaningful test cases, and interpret and explain (to stakeholders) the results of the application of such test cases ( using appropriate tools) to practical examples
    • plan and produce appropriate documentation for testing
    • apply different testing techniques on realistic examples.
  • Judgement and approach:
    • compare different tools and techniques for testing software, and plan their use in appropriate contexts,
    • compare and judge alternatives to testing, such as model checking and runtime verification
    • identify and hypothesize about sources of program failures, and reflect on how to better verify the correctness of such programs.

Assessment

Assessment is performed in terms of the deliverable of the practical project (software + report) and a written examination.

  • To obtain a Pass (Godkänd: G) mark for the course, the student must obtain a Pass mark for both the project report and the written examination.
  • To obtain a Pass with Distinction (Väl godkänd : VG) mark for the course, the student must obtain a Pass with Distinction mark for both the project report and the written examination.
  • Otherwise, the student will fail the course and obtain a Fail mark (Underkänd: U).

In order to pass the project with distinction, you need to either have pass with distinction in 2 out of the 3 mandatory parts, or 1 pass with distinction for the mandatory part and a pass for the optional part. In order to pass the project, you need to pass all 3 mandatory parts of the project.

Assessment Guide 2015

Final Examination 2015, Final Examination 2015 with Solutions

Slides and Study Material

Slides

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

January 23, 2015

Handouts Slides Chapters 1 and 4 of Ammann and Offutt
Lecture 2: Functional Testing

Guest Lecture by Micael Andersson, Volvo (Test-Driven Development and jUnit) January 30, 2015

Handouts Slides

Guest Lecture (jUnit and TDD)

Chapters 6 and 7 of Jorgensen

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

Lecture 3: Guest Lecture by Micael Andersson, Volvo (Mocking and Test-Driven Development )

February 6, 2015

Guest Lecture (Mocking and TDD)

TDD Examples
Lecture 4: Coverage Criteria

February 13, 2015

Path Testing: Handouts Slides

Data Flow Testing: Handouts Slides

Chapter 2 Ammann and Offutt

Chapters 9 and 10 of Jorgensen

Lecture 5: Model Checking

February 20, 2015

Handouts Slides

F. Vaandrager, A First Introduction to Uppaal

Gossip and Jobshop Examples

Simple Server Example

Lecture 6: UI Testing

Guest Lecture by Emil Alégroth, Chalmers

February 27, 2015

Visual GUI Testing (Slides in pptx format)

VGT Cheat Sheet (Examples, Exercises)

Lecture 7: Slicing and Debugging

March 6, 2015

Handouts Slides

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

Lecture 8: Reviewing Model Examination

March 13, 2015

Model Examination 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 project is about Test-Driven Development of a WhatsApp-like server- and client-side application, which we call WhatsUpGU. The final implementation will comprise:

  • A connection-based (TCP-IP-based) server implemented in Java, allowing for multi-threaded processing of multiple requests from clients, the server

has an XML interface for adding, editing, and fetching messages, and

  • An Android client, able to connect to the server on a TCP IP connection using the XML-based interface protocol and able to deal with communication faults.

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 4. You need to have formed your groups in GUL and emailed your group structure to the lecturer and both instructors by Thursday January 27 at 17:00; please put '[DIT085] Group Registration' in the subject line of your email.

The deliverables are to be delivered on the GUL system and discussed orally in the presence of all team members with one of the two instructors. 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 delivered both on GUL and discussed before the deadline. You may get an extension of one week for at most two phases; for that you need to send an email before the deadline to the instructors. Sending an email is sufficient for receiving the extension and you need not wait for a response to your email.


As a general principle, when you find an ambiguity in the requirements, make a reasonable assumption and document it clearly in your report.


Frequently Asked Questions

Practical Deadline Notes
Phase 1: TDD of a Unit  February 13, 2015 23:59
Phase 2: Integration (Testing) of the Server February 27, 2015 23:59
Phase 3: Specification and Model Checking March 06, 2015 23:59
Phase 4: UI Testing (Optional, see the rules for pass with distinction) March 13, 2015 23:59


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