First delivery of the course Software Quality and Testing Katerina Zdravkova, Anastas Mišev {keti,anastas}@ii.edu.mk Syllabus of M.Sc. course Introduction to testing fundamentals Structural testing Functional testing Foundation for combining formal methods and testing Assertion based testing Model based formal methods Finite state machine based testing Testing from a process algebra Testing with UML's dynamic models Temporal logic, model checking and their role in testing Tools for automatic testing and continuous integration The management process of software testing Study pack Exists Slides are nice Incomplete No lecture notes No supportive literature, or electronic version of a book And, we had no experience in the area CSII Course Sophomore Course Software Engineering Course Senior Course MS Course PhD Course Industry http://www.cs.gmu.edu/~offutt/softwaretest/contents.html Syllabus of the course (stream 4) Introduction Graph Testing Logic Testing Input Space Partitioning Syntax Testing Practical Considerations Syllabus ~ book topics Four Structures for Modeling Software Graphs Applied to Applied to Source Specs Source Specs Design Input Space Logic Use cases Syntax Applied to FSMs DNF Source Models Integ Input Grading Activity Qty Points Total % to pass Activity Qty Points Total % to pass Homework 10 10 100 50 Homework 10 10 100 50 Project 1 50 50 50 Project 1 50 50 50 Mid term 2 100 200 30 Practical exam 1 100 100 50 Extra points 20 1 20 Theoretical exam 1 100 100 50 Extra points 20 1 20 Points Percentage Grade < 175 < 50% 5 (fail) 175 – 210 50% - 60% 6 211 – 249 61% - 71% 7 250 – 287 72% - 82% 8 288 – 325 83% - 94% 9 >326 > 95% 10 Sample of a student assignment Provide reachability conditions, infection conditions, propagation conditions, and test case values to kill mutants 1- 6 in the figure below Mutant 1 2 3 4 5 6 Reachability Infection Propagation Students project Given the method Proekt1 (in C#) that returns: (a + b) / (a * b) if c = true and d = true square root (a*b) if c = false and d = true square root(a/b) if c = true and d = false -1 otherwise public double Proekt1(int a, int b, Boolean c, Boolean d) { if (c && d) { return (a + b) / (a * b); } else if (!c && d) return Math.Sqrt(a * b); else if (c && !d) return Math.Sqrt(a / b) ; else return -1; } 1. 2. 3. 4. 5. 6. Code and compile in a language of choice Partition the input space with respect to the values of the variables a and b, whether the method raises an error. The blocks should be both complete and disjoint. Choose test values from each block and derive the tests that satisfy All Combinations Coverage (ACoC) Identify the faults and produce a method Project1_no_Faults Derive a new method from the Project_no_Faults, called Project_1_if, such that each if statement tests only one variable Write a program that will execute all the test from 3, over the Project_if and Project_no_Faults methods. Statistics Assignment Submissions Avg Introduction to testing 65 8.55 Introduction to testing 65 7.11 Graph coverage 65 8.49 Finite state machines 65 6.98 Logic coverage 65 6.14 Logic coverage 65 7.34 Input space partitioning 65 8.74 Input space partitioning 65 9.17 Mutation testing 65 8.63 Grammar mutation 65 9.58 Project 52 (so far) / (not graded) Exams and mid term exams The preferred way was through mid term exams The rest of the students took the exams 45 students took the mid term exams(both) 43 of them passed Only 3 left for the September exams 3 students dropped out Conclusions about the course The course is in the 8th semester, and it had to start for the first time at out Institute Keti, Anastas and Saško and had no choice but to start the course Slides by Ammann and Offutt are fantastic We find the book fantastic too It demystifies the topics well The approach contains all the theoretical knowledge Conclusions Although it was hard to prepare the lectures, the A&O’s approach was exciting, and the effort was worthy We learned a lot about quality and software testing We plan to introduce tool and practical testing in the next delivery Any suggestions how to improve the course are welcome We are ready to deliver the same course in the framework of the Joint M.Sc. studies wherever needed Thank you for your attention