We may earn an affiliate commission when you visit our partners.
Course image
Arie van Deursen and Maurício Aniche

Software testing gets a bad rap for being difficult, time-consuming, redundant, and above all - boring. But in fact, it is a proven way to ensure that your software will work flawlessly and can meet release schedules.

Read more

Software testing gets a bad rap for being difficult, time-consuming, redundant, and above all - boring. But in fact, it is a proven way to ensure that your software will work flawlessly and can meet release schedules.

In a two-course series, we will teach you automated software testing in an inspiring way. We will show you that testing is not as daunting a task as you might think, and how automated testing will make you a better developer who programs excellent software.

This second course builds upon the first course's material. It covers more advanced tools and techniques and their applications. Key topics include state-based and web testing, combinatorial testing, mutation testing, and property-based testing.

This is a highly practical course. Throughout the lessons, you will test various programs by means of different techniques. By the end, you will be able to choose the best testing strategies for different projects..

If you are or want to become a five-star software developer, QA engineer, or software tester, join this course. Testing will never be the same again!

Three deals to help you save

What's inside

Learning objectives

  • The key ideas behind advanced software testing techniques, such as mutation and property-based testing
  • The current state-of-the-art in software testing research, such as the usage of artificial intelligence to automate testing activities
  • The limitations of current testing techniques, and how todetermine the best testing strategies for a given context

Syllabus

Topic 1: Model-based testing and decision tables
Create decision tables to represent complex decisions of your software.
Apply different coverage criteria in the decision table to generate test cases.
Read more
Topic 2: Model-Based testing and state machines
Devise state machines that represent the software system (e.g., web systems) and use them to generate test cases.
Apply different coverage criteria to generate test cases that cover different paths of the system.
Topic 3: Self-testing
Understand what pre-conditions, post-conditions, and invariants are, and how to design them in your software system.
Use these contracts to test your software from the “inside out”
Write properties and let property-based testing frameworks generate test cases automatically.
Topic 4: Mutation testing
Understand the key ideas behind mutation testing.
Apply mutation testing in software systems and discover what parts of your software are not tested enough.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops key skills that are important to learners or industry software development engineers in test (SDETs) or software quality engineers (SQEs) in the computer science field
Led by Arie van Deursen and Maurício Aniche, who are known in the field of software engineering and testing
Creates a bridge between the course's theoretical and practical knowledge by providing hands-on experience with testing techniques
Focuses on advanced software testing techniques, making it ideal for learners seeking an in-depth understanding
Examines the state-of-the-art in current software testing research, including topics such as AI in testing activities

Save this course

Save Automated Software Testing: Model and State-based Testing to your list so you can find it easily later:
Save

Reviews summary

Course is valuable.

Learners say this course is valuable.
Students indicated that they found the course valuable.
"I would like to study online this course in your university and also i hope to improve myself during and after i finish the course i really need it"

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 Automated Software Testing: Model and State-based Testing with these activities:
Create a Comprehensive Course Summary
Enhance your understanding by compiling key takeaways from the course, creating a valuable resource for future reference and reinforcing your comprehension of the material.
Show steps
  • Review Course Notes and Materials
  • Identify Key Concepts and Techniques
  • Organize and Summarize Information
Practice Test Case Generation
Develop your proficiency in generating test cases by engaging in targeted practice exercises, improving your analytical abilities and ensuring thorough testing coverage.
Show steps
  • Study Test Case Generation Techniques
  • Attempt Sample Test Case Generation Problems
  • Review and Refine Your Solutions
Go Over Mutation Testing Concepts
Deepen your comprehension of the core ideas behind mutation testing, providing a solid theoretical foundation for your practical endeavors.
Show steps
  • Explore Mutation Testing Resources
  • Read Mutation Testing Research Papers
  • Attend a Mutation Testing Webinar
Six other activities
Expand to see all activities and additional details
Show all nine activities
Study Property-Based Testing Techniques
Expand your testing arsenal by exploring advanced property-based testing techniques, empowering you to write more robust and reliable tests.
Show steps
  • Review Property-Based Testing Literature
  • Watch Property-Based Testing Tutorials
  • Experiment with Property-Based Testing Tools
Attend a Test Case Generation Workshop
Accelerate your learning journey by participating in a workshop dedicated to test case generation, enabling you to acquire expert knowledge and practical skills in a collaborative environment.
Show steps
  • Research and Identify Workshops
  • Register and Prepare for the Workshop
  • Actively Participate and Engage with Experts
Mutation Testing Exercises
Solidify your practical skills in mutation testing, equipping you with hands-on experience to tackle real-world challenges confidently.
Show steps
  • Utilize Mutation Testing Tools
  • Create and Run Your Own Mutants
  • Conduct Mutation Analysis
Attend a Property-Based Testing Workshop
Accelerate your learning through immersive workshops, enabling you to network with experts and gain practical insights into property-based testing.
Show steps
  • Identify Relevant Workshops
  • Register for a Workshop
  • Attend and Participate Actively
Develop a Mutation Testing Framework
Enhance your problem-solving abilities by designing and implementing a framework for mutation testing, tailoring it to specific project requirements.
Show steps
  • Research Mutation Testing Frameworks
  • Design Your Own Framework
  • Code and Test Your Framework
Participate in a Property-Based Testing Competition
Put your skills to the test by participating in a competition, challenging yourself to solve complex testing problems and potentially earning recognition for your achievements.
Browse courses on Testing
Show steps
  • Discover Property-Based Testing Competitions
  • Prepare for the Competition
  • Participate Enthusiastically

Career center

Learners who complete Automated Software Testing: Model and State-based Testing will develop knowledge and skills that may be useful to these careers:
Quality Assurance (QA) Engineer
A critical part of any software development team, QA Engineers make sure that new features and programs are working as they should before they reach customers, and are capable of identifying and reporting on bugs. Those who are successful in this career role combine a sharp eye for detail with the ability to think critically and work independently to not only discover bugs, but to find their root causes as well. This course helps build the conceptual understanding and technical skills necessary to write test cases and select the right testing technique for the job.
Software Developer
Capable of working independently to translate customer needs into functional, well-performing software solutions; Software Developers are critical to any technology company. The course's emphasis on using testing techniques to ensure flawless, on-time software is especially relevant to this career path. It especially may be helpful for Software Developers who are interested in taking on increased responsibility and leadership in their role.
Software Test Engineer
This role will require a deep ability to execute test strategies, verify and document results, and report on bugs. Successful individuals in this role will be comfortable with complex software systems and have an understanding of the software development lifecycle. This course will provide those interested in a career in this role a foundation in automated software testing.
Systems Analyst
Systems Analysts help businesses improve their efficiency by proposing technological improvements, which they may help to implement as well. As such, they need to understand how processes work, as well as how to apply new technologies to optimize performance. This course may be helpful for individuals who may not have a computing background preparing for this role.
Software Tester
Software Testers perform a critical role on any software development team, but are particularly essential for Agile development, as their work can contribute to uncovering potential risks to quality early on. This course can provide the knowledge of automated testing techniques that are essential for working on these teams and having an immediate impact.
Data Analyst
Responsible for collecting, analyzing, interpreting, and presenting data, Data Analysts help organizations use data to understand their customers, optimize their operations, and make better decisions. This course may be helpful for those who want to explore the foundational concepts of testing in advance of preparing for a role in this field.
Business Analyst
Business Analysts must be able to understand how businesses work, and to create solutions that help them to run more efficiently. They interview stakeholders, document processes, and help to design and implement new systems and applications. This course may be helpful for those who want to explore the foundational concepts of testing in advance of preparing for a role in this field.
Technical Writer
Technical Writers create instruction manuals, how-to guides, and other documentation that explains complex technical information to non-technical audiences. While the primary focus of this role is to create instructional materials for products and services, Technical Writers must be familiar with the products they are writing about, and must have the ability to simplify difficult concepts into clear, concise language. This course may be helpful for those who want to explore the foundational concepts of testing in advance of preparing for a role in this field.
Automation Engineer
Automation Engineers design, develop, and maintain automated systems and equipment to optimize processes and improve efficiency. They must have a strong understanding of both hardware and software, as well as the ability to write and interpret code. This course may be helpful for those who want to explore the foundational concepts of testing in advance of preparing for a role in this field.
Product Manager
Product Managers are responsible for the overall success of a product. They work with engineers, designers, and marketers to define the product vision, roadmap, and features. They also track the product's progress and make sure that it meets the needs of customers. This course may be helpful to aspiring Product Managers who want to strengthen their understanding of software testing.
IT Project Manager
IT Project Managers plan, execute, and close IT projects. They work with stakeholders to define the project scope, budget, and timeline. They also manage the project team and track the project's progress. This course may be helpful to aspiring IT Project Managers who want to strengthen their understanding of software testing.
IT Consultant
IT Consultants help organizations to improve their IT systems and processes. They work with clients to identify their needs, develop solutions, and implement change. This course may be helpful for those who want to explore the foundational concepts of testing in advance of preparing for a role in this field.
Quality Manager
Quality Managers are responsible for developing and implementing quality assurance programs. They work with teams to identify and mitigate risks, and to improve the quality of products and services. This course may be helpful for those who want to explore the foundational concepts of testing in advance of preparing for a role in this field.
Software Architect
Software Architects design and develop the overall architecture of software systems. They work with stakeholders to define the system's requirements and to create a blueprint for how the system will be built. This course may be useful for those who want to gain a basic understanding of automated software testing.
Data Scientist
Data Scientists use data to solve business problems. They collect, clean, and analyze data to identify trends and patterns. They also develop models to predict future outcomes and make recommendations. This course may be useful for those who want to gain a basic understanding of automated software testing.

Reading list

We've selected eight 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 Automated Software Testing: Model and State-based Testing.
Provides a comprehensive overview of software testing, including advanced techniques such as mutation testing and property-based testing. It valuable resource for anyone who wants to learn more about software testing.
Classic in the field of software testing. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about software testing.
Practical guide to software testing. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about software testing.
Comprehensive guide to software testing. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about software testing.
Provides a comprehensive overview of automated testing in Python. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about automated testing in Python.
Provides a comprehensive overview of testing automation. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about testing automation.
Provides a comprehensive overview of test driven development. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about test driven development.
Provides a comprehensive overview of testing legacy code. It covers a wide range of topics, including test planning, test design, and test execution. It valuable resource for anyone who wants to learn more about testing legacy code.

Share

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

Similar courses

Here are nine courses similar to Automated Software Testing: Model and State-based Testing.
Automated Software Testing: Unit Testing, Coverage...
Most relevant
Introduction to Automated Analysis
Most relevant
Black-box and White-box Testing
Most relevant
Automated Software Testing with Python
Most relevant
Introduction to Software Testing
Most relevant
Working with Android Tools and Testing
Most relevant
Testing Rust 2021 Applications
Most relevant
Testing in React 18
Most relevant
Testing and Debugging in .NET Core Applications
Most relevant
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