|
Dec 26, 2024
|
|
|
|
SE 2832 - Introduction to Software Verification3 lecture hours 2 lab hours 4 credits Course Description This course introduces students to the fundamental concepts of software verification. Topics covered include the activities within testing, coverage criteria, basic testing techniques and types, basic testability metrics, and the application of testing tools. Laboratory assignments provide extensive opportunities to apply software verification techniques and tools. (prereq: CS 2852 , MA 2310 ) Course Learning Outcomes Upon successful completion of this course, the student will be able to:
- Explain why testing is important to software development
- Explain the relationship between verification and validation
- Compose accurate and detailed defect reports and record defects into a defect tracking system
- Using appropriate coverage criteria and testing theory, design and construct high quality testing approaches and prepare tests in a logical, organized fashion
- Apply testing theory to design tests based on presented test criteria
- Analyze the effectiveness of testing using testing metrics, mutation testing, and other techniques
- Design and implement test cases using mock objects
- Analyze a given piece of source code for complexity and testability
Prerequisites by Topic
- (Discrete Math): Directed graphs
- (Discrete Math): Set theory
- (Discrete Math): Predicates / Boolean algebra
- (Programming) JUnit test case development
Course Topics
- Course introduction (1 lecture)
- Fundamental testing terminology and techniques (2 classes)
- Application of discrete math to testing (3 lectures)
- Logic predicates and clauses (2 lectures)
- Structural coverage of programs (2 lectures)
- Structural coverage of finite state machines (1 lecture)
- Input space partitioning (3 lectures)
- Mock objects (2 lectures)
- Syntax based testing (3 lectures)
- Scripted testing and exploratory testing (2 lectures)
- Test processes (3 lectures)
- Regression testing (1 lecture)
- Design issues and software testability (2 lectures)
- Exam review, course assessment (3 lectures)
Laboratory Topics
- Basic testing with JUnit / Prerequisite Assessment(1 session)
- Logic coverage testing (2 sessions)
- Input space partitioning testing (1 session)
- Code coverage tool usage (1 session)
- Mutation testing (1 session)
- Mock object testing (1 session)
- State transition testing (1 session)
- Source code complexity analysis (1 session)
- User interface (GUI) testing (1 session)
Coordinator Dr. Walter Schilling
Add to Portfolio (opens a new window)
|
|