Software Engineering II

Text book

Content

Building modern software systems needs not only programming skills but also engineering skills. Software development including requirement analysis, design, implementation, and testing shall be all carried out within a software engineering discipline. By the increasing presence of software in the everyday life, building a correct software system is getting more and more critical.

In this course we focus on testing software. The course is based on the text book: Introduction to Software Testing by Paul Ammann and Jeff Offutt.

It is explained that how we can design better tests based on coverage criteria. Graph coverage, logic coverage, and input space partitioning are covered in the course. We will not cover the syntax-based testing. In some discussions, we will use other references to get deeper in the subject and also introduce modeling languages, like Petri Nets.

Note: the course is NOT about test-driven development.

People

Marjan Sirjani

Árni Hermann Reynisson

Schedule

Note that the schedule maybe change during the semester, and if so, will be announced.

Week 1

L110.01Introduction to the course, Test book, chapter 1 Introduction
L212.01Intro (continued)
W113.01

Practical work/assignment: prepare the Background Report and a short talk (Due 19.01) + 1.1 ex. 2, 1.2. ex. 3 (Due 19.01)

Week 2

L317.01chapter 2 Graph Testing 2.1 overview, 2.2 graph coverage criteria: 2.2.1 structural coverage criteria
L419.012.2.2 data flow criteria, 2.2.3 subsumption relations
W220.01Student presentations – Solving the exercises of Chapter 1

Practical work/assignment: Test assignments 2.2.1 (Due 02.02)

Week 3

L524.012.3 graph coverage for source code (2.3.1 structural, 2.3.2 dataflow)
L626.012.4 graph coverage for design elements
W327.01Student presentations

Practical work/assignment: 2.2.3 2.3 2.4 (Due 09.02)

Week 4

L731.012.5 Graph Coverage for Specifications
L802.02Extra on Graph Coverage for Specifications: Petri Nets
W403.02[Quiz 1, on 2.2.1] Solving exercises of 2.2.1

Practical work/assignment: 2.5 (Due 16.02)

Week 5

L907.02More on Petri Nets
L1009.022.6 Graph Coverage for Use Cases – starting chapter 3 Logic Coverage
W510.02[Quiz 2, on 2.3] - solving exercises 2.2.3 2.3 2.4

Practical work/assignment: 2.6 - Petri Nets exercise (Due 23.02)

Week 6

L1114.02Introducing a tool – by Arni
L1216.02Chapter 3 Logic Coverage: 3.1 overview: logic predicates and clauses 3.2 logic expression coverage criteria
W617.02Solving exercises 2.5

Practical work/assignment: 3.1 (Due 02.03)

Week 7

L1321.02Question/answer, preparing for the exam Chapter 3 (continued)
L1423.023.2 (continued)
W724.02Solving exercises 2.6, Petri Nets

Practical work/assignment: 3.2 part 1 3.2 part 2 (Due 09.03)

Week 8

L1528.02Midterm Exam
L1602.033.2 (continued) , 3.5
W803.03solve Midterm questions

Practical work/assignment: 3.5 (Due 16.03)

Week 9

L1707.03chapter 4 Input Space Partitioning
L1809.034 (continued)
W910.03[Quiz 3, on 2.4–2.5, 3] - solving exercises 3.1, 3.2

Practical work/assignment: 4 (Due 22.03)

Week 10

L1914.03chapter 6 Practical Considerations
L2016.036(continued)
W1017.03[Quiz 4, on 4] - solving exercises 3.5

Practical work/assignment: TBA

Week 11

L2121.03Advanced Topics (TBA)
L2223.03TBA
W1124.03Solving exercise 4

Practical work/assignment: TBA

Week 12

L2328.03TBA
W1230.04TBA
L2431.04TBA

Evaluation

Student presentation

In the second and third week of the course

Prepare a short text (1–5 pages) and a 10 minutes presentation explaining:

Homework

May be changed during the semester, and if so, will be announced.

1.12%1
1.23%1
2.2.14,5,6,7%2
2.2.31 Graphs II, IV%2
2.31, 4, 7%2
2.43%1
2.51, 2%1 + (%1)
2.61%1
3.21, 5, 9, 10%2
3.53%1
4.11, 2%1
4.24, 5%1