We may earn an affiliate commission when you visit our partners.
Course image
Kevin Wendt and Sanjai Rayadurgam

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.

Read more

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.

Enroll now

What's inside

Syllabus

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.
Read more
Testing Foundations
In this module, you will investigate a variety of testing principles, models of testing, and types of systematic testing strategies.
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.
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Suitable for learners seeking foundational knowledge in software testing
Provides a structured approach to learning testing principles and practices
Teaches techniques for writing effective test cases, including data inputs and expected outcomes
Introduces industry-standard concepts such as verification, validation, test coverage, and mutation testing
Instructs on utilizing automated testing tools like JUnit to enhance testing efficiency
Provides guidance on test plan development, status reporting, and defect tracking

Save this course

Save Introduction to Software Testing to your list so you can find it easily later:
Save

Reviews summary

Primer to software testing

learners say this largely positive introduction to software testing provides both theoretical and practical knowledge in the field. Through engaging assignments, students gain experience with unit testing, test plans, and test doubles. The course is well-organized, with clear explanations and helpful videos. However, it is important to note that it is not suitable for beginners with no programming or testing background.
Well-organized
"The course is well-organized"
Engaging and beneficial to learning
"learners say this largely positive introduction to software testing provides both theoretical and practical knowledge in the field. Through engaging assignments, students gain experience with unit testing, test plans, and test doubles."
"I liked much Coursera platform, and the way the instructors explaining course content."
Clear explanations and helpful videos
"The course is well-organized, with clear explanations and helpful videos."
"The videos are clear in explanation"
"The course provided an overview of the various types of testing to be done"
May be difficult for those with no programming or testing background
"learners say this largely positive introduction to software testing provides both theoretical and practical knowledge in the field. Through engaging assignments, students gain experience with unit testing, test plans, and test doubles. However, it is important to note that it is not suitable for beginners with no programming or testing background."
"This course is definitely not for people with zero experience in programming/testing."
"It seems to follow some Java courses and the use of Eclipse IDE."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Introduction to Software Testing with these activities:
Review basics of unit testing
Brushing up on the basics of unit testing will help you better understand the concepts covered in this course.
Browse courses on Unit Testing
Show steps
  • Read through the provided materials on unit testing.
  • Complete the practice exercises in the provided materials.
Follow tutorials on JUnit
Following tutorials on JUnit will help you gain hands-on experience with the tool and reinforce the concepts covered in the course.
Browse courses on JUnit
Show steps
  • Identify a tutorial on JUnit that is appropriate for your skill level.
  • Follow the steps in the tutorial to create and run JUnit tests.
  • Experiment with different JUnit features, such as annotations and assertions.
Participate in a discussion forum on software testing
Participating in a discussion forum will allow you to engage with other learners and experts and gain diverse perspectives on software testing.
Browse courses on Software Testing
Show steps
  • Identify a discussion forum or online community focused on software testing.
  • Join the forum and introduce yourself.
  • Participate in discussions by asking questions, sharing your experiences, and providing feedback to others.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Write unit tests for a simple Java program
Writing unit tests for a simple Java program will provide you with practical experience in applying the concepts of unit testing.
Browse courses on Unit Testing
Show steps
  • Choose a simple Java program that you are familiar with.
  • Identify the different scenarios that need to be tested.
  • Write JUnit tests for each of the identified scenarios.
  • Run your tests and ensure that they pass.
Mentor a junior developer in software testing
Mentoring a junior developer will allow you to reinforce your understanding of software testing while helping someone else grow in their career.
Browse courses on Software Testing
Show steps
  • Identify a junior developer who is interested in learning about software testing.
  • Meet with the developer regularly to provide guidance and support.
  • Review the developer's work and provide feedback.
  • Help the developer prepare for a software testing certification or exam.
Develop a test plan for a software application
Developing a test plan will help you apply the principles of test planning and management to a real-world scenario.
Browse courses on Test Planning
Show steps
  • Identify the scope and objectives of the software application.
  • Define the different types of testing to be performed.
  • Develop test cases for each type of testing.
  • Specify the resources and timelines for testing.
  • Review and refine the test plan with stakeholders.
Contribute to an open-source software testing project
Contributing to an open-source software testing project will provide you with hands-on experience and help you learn from the practices of others.
Browse courses on Software Testing
Show steps
  • Identify an open-source software testing project that aligns with your interests.
  • Review the project's documentation and codebase.
  • Identify an area where you can make a contribution.
  • Submit a pull request with your changes.
Participate in a hackathon or coding competition focused on software testing
Participating in a hackathon or coding competition will allow you to apply your skills in a competitive environment and learn from others.
Browse courses on Software Testing
Show steps
  • Identify a hackathon or coding competition that is relevant to software testing.
  • Form a team or participate individually.
  • Develop a solution to the competition's challenge within the specified timeframe.
  • Submit your solution and present it to the judges.

Career center

Learners who complete Introduction to Software Testing will develop knowledge and skills that may be useful to these careers:
Quality Assurance Analyst
Quality Assurance Analysts are in charge of planning, executing, and evaluating software testing. The Introduction to Software Testing course would provide learners with a foundation for software testing principles and methods, which could be valuable in their role. This course teaches essential testing terminology, test-first and test-last development techniques, test adequacy measurement, fault-finding effectiveness assessment, and black-box and white-box testing. These concepts are fundamental in the field of software testing and would be highly relevant to a Quality Assurance Analyst position.
Software Test Engineer
Software Test Engineers design and execute test plans, analyze test results, and report defects to ensure software quality. The Introduction to Software Testing course could provide a strong foundation for this role by teaching key testing principles, including verification and validation, different test types, coverage measurement, and test automation using JUnit. The course also covers unit and integration testing, which are essential skills for Software Test Engineers.
Software Developer
Software Developers design, implement, test, and maintain software systems. While this course focuses on testing, it also covers essential software development concepts such as unit and integration testing, test automation, and test-driven development. These principles and practices are widely used in software development and would be beneficial for Software Developers.
Test Automation Engineer
Test Automation Engineers are responsible for designing and implementing automated testing solutions to improve testing efficiency. This course provides a strong foundation for test automation by teaching learners how to create and run automated tests using JUnit. The course also covers unit and integration testing techniques, which are essential for building robust and reliable automated test suites.
Programmer
Programmers design, develop, and test software applications. The Introduction to Software Testing course would be beneficial for Programmers, as it provides a comprehensive overview of software testing principles, methods, and tools. The course covers unit and integration testing, test-driven development, test automation, and fault-finding techniques, which are essential skills for Programmers to ensure software quality and reliability.
DevOps Engineer
DevOps Engineers bridge the gap between development and operations teams to ensure seamless software delivery. They collaborate with Software Developers to implement automated testing practices and tools. This course introduces DevOps testing practices such as unit and integration testing, test automation, and continuous integration. By gaining a solid understanding of these concepts, learners can enhance their contribution to DevOps teams.
Computer Enthusiast
Computer Enthusiasts are passionate about computers and enjoy exploring different aspects of computing, including software testing. This course can provide Computer Enthusiasts with a structured introduction to the field of software testing, covering fundamental principles, methods, and tools. By gaining a solid understanding of testing techniques, Computer Enthusiasts can deepen their understanding of software development and enhance their overall technical skills.
Software Quality Assurance Manager
Software Quality Assurance Managers oversee the software testing process, ensuring software quality and compliance. The Introduction to Software Testing course can provide valuable insights into the management aspects of software testing. This course covers test planning, reporting, and defect management, which are crucial skills for Software Quality Assurance Managers. By understanding these concepts, learners can develop the necessary foundation for managing and leading software testing teams effectively.
IT Systems Analyst
IT Systems Analysts design, implement, and maintain computer systems for organizations. While this course primarily focuses on software testing, it also provides a glimpse into the wider context of software development, including test-driven development and continuous integration. These concepts are valuable for IT Systems Analysts to understand the software development process and to collaborate effectively with Software Developers. However, the course does not delve deeply into systems analysis and design, which are core responsibilities of IT Systems Analysts.
Product Manager
Product Managers are responsible for defining, developing, and launching software products. While this course focuses on technical aspects of software testing, it may provide valuable insights for Product Managers who want to understand the software development process and the importance of testing. The course introduces concepts such as test-driven development and continuous integration, which can help Product Managers make informed decisions about software development and quality.
Business Analyst
Business Analysts bridge the gap between business and technology by gathering and analyzing business requirements. While this course focuses on software testing, it may provide valuable insights for Business Analysts who want to understand the software development process and the role of testing. The course introduces concepts such as test-driven development and continuous integration, which can help Business Analysts communicate effectively with Software Developers and ensure that software products meet business needs.
Data Analyst
Data Analysts collect, analyze, and interpret data to derive meaningful insights. While this course focuses on software testing, it may provide valuable insights for Data Analysts who want to understand the software development process and the importance of data quality. The course introduces concepts such as test-driven development and continuous integration, which can help Data Analysts collaborate effectively with Software Developers and ensure that data is reliable and accurate.
Project Manager
Project Managers plan, execute, and control software development projects. While this course focuses on software testing, it may provide valuable insights for Project Managers who want to understand the software development process and the importance of testing. The course introduces concepts such as test-driven development and continuous integration, which can help Project Managers manage software development projects effectively and ensure that software products are delivered on time and within budget.
Technical Writer
Technical Writers create documentation for software products. While this course focuses on software testing, it may provide valuable insights for Technical Writers who want to understand the software development process and the importance of testing. The course introduces concepts such as test-driven development and continuous integration, which can help Technical Writers understand the context and purpose of software documentation.
IT Auditor
IT Auditors assess the security and compliance of computer systems. While this course focuses on software testing, it may provide valuable insights for IT Auditors who want to understand the software development process and the importance of testing. The course introduces concepts such as test-driven development and continuous integration, which can help IT Auditors evaluate the effectiveness of software testing practices and ensure that software products meet regulatory requirements.

Reading list

We've selected 13 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction to Software Testing.
Presents a practical guide to agile testing, covering everything from planning and estimation to test design and execution.
This book's current edition has been written for students, software engineers, and testers who are new to testing. It covers all aspects of software testing.
Provides an overview of the psychology of software testing, which is important for understanding how to effectively test software.
Can be used as a general software testing textbook for classrooms and corporate training programs, or as a study guide for ISTQB certification.
Classic introduction to TDD, and is written by one of the creators of the technique.
Provides an overview of black-box testing techniques, which method of testing software without knowledge of its internal workings.
Provides a comprehensive overview of continuous integration, covering both the principles and the practices.
Good overview of the Kanban framework, which is often used in conjunction with continuous integration and TDD.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Introduction to Software Testing.
Black-box and White-box Testing
Most relevant
Introduction to Automated Analysis
Most relevant
ISTQB® Foundation: Test Techniques
Most relevant
MasterClass Software Testing with Jira & Agile -Be a QA...
Most relevant
Basic Manual Software Testing +Agile+Bugzilla for...
Most relevant
Introduction to Test and Behavior Driven Development
Most relevant
Maximizing Quality with Visual Studio Team Services Test...
Most relevant
Test and Behavior Driven Development (TDD/BDD)
Most relevant
Secure Software Testing for CSSLP®
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser