Nov 21, 2024  
2024-2025 Undergraduate Academic Catalog-June 
    
2024-2025 Undergraduate Academic Catalog-June
Add to Portfolio (opens a new window)

SWE 2721 - Introduction to Software Verification

2 lecture hours 2 lab hours 3 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: MTH 2310 , CSC 1120 , SWE 2710  (quarter system prereq: CS 2852, MA 2310)
Note: None
This course meets the following Raider Core CLO Requirement: None
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
  • Use Capture-Replay tools to automate GUI based testing

Prerequisites by Topic
Introductory programming

  • Experience working with the Java programming language.

Discrete math

  • Graph theory/directed graphs
  • Set theory
  • Predicates/Boolean algebra

Software engineering tools and practices

  • JUnit test case development
  • Version control (i.e. GIT) tool usage (Commit, clone, branch, merge, diff, etc.)
  • Working with IDEs (importing projects, stepping, breakpoints, etc.)

Course Topics
  • Case studies in software failure
  • Software testing foundations
  • Test automation and testing tools
  • Criteria based test design
  • Input space partitioning
  • Equivalence classes
  • Boundary value analysis
  • Graph theory
  • Graph theory and source code
  • Logic coverage
  • Cyclomatic complexity and loop testing
  • Testing from use cases
  • Mock objects and test doubles
  • Finite state machine testing
  • Syntax based testing and regular expressions
  • Mutation testing
  • Putting tests first
  • Test plans
  • GUI testing
  • Exploratory testing

Laboratory Topics
  • Developing rudimentary tests
  • Developing automated unit tests
  • Input domain-based testing
  • Boundary value and equivalence class testing
  • Code coverage and path-based testing
  • Logic coverage testing
  • Testing using mock objects
  • Finite state machine testing
  • GUI testing with selenium
  • Mutation testing
  • Testing from use cases and activity diagrams
  • Exploratory testing of an application

Coordinator
Dr. Walter Schilling



Add to Portfolio (opens a new window)