ECE 413: Software Design and Testing
September 23, 2013
Required for CE
Contact hours: Two 75-minute lectures per week
Course Instructor or Coordinator: Nigel John, Lokesh Ramamoorthi
Paul Ammann and Jeff Offutt, Introduction to Software Testing, Cambridge University Press
Other supplementary material: N/A
2013-2014 University of Miami Academic Bulletin Description:
This is an introductory course to Software Testing and Verification that introduces basics of software design for testability, testing methods and tools, formal review techniques, acceptance, regression, and performance and stress testing.
Prerequisites or co-requisites: ECE 412
Specific outcomes of instruction: The student will be able to:
1. Test Software systems using various test case generation tools
2. Understand how the functional and unit-level testing works in real-world settings
3. Formal verifications and mathematical proving methods for software verifications
1. Design for Testability and For Review technique
2. Software Testing Methods and Tools
3. Test Generation and Symbolic Execution
4. Unit-level Testing
5. Graph Coverage for source code testing
6. Reverse Engineering
7. Binary analysis and testing
8. Performance and stress testing
Student outcomes strongly addressed by the course:
(c) an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability (3):
The students will start unit-testing first, and they will proceed with functional testing of software systems.
(d) an ability to function on multidisciplinary teams (3):
Students with different backgrounds will work on software systems to achieve the reverse engineering and verification purposes.
(e) an ability to identify, formulate, and solve engineering problems (4):
The students learn how to model the software and tackle the test case generation problem.
(f) an understanding of professional and ethical responsibility (3):
The students will deliver their projects on a team basis and will report on their individual levels.
(g) an ability to communicate effectively (4):
The students work in teams and will learn to communicate effectively with their peers in the team.
(i) a recognition of the need for, and an ability to engage in life-long learning (4):
The students will learn how developing a bug-free software is crucial at any time instant.
(j) a knowledge of contemporary issues (3):
The students learn about the current software testing challenges in real-world settings.
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice (4):
The students will learn how to use existing tools to verify the actual software.