Slides
- Introduction
- Software testing – basics
- Static testing
- Dynamic testing
- Integration testing
- Test criteria
- Mutation analysis
- Security testing
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