Introduction to Software Testing

Learn about the principles and methodologies used in software testing with this free online course.

This free online software testing course will familiarize you with the principles behind software and why it’s so important for software development. By the end of this course you will understand software testing processes, how to identify when to begin testing during a project’s development, verification and validation within testing, and different levels of software tests. This free online course will help you grow your skills as a developer.

In This Free Course, You Will Learn How To

  • Distinguish between verification and validation processes in testing
  • Describe the different levels of testing software
  • List methods that can be used to reduce errors in software programs
  • Discuss the pesticide effect in testing software
  • Describe unit testing and when it is performed
  • Identify the main approaches to designing a test case

Course Modules

MODULE 01

Introduction to Levels of Testing

In this module you will be introduced to software testing. You will learn about when testing begins in the software development life cycle. You will learn about the verification and validation processes of testing, about the different testing levels, and what the different levels test.

  • Learning Outcomes – Introduction to Levels of Testing
  • Introduction to Software Testing
  • Levels of Testing
  • Lesson Summary – Introduction to Levels of Testing

MODULE 02

Basic Concepts in Testing and Unit Testing

In this module you will learn about the pesticide effect for software testing. You will learn about the software development life cycle V model, its strengths and weaknesses. You will learn about the evolution of test automation, comparing the testing tools available. You will learn about the fault model and how it outlines the types of faults in the program. You will learn about test cases, and design and planning and strategies for test cases. Finally, you will learn about unit testing.

  • Learning Outcomes – Basic Concepts in Testing and Unit Testing
  • Basic Concepts in Testing – Part I
  • Basic Concepts in Testing – Part 2
  • Unit Testing
  • Lesson Summary – Basic Concepts in Testing and Unit Testing

MODULE 03

Course assessment

Introduction to Software Testing – Course Assessment

Course Description

This software testing course clearly discusses the principles of testing software and the methodologies involved in testing. Here, you will learn about the pesticide paradox in software testing as well as the strengths and weaknesses of the software development lifecycle V-model. You will also learn about the fault model and how it identifies the most importants types of faults in a program. You will then be introduced to test cases and the design, planning, and strategies used in a test case.


Next, the course will tackle unit testing and what parts of the program it tests, before showing you how to remove bugs from programs. You will then learn how to distinguish between the verification and validation processes in software testing. At every stage, the course is designed to expand your understanding of essential programming concepts and software development life cycles though simple, easy-to-follow lessons.


Upon completion, you will be able to describe the different levels of testing software, list methods that can be used to reduce errors in software programs, and describe the pesticide effect in testing software. If you are an aspiring computer programmer or IT developer, this will be a strong (as well as quick and free) boost for you résumé. So, start the course now, and you will be fully up-to-date with the best approaches for designing a test case in no time at all.

Introduction to Software Testing

About this Course

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.

WHAT YOU WILL LEARN

  • You will gain an understanding of the theory of testing.
  • You will practice writing tests for a variety of quality intent, including code coverage, defect finding, and statistical testing.
  • You will develop test plans to guide the testing stage of the software development lifecycle.
  • You will create defect reports to provide transparency and understanding to supervisors, colleagues, and users.

SKILLS YOU WILL GAIN

  • Writing Test Plans
  • Writing Defect Reports
  • Understanding of Testing Theory
  • Writing Tests
  • Testing Vocabulary

Syllabus – What you will learn from this course

WEEK1

7 hours to complete

Introduction

In this module, you will be introduced to the basics of testing, especially the variety of terminology to be used through the rest of the course.

6 videos (Total 66 min), 1 reading, 6 quizzesSee All

WEEK2

5 hours to complete

Testing Foundations

In this module, you will investigate a variety of testing principles, models of testing, and types of systematic testing strategies.

8 videos (Total 57 min)See All

WEEK3

8 hours to complete

Testing in the Software Development Lifecycle

In this module, you will learn about the social aspects of testing. We will learn about test plans, testing status reports, and defect reporting.

10 videos (Total 49 min)See All

WEEK4

10 hours to complete

Writing Good Unit Tests

In this module, you will learn about writing unit tests and gain practice in writing these tests through three coding assignments, each with additional testing sophistication.

  • Test Doubles: Introduction11m
  • Test Doubles: Input18m
  • Test Doubles: Output14m
  • Assessing Adequacy and Code Coverage Analysis with JaCoCo9m
  • Flakey Tests and How to Avoid Them22m

3 practice exercises

Test Doubles: IntroductionTest Doubles: InputTest Doubles: Output