This course covers the most important testing techniques needed to build high quality software systems. Specific topics covered are quality attributes, maintainability and testability, manual and exploratory testing, automated testing, devops, test adequacy, model-based testing, state-based testing, decision tables, reviews and inspections, design-by-contract, test-driven design, unit versus integration testing, mocks and stubs.
Our learning goals are:
Participants are able to create unit, integration, and system tests using current existing tools (i.e., JUnit, Mockito, and JaCoCo) that successfully test complex software systems.
Participants are able to derive test cases that deal with exceptional, corner, and bad weather cases by performing several different techniques (i.e., boundary analysis, state-based testing, decision tables).
Participants are able to measure and reflect about the efficiency of the developed test suites by means of different test adequacy metrics (i.e., line, branch, condition, MC/DC coverage).
Participants are able to reflect about limitations of current testing techniques, when and when not to apply them in a given context, and to design testable software systems.
Participants are able to write maintainable test code by avoiding well-known test code smells (e.g., Assertion Roulette, Slow or Obscure Tests).
A lot of the material of this course is also available in our EdX MOOCs on Automated Testing (Practical and Advanced skills for Java Developers). While these MOOCs are archived, if you’re interested you can still watch the videos and the exercises.
Jan Jaap Cannegieter is a leading test, QA and requirements expert from the Netherlands. He had over 25 years of experience in ICT. Jan Jaap did assignments in testing, test automation, quality assurance, process improvement, requirements, business – ICT alignment, Agile and digitalization. Jan Jaap is Principal Consultant at Squerist, a consultancy company of 100 employees specialized in process management and testing. Within Squerist Jan Jaap is, beside his assignments, responsible for coaching, knowledge management and product development. Jan Jaap is the well-known author of several articles and books in the Netherlands and is a well-known (keynote) speaker on international conferences.Slides:
Tim van der Lippe is a software engineer at Google in London. He is a former student of Delft University of Technology and former teaching assistant of this course. During his study and in his current job, he is the maintainer of two open source projects: web components library Polymer and Java mocking framework Mockito. In this guest lecture, he will give an overview of his daily work at Google, the problems of working at scale and what solutions were necessary to migrate Google to the latest version of Mockito.Additional material:
Your final grade is calculated as follows:
Grade = (L + 2 * max(M, E) + 2 * E) / 5
The midterm and the exam both contain 40 multiple-choice question, with 4 options each. Their final grade is calculated as:
Grade = (C - W/3) / 4
C is the number of correct answers and
W is the number of wrong answers. You are allowed to not answer a question; in this case, it won’t count as a wrong answer, and thus, not part of the guessing adjustment. With such a formula, we suggest you to not answer a question if you have no knowledge of the question; on the other hand, if you have partial knowledge (i.e., you can discard 1, 2, or 3 choices out of the given 4), it is therefore best to guess.
Note that you are required to have L >= 5.75 and E >= 5.75 to pass. If you do not pass both the labwork and exam, your final grade is calculated as min(E, 4.0).
Will there be collegerama recordings of this course? In the schedule above, we provide you with summary videos for all our lectures. For that reason we will not make TU Delft collegerama recordings.
Are the deadlines strict? Yes, deadlines are strict. If you miss the deadline, you get a 0. If you had an issue that prevented you from delivering, please talk to your student counselor.
Can I skip the midterm? Yes, you can. The midterm is not compulsory. However, note that the midterm can count as 40% of your final grade. You have less material to study for the midterm too. So, our suggestion is for you to study hard and take the midterm!
My friend is from group Beta, and I’m from group Alpha. Can we still be a team? Yes, you can. Keep in mind that your lab times will still be different. In moments where the lab is busy, TAs will prioritize students from that lab; on the other hand, in times that the lab isn’t too busy, you can work together there.
I did the JPacman assignment last year. Can I reuse the grade? If you did the JPacman assignment in 2018 and you got a passing grade, you do not need to do it again. Go to Brightspace -> Assignments -> Reuse 2018 JPacman grade, and reply it with a “Yes”.
Can I use my devices in class? Educational research clearly shows that using devices on non-class related activities can harm your learning. Moreover, it can also harm your colleague’s learning. Therefore, you are not allowed to use any devices during the lecture. Exception: activities that require devices. I will help you by making announcements during the lecture about the times you should use your device.
How did you do this website? This website is done with Jekyll and some straightforward HTML. The main picture was taken by Agence Olloweb.
Can I use your material? This website as well as all the content created by me are licensed through Attribution-NonCommercial-ShareAlike CC BY-NC-SA. This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms. The content from others that I link are subject the own authors’ licenses.