- Level Professional
- Duration 30 hours
- Course by University of Minnesota
-
Offered by
About
After completing this course, you will have an understanding of the fundamental principles and processes of software testing. You will have actively created test cases and run them using an automated testing tool. You will being writing and recognizing good test cases, including input data and expected outcomes. After completing this course, you will be able to" - Describe the difference between verification and validation. - Explain the goal of testing. - Use appropriate test terminology in communication; specifically: test fixture, logical test case, concrete test case, test script, test oracle, and fault. - Describe the motivations for white and black box testing. - Compare and contrast test-first and test-last development techniques. - Measure test adequacy using statement and branch coverage. - Reason about the causes and acceptability of and poor coverage - Assess the fault-finding effectiveness of a functional test suite using mutation testing. - Critique black-box and white-box testing, describing the benefits and use of each within the greater development effort. - Distinguish among the expected-value (true), heuristic, consistency (as used in A/B regression), and probability test oracles and select the one best-suited to the testing objective. - Craft unit and integration test cases to detect defects within code and automate these tests using JUnit. To achieve this, students will employ test doubles to support their tests, including stubs (for state verification) and mocks (for behavioral verification) (https://martinfowler.com/articles/mocksArentStubs.html). This course is primarily aimed at those learners interested in any of the following roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you should have an understanding of the Java programming language (or any similar object-oriented language and the ability to pick up Java syntax quickly) and some knowledge of the Software Development Lifecycle.Modules
Lesson 0: Welcome
1
Videos
- Welcome to the Software Testing and Automation!
1
Readings
- Welcome to the course!
Lesson 1: Introduction to Testing
1
Assignment
- Overview
1
Videos
- Introduction
Lesson 2: Why and How We Test
1
Assignment
- On the difficulty of software testing
2
Discussions
- On coverage testing
- On Test-Driven Development
1
Videos
- Why is software testing challenging?
Lesson 3: What is a Test?
1
Assignment
- What is a Test?
1
Videos
- What is a Test?
Lesson 4: What is a Test Suite?
2
Assignment
- Automation: Using a Test Framework
- Automation: Writing JUnit Tests
2
Videos
- Automation: Using a test framework
- Automation: Writing JUnit tests
Lesson 5: Building Unit Tests
- Building Unit Tests
Lesson 1: Testing Principles
3
Assignment
- Dependability Quiz
- Testing Principles: Where
- Testing Principles: How
2
Discussions
- Testing Principles: Why?
- Testing: Commonality vs. Specificity
4
Videos
- Dependability Definitions
- Testing Principles
- Testing Principles: Where
- Testing Principles: How
Lesson 2: Testing Principles: When (V Model)
2
Assignment
- The V-Model Quiz
- Validation and Verification in the "V-Model" Quiz
2
Videos
- The "V Model" of Software Development
- Validation and Verification in the "V Model"
Lesson 3: Introduction to Systematic Testing
2
Assignment
- Structural Testing
- Mutation Testing
2
Videos
- Structural Testing
- Mutation Testing
Assessing Your Knowledge (Summative Quiz)
1
Assignment
- On Basic Testing Terminology, Dependability, and Testing Principles
Lesson 1: Fundamental Testing Processes
5
Assignment
- What is a Test Plan?
- Importance of a Good Test Plan
- Stages of Software Testing Process
- Test (Status) Reports
- Risk Based Test Planning
5
Videos
- What is a test plan?
- Importance of a Good Test Plan
- Stages of Software Testing Process
- Test (Status) Reports
- Risk-based Test Planning
Lesson 2: Software Defect Reports
5
Assignment
- Software Defect Reports
- Software Defect Reports: Analysis
- Software Defect Reports: Reporting
- Software Defect Reports: Report Content
- Software Defect Reports: Track, Retest, and Close
5
Videos
- Software Defect Reports
- Software Defect Reports: Analysis
- Software Defect Reports: Reporting
- Software Defect Reports: Report Content
- Software Defect Reports: Track, Retest, and Close
Lesson 3: Building a test plan (Peer Assessment)
1
Peer Review
- Building a test plan
Lesson 1: Test Doubles
3
Assignment
- Test Doubles: Introduction
- Test Doubles: Input
- Test Doubles: Output
3
Videos
- Test Doubles: Introduction
- Test Doubles: Input
- Test Doubles: Output
Lesson 2: Assessing Adequacy
1
Videos
- Assessing Adequacy and Code Coverage Analysis with JaCoCo
Lesson 3: Flakey Tests and How to Avoid Them
1
Videos
- Flakey Tests and How to Avoid Them
Lesson 4: Hands on with jUnit, JaCoCo, and Mockito
- Writing Unit Tests for the Coffee Maker
- Checking Coverage with JaCoCo
- Adding Mocks and Stubs
Auto Summary
Unlock the fundamentals of software testing with this comprehensive course designed for IT and Computer Science enthusiasts. Led by expert instructors, you'll master creating and running test cases, understanding verification vs. validation, and employing both black-box and white-box testing techniques. Ideal for aspiring Software Engineers, Test Automation Engineers, and DevOps professionals, this 1800-minute course requires basic Java knowledge. Choose from various subscription options: Starter, Professional, or Paid, and elevate your testing skills with hands-on, practical learning. Join us on Coursera for a professional-level journey into software testing excellence.

Sanjai Rayadurgam

Kevin Wendt