Master Seminar: Software Testing

Software testing aims at checking the correctness of programs by means of executing the program on given inputs and comparing its output against the expected one. Software testing is thus a dynamic software analysis technique. In the seminar, we will look at different ways of testing software for different sorts of software and correctness properties.

Organizational issues:

Language:   

The language of the seminar is English, i.e. you will need to give your presentation in English as well as write your report in English.

Important Dates:                                                                                                                                   

  • Wednesday, 9th October 2019, 4:00 p.m., room: O4.267: 1st Meeting/Presentation of Topics
  • Sunday 13th October 2019 11:59 p.m.: Sending of Topic-Preference-Ranking to Manuel Töws
  • Tuesday, 15th October 2019 4:00 p.m., room: O4.267: 2nd Meeting/Talk by Prof. Dr. Wehrheim/Topic Assignment according to preference wishes
  • Monday, 11th November 2019 : Submission 1st Version of Presentation Slides
  • 25-28th November 2019 Presentation
    • Monday, 25th November 2019, room: O2.267 3:00 p.m. - 6:00 p.m.
    • Tuesday, 26th November 2019, room: O4.267 3:00 p.m. - 6:00 p.m.
    • Wednesday, 27th November 2019, room: O4.267 4:00 p.m. - 6:15 p.m.
    • Thursday, 28th November 2019, room: O4.267 4:00 p.m. - 6:00 p.m.
  • Monday, 16th December 2019: Submission 1st Version of Report
  • Friday, 3rd January 2020 11:59 p.m. : Submission of Reviews
  • Wednesday, 8th January 2020 11:59 p.m. : Submission of Final Report

Questions: 

Questions regarding the seminar are answered by Arnab Sharma (english only), Manuel Töws or Cedric Richter.

Requirements for passing the seminar

  • give an approx. 30-minute talk and prepare for a follow up discussion (~10 minutes)
  • writing a report of the chosen topic (~8-10 pages)
  • review reports of other participants
  • actively participation in the discussions
  • adhere to the dates and appointments

You need to see your advisor at least 2 times:

  • After having prepared slides: to discuss these.
  • After having written a first version of your report.
     

Grading

  • Presentation (40 %)
  • Report (40 %)
  • Discussion (10%)
  • Reviews (10 %)
  • Not meeting deadlines: one grade down per day;

If one part of presenation / report is not passed, then whole seminar is not passed.

Topics and articles:

Articles:

Alessandro Orso, Gregg Rothermel:
Software testing: a research travelogue (2000-2014). FOSE 2014: 117-132

Topics:

  • Search-Based-Testing
    • 1. Arcuri, Andrea, and Xin Yao. "A novel co-evolutionary approach to automatic software bug fixing.“ (2008) 
    • 2. Wegener, Joachim, André Baresel, and Harmen Sthamer. "Evolutionary test environment for automatic structural testing.“  (2001)
  • Android-Testing
    • 3. Mahmood, Riyadh, Nariman Mirzaei, and Sam Malek. "Evodroid: Segmented evolutionary testing of android apps.“ (2014)

    • 4. Jabbarvand, Reyhaneh, and Sam Malek. "µDroid: an energy-aware mutation testing framework for Android.“ (2017)

  • Runtime-Verification

    • ​​​​​​​5. Havelund, Klaus, and Grigore Roşu. "Monitoring java programs with java pathexplorer.“ (2001)

  • Error Localization

    • 7. Jose, Manu, and Rupak Majumdar. "Cause clue clauses: error localization using maximum satisfiability.“ (2011)

    • 8. Zeller, Andreas. "Yesterday, my program worked. Today, it does not. Why?.“ (1999)

    • 10. Wei, Yi, et al. "Automated fixing of programs with contracts.“(2010)

  • Symbolic Execution

    • 9. Christakis, Maria, Peter Müller, and Valentin Wüstholz. "Guiding dynamic symbolic execution toward unverified program executions.“ (2016)
    • 11. Sen, Koushik, Darko Marinov, and Gul Agha. "CUTE: a concolic unit testing engine for C.“ (2005)

    • 13. Cadar, Cristian, Daniel Dunbar, and Dawson R. Engler. "KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs.“ (2008)

  • Metamorphic Testing

    • 14. Holler, Christian, Kim Herzig, and Andreas Zeller. "Fuzzing with code fragments.“ (2012)

  • Java-Testing

    • 15. Csallner, Christoph, and Yannis Smaragdakis. "JCrasher: an automatic robustness tester for Java.“ (2004)

  • Concurrency-Testing

    • 16. Shacham, Ohad, et al. "Testing atomicity of composed concurrent operations.“ (2011)

    • 17. Pozniansky, Eli and Schuster, Assaf "MultiRace: efficient on‐the‐fly data race detection in multithreaded C++ programs" (2007)