Introduction to Automated Analysis

所在平台: Coursera

课程主页: https://www.coursera.org/learn/automated-analysis

课程评论:没有评论

第一个写评论        关注课程

课程简介

课程名称:自动化分析导论 课程概述:本课程介绍了自动化分析的最先进技术。自动化分析不仅包括自动生成大量测试以验证程序是否满足要求的方法,还涵盖了证明软件符合要求且无某些常见缺陷(如除零、溢出/下溢、死锁、竞争条件、缓冲区/数组溢出、未捕获的异常等)的方法。这些缺陷可能导致程序故障或安全问题。学习者将熟悉这些方法的基本理论和应用,并在实例程序上应用多种自动化分析技术。 完成本课程后,学习者将能够: - 理解自动化验证的基础:随机化和符号表示 - 区分随机测试、符号分析、静态分析和模型检查的优缺点 - 使用多种先进的静态分析和自动测试工具进行自动化验证 - 创建适合自动化测试和符号分析的可执行需求作为参照 - 理解参照的选择如何影响自动化分析策略的故障查找 - 使用自动化测试实现完全变异覆盖 - 制定测试计划,结合手动编写的测试和自动化测试,最大限度地提高严谨性、减少工作量和时间,并降低测试成本。 本课程适合对自动化原理及分析和测试工具应用感兴趣的学习者。此知识将有助于多个典型角色:软件工程师、测试软件工程师、测试自动化工程师、DevOps工程师、软件开发者、程序员、计算机爱好者。我们期待学习者对软件开发生命周期有一定了解,并理解软件测试的基本原理,类似于《软件测试导论》和《黑盒与白盒测试》课程所涵盖的内容。 课程大纲: 1. 模块名称:自动化分析导论 - 描述:学习程序分析的各种技术以及测试的自动化方法,包括指定要检查的属性和捕获有效测试的环境假设。 2. 模块名称:自动化测试生成 - 描述:理解各种技术如何帮助我们自动生成有用的大量测试,考察如何通过系统和环境属性的指定来指导测试数据生成。 3. 模块名称:静态分析 - 描述:介绍静态分析程序的原则,理解分析技术的运作,并教授一些良好的设计实践,以便工具能帮助我们检测和避免缺陷。 4. 模块名称:有效的自动化验证 - 描述:检查如何有效地使用自动化技术进行回归测试、发现安全漏洞以及在运行时监控软件的关键属性。

课程大纲

Name:Introduction to Automated Analysis

Description: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.

Name:Automated Test Generation

Description: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.

Name:Static Analysis

Description: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.

Name:Effective Automated Verification

Description: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.

课程评论(0条)

课程详情

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.

课程标签

0人关注该课程

主题相关的课程