When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 4 modules in this course
This course introduces state-of-the-art techniques for automated analysis. Automated analysis encompasses both approaches to automatically generate a very large number of tests to check whether programs meet requirements, and also means by which it is possible to *prove* that software meets requirements and that it is free from certain commonly-occurring defects, such as divide-by-zero, overflow/underflow, deadlock, race-condition freedom, buffer/array overflow, uncaught exceptions, and several other commonly-occurring bugs that can lead to program failures or security problems. The learner will become familiar with the fundamental theory and applications of such approaches, and apply a variety of automated analysis techniques on example programs.
After completing this course, a learner will be able to:
- Understand the foundations of automated verification: randomization and symbolic representations
- Distinguish the strengths and weaknesses of random testing, symbolic analysis, static analysis, and model checking
- Use a variety of state-of-the-art static analysis and automated testing tools for automated verification
- Create executable requirements as an oracle suitable for automated testing and symbolic analysis
- Understand how the choice of oracle affects fault-finding for automated analysis strategies.
- Use automated testing to achieve full mutation coverage
- Create a test plan that utilizes both manually-written tests and automated tests towards maximizing rigor, minimizing effort and time, and minimizing test costs.
This course is intended for learners interested in understanding the principles of automation and the application of tools
for analysis and testing of software This knowledge would benefit several typical roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you have some familiarity with the Software development Life-Cycle, an understanding of the fundamentals of software testing, similar to what is covered in the Introduction to Software Testing and Black-box and White-Box Testing Courses.
Familiarity with an object-oriented language such as Java or ability to pick-up Java syntax quickly to write and modify code, and willingness to use tools and IDEs are assumed.
In this module we will learn about a range of techniques for analysis of programs and methods to automate testing. Along the way we will learn how to specify properties of interest to check about a program and capture assumptions about the environment for effective testing. To reinforce some of the important concepts learned we will practice automated testing using effective tools on a concrete example.
Environmental Specification and Assumptions•7 minutes
Parameterized Unit Testing using junit-quickcheck•12 minutes
Environmental Specifications in junit-quickcheck•3 minutes
(Optional) Installation of Eclipse and Gradle•3 minutes
1 reading•Total 10 minutes
Overview and Syllabus•10 minutes
5 assignments•Total 120 minutes
Introduction to Automated Analysis•30 minutes
Automated Analysis Techniques•30 minutes
Symbolic Representations•30 minutes
Property Specification•30 minutes
Environmental Specifications and Assumptions•0 minutes
1 programming assignment•Total 180 minutes
Parameterized Unit Tests with junit-quickcheck•180 minutes
Automated Test Generation
Module 2•6 hours to complete
Module details
The focus of this module is to understand how various techniques can help us automate the generation of useful and numerous tests. We will examine ways to specify and use properties of the system and the environment to guide the generation of test data.
What's included
8 videos4 assignments1 programming assignment
Show info about module content
8 videos•Total 84 minutes
Overview of Automated Test Generation•7 minutes
Automated Test Generation using Random Testing•14 minutes
Automated Test Generation using Symbolic Execution•16 minutes
Automated Test Generation using Metaheuristic Search•16 minutes
Property-Based Testing for Real-Time Systems•7 minutes
Biasing Input Values in junit-quickcheck•6 minutes
Using Generators to Create Complex Inputs in junit-quickcheck•10 minutes
Explanation of Test Harness and Assignment for Microwave Example•8 minutes
4 assignments•Total 79 minutes
Overview of Automated Test Generation•7 minutes
Automated Test Generation using Random Testing•30 minutes
Automated Test Generation Using Metaheuristic Search•12 minutes
Property-Based Testing for Real-Time Systems•30 minutes
1 programming assignment•Total 180 minutes
Property-Based Testing with junit-quickcheck•180 minutes
Static Analysis
Module 3•5 hours to complete
Module details
The goal of this module is to introduce the learner to the principles of statically analyzing programs, understand how analysis techniques work by looking at some example analyses, and some good practices to follow when designing programs to enable the tools to help us detect and avoid defects. The learner will gain an understanding of using static analysis tools by looking at one concrete tool.
What's included
5 videos1 reading3 assignments
Show info about module content
5 videos•Total 64 minutes
What is Static Analysis•15 minutes
Dataflow Analysis•16 minutes
Program Wellformedness Properties•12 minutes
Designing programs for analyzability•9 minutes
Static Analysis with Infer•12 minutes
1 reading•Total 120 minutes
Analysis Exercise with Infer•120 minutes
3 assignments•Total 90 minutes
What is static analysis?•30 minutes
Designing programs for analyzability•30 minutes
Summative Review•30 minutes
Effective Automated Verification
Module 4•3 hours to complete
Module details
This module will examine how to use effective automation techniques for a variety of purposes such as performing effective regression testing, discovering security vulnerabilities and monitoring software at run-time for critical properties.
What's included
6 videos2 readings4 assignments
Show info about module content
6 videos•Total 61 minutes
Automating Regression Testing•10 minutes
Automating Security Testing Using Fuzz Testing•14 minutes
Runtime Monitoring•7 minutes
Where Automation Fails•9 minutes
Using Multiple Methods Effectively•10 minutes
The Evolution of Software Testing•10 minutes
2 readings•Total 20 minutes
Fuzz Testing with AFL•10 minutes
Runtime Monitoring Tools•10 minutes
4 assignments•Total 90 minutes
Automating Regression Testing•30 minutes
Automating Security Testing Using Fuzz Testing•30 minutes
Runtime Monitoring•30 minutes
Summative Review of Week 4 material•0 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructors
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
The University of Minnesota is among the largest public research universities in the country, offering undergraduate, graduate, and professional students a multitude of opportunities for study and research. Located at the heart of one of the nation’s most vibrant, diverse metropolitan communities, students on the campuses in Minneapolis and St. Paul benefit from extensive partnerships with world-renowned health centers, international corporations, government agencies, and arts, nonprofit, and public service organizations.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.2
87 reviews
5 stars
58.62%
4 stars
19.54%
3 stars
10.34%
2 stars
4.59%
1 star
6.89%
Showing 3 of 87
L
LP
4·
Reviewed on Nov 12, 2020
Muy bueno!, seria interesante ver mas demostraciones con herramientas.
H
HH
4·
Reviewed on Oct 16, 2024
The course is decent, the presentations are great in most, and lots of learning. Its scope is also vast and it only gives a glimpse into what is possible.
M
MB
5·
Reviewed on Dec 24, 2021
Really this is course was too much challenging and resourceful.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.