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

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.

Read more

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.

Enroll now

What's inside

Syllabus

Introduction to Automated Analysis
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.
Read more
Automated Test Generation
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.
Static Analysis
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.
Effective Automated Verification
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops state-of-the-art techniques essential for effective automated analysis and testing in software development
Taught by Kevin Wendt and Mike, recognized experts in software analysis and testing
Provides hands-on practice with a variety of state-of-the-art static analysis and automated testing tools
Suitable for learners with diverse backgrounds, including Software Engineers, Software Testers, DevOps Engineers, and Computer Enthusiasts
Prerequisites include familiarity with Software Development Life-Cycle and fundamentals of software testing
Assumes familiarity with an object-oriented language such as Java or ability to pick-up Java syntax quickly

Save this course

Save Introduction to Automated Analysis to your list so you can find it easily later:
Save

Reviews summary

Solid automation analysis

According to students, this course is a solid introduction to automated analysis. Learners say the lectures are well presented. Many of the programming assignments are difficult, but engaging to those in the field. Students mention the course is challenging and full of resources for those interested in working in automated analysis.
Instructors clearly explain concepts.
"The instructors are very pleasant to listen to and explain things clearly."
Theory is well presented.
"Good course, the theory is well presented."
Programming assignments have some issues.
"The programming assignments are a disaster."
"90% of the packages that the instructors have prepared for the assignments cannot be properly imported into the 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 Automated Analysis with these activities:
Automated Analysis Resources Collection
Build a comprehensive collection of resources on automated analysis for future reference and knowledge expansion.
Browse courses on Automated Analysis
Show steps
  • Conduct research to identify relevant articles, tutorials, videos, and other resources on automated analysis.
  • Organize the resources into a structured and easily accessible repository.
  • Add annotations or summaries to the resources to provide additional context.
  • Share the collection with fellow learners or the broader community.
Software Testing with Automated Analysis
Gain comprehensive knowledge in automated analysis by reviewing a foundational book on the subject.
Show steps
  • Obtain the book and set aside dedicated time for reading.
  • Read and understand the core concepts and techniques presented in the book.
  • Apply the learned concepts to examples and exercises provided in the book.
  • Engage in discussions with peers or online forums to clarify understanding and share insights.
Explore Static Analysis Tools
Enhance understanding of static analysis techniques by exploring available tools and their capabilities.
Browse courses on Static Analysis
Show steps
  • Identify and research various static analysis tools.
  • Install and configure the selected tools.
  • Use tutorials and documentation to learn the functionality and best practices of the tools.
  • Apply the tools to analyze sample code and identify potential defects.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Study Group Participation
Engage in discussions with peers to strengthen understanding of course concepts and techniques.
Show steps
  • Join or form a study group with fellow learners.
  • Schedule regular meetings to discuss course materials, complete assignments, and exchange ideas.
  • Actively participate in discussions, ask questions, and contribute insights.
  • Collaborate on solving problems and understanding complex concepts.
Automated Testing Workshop
Deepen understanding and practical skills in automated testing through a hands-on workshop.
Browse courses on Automated Testing
Show steps
  • Identify and register for an automated testing workshop that aligns with the course objectives.
  • Attend the workshop and actively participate in the exercises and discussions.
  • Apply the learned techniques and tools to personal projects or assignments.
  • Share insights and best practices with peers and fellow workshop participants.
Test Case Generation Exercises
Apply automated analysis techniques by generating test cases to improve fault-finding capabilities.
Browse courses on Test Case Generation
Show steps
  • Identify and prioritize test case scenarios based on program requirements and specifications.
  • Use automated tools and techniques to generate a diverse set of test cases.
  • Execute test cases and analyze results to identify and correct defects.
  • Iterate on test case generation and execution to achieve full mutation coverage.
Automated Analysis Plan Development
Create a detailed plan for applying automated analysis techniques to a specific software system.
Browse courses on Software Testing
Show steps
  • Define the scope and goals of the automated analysis plan.
  • Identify the tools and techniques to be used for automated testing and analysis.
  • Develop a strategy for generating and selecting test cases.
  • Establish a process for analyzing test results and identifying defects.
  • Document the plan and present it to stakeholders for review and feedback.
Automated Analysis Blog Post
Share knowledge and insights by creating a blog post on automated analysis techniques and best practices.
Browse courses on Automated Analysis
Show steps
  • Research and gather information on automated analysis.
  • Choose a specific topic or aspect of automated analysis to focus on.
  • Write a well-structured and informative blog post that covers the topic in detail.
  • Include examples, case studies, or code snippets to support your explanations.
  • Publish the blog post on a relevant platform and share it with your network.

Career center

Learners who complete Introduction to Automated Analysis will develop knowledge and skills that may be useful to these careers:
Test Automation Engineer
Test Automation Engineers are responsible for designing, developing, and maintaining automated tests for software applications. Introduction to Automated Analysis will provide Test Automation Engineers with the skills and knowledge needed to create effective automated tests that can help improve the quality and reliability of software products.
Software Engineer in Test
Software Engineers in Test are responsible for testing software to ensure that it meets requirements and is free of defects. Introduction to Automated Analysis can help Software Engineers in Test gain the skills and knowledge needed to automate the testing process, which can save time and improve the efficiency and effectiveness of testing.
Software Test Engineer
Software Test Engineers are responsible for testing software to ensure that it meets requirements and is free of defects. Introduction to Automated Analysis can help Software Test Engineers gain the skills and knowledge needed to automate the testing process, which can save time and improve the efficiency and effectiveness of testing.
Quality Assurance Analyst
Quality Assurance Analysts are responsible for ensuring that software products meet quality standards. Introduction to Automated Analysis can help Quality Assurance Analysts gain the skills and knowledge needed to automate the testing process, which can save time and improve the efficiency and effectiveness of quality assurance.
DevOps Engineer
DevOps Engineers are responsible for bridging the gap between software development and operations teams. Introduction to Automated Analysis can help DevOps Engineers gain the skills and knowledge needed to automate the testing and deployment process, which can help improve the efficiency and effectiveness of software development and delivery.
Performance Engineer
Performance Engineers are responsible for optimizing the performance of software systems. Introduction to Automated Analysis can help Performance Engineers gain the skills and knowledge needed to identify and mitigate performance bottlenecks, which can help improve the performance of software products.
Security Engineer
Security Engineers are responsible for protecting software systems from security threats. Introduction to Automated Analysis can help Security Engineers gain the skills and knowledge needed to identify and mitigate security vulnerabilities, which can help improve the security of software products.
Software Engineer
Software Engineers apply the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software. Introduction to Automated Analysis will help build a foundation of software analysis and testing techniques, including automated testing and static analysis, which can help Software Engineers ensure the quality and reliability of their software products.
Software Developer
Software Developers are responsible for designing, developing, and maintaining software applications. Introduction to Automated Analysis can help Software Developers gain the skills and knowledge needed to write code that is more likely to be correct and free of defects.
Reliability Engineer
Reliability Engineers are responsible for ensuring that software systems are reliable and free of defects. Introduction to Automated Analysis can help Reliability Engineers gain the skills and knowledge needed to identify and mitigate reliability risks, which can help improve the reliability of software products.
Programmer
Programmers are responsible for writing code that solves specific problems. Introduction to Automated Analysis can help Programmers gain the skills and knowledge needed to write code that is more likely to be correct and free of defects.
Computer Enthusiast
Computer Enthusiasts are interested in learning about all aspects of computers. Introduction to Automated Analysis can help Computer Enthusiasts gain the skills and knowledge needed to understand how software works and how to test and debug it.
Artificial Intelligence Engineer
Artificial Intelligence Engineers are responsible for developing and deploying artificial intelligence systems. Introduction to Automated Analysis may be useful for Artificial Intelligence Engineers who want to gain the skills and knowledge needed to automate the testing and deployment of artificial intelligence systems, which can save time and improve the efficiency and effectiveness of artificial intelligence.
Machine Learning Engineer
Machine Learning Engineers are responsible for developing and deploying machine learning models. Introduction to Automated Analysis may be useful for Machine Learning Engineers who want to gain the skills and knowledge needed to automate the testing and deployment of machine learning models, which can save time and improve the efficiency and effectiveness of machine learning.
Data Scientist
Data Scientists are responsible for analyzing data to extract valuable insights. Introduction to Automated Analysis may be useful for Data Scientists who want to gain the skills and knowledge needed to automate the data analysis process, which can save time and improve the efficiency and effectiveness of data analysis.

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 Introduction to Automated Analysis.
Provides a comprehensive overview of the principles and practices of automated software testing, which valuable complement to the automated analysis techniques taught in the course.
This comprehensive textbook provides a strong foundation for automating software testing and will help the learner understand the fundamentals of software testing.
Provides an introduction to model checking, a formal verification technique that can be used to prove the correctness of software systems.
Provides a comprehensive overview of testing techniques for software and communicating systems.
Provides practical guidance on software test design, complementing the theoretical foundations taught in the course.
Provides a practical guide to software testing from a craftsman's perspective, emphasizing best practices.
Provides a practical guide to test-driven development using Python, which can be beneficial for practitioners who want to learn more about unit testing.
Provides a practical guide to functional testing, which can be beneficial for practitioners who want to learn more about black-box testing techniques.

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 Automated Analysis.
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