Mar 21, 2023  
2019-2020 Undergraduate Academic Catalog 
2019-2020 Undergraduate Academic Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

SE 2832 - Introduction to Software Verification

3 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)

Dr. Walter Schilling

Add to Portfolio (opens a new window)