Week 4: Concepts in Extreme Programming and Introduction to Testing
Explain about the role of testing in XP
Introduce the motivations behind testing
Provide examples and benefits of testing.
[Lab] Learn about how to write JUnit test and practice the concept of “pair testing”
Week 5: Test-driven Development
Introduce the steps in Test-driven development
Provide examples and benefits of test-driven development
Introduce the concept of code coverage and explain how to compute different coverage metrics
[Lab] Learn about how to use learn about how to use automated test generation tool for generating tests and how to
measure test coverage using Jacoco plugin
Week 6: Mutation testing and Test generation
Introduce the concepts of mutation testing
Introduce the concepts of test generation
Introduce the test generation algorithm of Evosuite.
[Lab] Learn about the basics of tensorflow API and build a simple mobile app that uses Tensorflow-Lite.
Week 7: Software metrics
Introduce the concepts of software metrics
Introduce technical and non-technical software metrics
Explain coupling and cohesion
[Lab] Learn about the basics of tensorflow API and build a simple mobile app that uses Tensorflow-Lite.
Week 8: Reverse Engineering
Introduce the concepts of mutation testing.
Introduce some re-engineering patterns.
Explain some reverse engineering activities.
[Lab] Learn about the basic of static analysis tools and integrate these tools to the course project, .
Week 9: Static Analysis
Introduce the concepts of static analysis.
Introduce coding standard and common bug patterns.
Explain the benefits of static analysis compared to dynamic analysis.
[Lab] Learn about how to reverse engineer an Android app using apktool and Java Decompiler.
Week 10: Component and Reuse
Introduce the concepts of component and framework.
Explain the benefits of software reuse
Explain the techniques in improve software reuse