Software testing (2015-16)

Slides

Exercises

Practical session material

  • TP1: unit testing and coverage.
    Objective: to manipulate a framework for automatic execution of unit test cases and understanf code coverage.

  • TP2: integration testing.
    Objective: understand the challenges of isolating classes for unit testing and to manipulate a mock framework.
  • TP3: test-driven development.
    Objective: write a program according to a test suite.
  • TP4: Selenium + JMeter.
    Objective: manipulate a framework for the automatic execution of test cases on a UI and experiment with load testing.
  • TP5: static analysis.
    Objective: experiment with PMD for static analysis
  • TP6: instrumentation for dynamic analysis.
    Objective: experiment with a framework for code transformation.
  • TP7: test suite analysis.
    Objective: Analyze a large, production-quality test suite
  • TP8: hands-on new technology.
    Objective: Prepare a demo of a new testing technology

Demo

Students should form groups of 5 to prepare a brief presentation and a demo of one of the following tools. Deadlines are given below.

Tools for demo

diffy: test software updates
PhantomJS: web app testing
Robolectric: test Android apps
Sikuli: automates anything you see on the screen
cucumber: tool fo behavio-driven development
JavaPathFinder: automated analysis of Java programs

Dates

M2 GL and GLA:

  • 21/09/2015: form groups
  • 16/10/2015: short presentation and demo

Resources

Here are some pointers to some of the ressources I refer during the testing classes.

Tools

JUnit: http://junit.org/
PMD: http://pmd.sourceforge.net/
EasyMock: http://easymock.org/
Selenium: http://docs.seleniumhq.org/
PIT: PIT

Testing concepts

Software metrics: coupling, cohesion, cyclomatic complexity
The Netflix simian army
http://pastie.org/349916#; http://www.zuneboards.com/forums/showthread.php?t=38143
http://opensource.apple.com/source/Security/Security-55471/libsecurity_ssl/lib/sslKeyExchange.c