introduction to parasoft c++test

22
Parasoft ADP and C++test Ellen Chiang

Upload: engineering-software-lab

Post on 13-May-2015

2.008 views

Category:

Technology


7 download

DESCRIPTION

Static Code Analysis, Dynamic Application Monitoring, Code Coverage and Unit testing as a combined method in Software Error Prevention process.

TRANSCRIPT

Page 1: Introduction to Parasoft C++TEST

Parasoft ADP and C++test

Ellen Chiang

Page 2: Introduction to Parasoft C++TEST

Parasoft Corporate Overview

Founded in 1987, privately held

Headquarters in Monrovia, CA

300+ employees worldwide

16 locations worldwide

Technical innovator

15 US patents for software technology

10,000+ customers worldwide, over 58% of Fortune 500 clients

Gartner Magic Quadrant: Visionary

Page 3: Introduction to Parasoft C++TEST

The Reality

…Most errors are found after development…

SOURCE: NIST Report,2002

80%

20%

Errors Found Post-Development

Errors Found Pre-Development

80%

20%Time in Actual Development

Time Looking for Errors

Although developers spend a majority of their time looking for errors…

Page 4: Introduction to Parasoft C++TEST

Defect Analysis and Reproduction in Different Phases

Coding Production TestSystem TestIntegration TestUnit Test

Page 5: Introduction to Parasoft C++TEST

Improving Quality: Typical Approach

Page 6: Introduction to Parasoft C++TEST

Automated Defect Prevention

Methodology and solution for detecting an error once and implementing practices to prevent the class of error from ever happening again.

Isolation and identification of errors early in the process

Uses information gained to prevent reoccurring software bugs and to progressively improve the development process

Refocuses teams from testing for and fixing bugs to improving the software lifecycle and delivering higher quality software.

Promoting team behavior and integrating into the development process

Page 7: Introduction to Parasoft C++TEST

Parasoft Delivers Automated Error Prevention

Automation Automatically perform key testing practices

Coding Standards enforcement Unit Testing (White/Black box, regression testing) Run Time Error Detection

Team Infrastructure Address key error prevention roles Automated tools configured for group behavior Integrate with existing technologies Error prevention infrastructure to capture and process

information Use feedback to improve software lifecycle and prevent

errors

Page 8: Introduction to Parasoft C++TEST

What is C++Test?

C++Test improves C/C++ developer and team productivity by automating a number of high-impact techniques for error prevention and detection at early stages of development process.

Page 9: Introduction to Parasoft C++TEST

What Is C++Test?

C++Test is a comprehensive tool for automated static and dynamic analysis of C and C++ code:

Coding policy enforcement

Data flow analysis

Automated code review

Automated unit testing

Execution of unit tests on host and target

Automated Regression testing

Test/code coverage

Runtime Error Detection

Team deployment/process integration

ADP Quality Framework

Static Analysis

Dynamic Analysis

Page 10: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Static Analysis

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

Page 11: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Reads source code and checks code against select coding standard rules.

Automatically enforces 1400+ industry best practices

Finds complex code through Metrics rules

“RuleWizard” feature for creating custom rules without scripting

Early identification of coding errors

Supports the group, project, division, as well as corporate standards

Check for instances of known bugs to prevent reoccurring issues

Coding Standards Static Analysis

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

Page 12: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Adherence

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

“BugDetective” feature: unique static technology based on flow analysis

Automatically finds runtime bugs without writing, executing or reviewing test cases

Enables early and effortless detection of critical runtime errors.

Pinpoints bugs in complex execution paths that span multiple methods, class files and packages

Page 13: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Adherence

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

“Code Review” module for automation of code review process

Facilitates identification of high-level problems in code

Saves time: conduct code reviews without face-to-face meetings

Promotes flexible scheduling

Supports distributed development

Ensures all new code gets reviewed and all identified issues are resolved

Page 14: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Adherence

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

Auto generates test cases to exercise code.

Auto generates stubs for external calls

White box testing: Automatically tests robustness of code construction

Black box testing: Verifies functionality of the code

Reports 6 metrics of code coverage

Easily extend test cases to increase code coverage

Page 15: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Adherence

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

Prior test run results kept with project

Click of button runs regression tests

Easily configured for nightly builds

Guarantees quality of code as it evolves

Page 16: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Adherence

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

Supports host-based testing: perform static analysis and unit testing as the code is developed

Early testing exposes majority of the problems with the application logic before deployment on the target.

Supports testing on the target: Export test harness and cross-compile for execution of test cases directly on the target.

Expose issues that may only occur on the target.

Develop/maintain one set of tests which can be reused for execution on multiple targets.

Page 17: Introduction to Parasoft C++TEST

C++Test Core Features and Benefits

Coding Standards Adherence

Automatic Bug Detection

Automated Code Review

Automated Unit Testing

Automated Regression Testing

Embedded Testing

Runtime Error Detection

Automatically exposes defects that occur as the application is exercised-including memory leaks, null pointers, uninitialized memory, buffer overflows, and more.

The instrumentation used to perform this runtime error detection is lightweight and suitable for running on the target board, simulator, or host for embedded testing.

C++test provides complete information indicating the root causes of the errors along with a detailed stack trace to facilitate issue remediation.

Page 18: Introduction to Parasoft C++TEST

Parasoft Automated Technologies:Testing throughout the SDLC

Coding Production TestSystem TestIntegration TestUnit Test

Enforce Correct Coding and Security Policy

Auto Generate Unit Tests

…with stubs

Flow Analysis Tests

Regular Regression TestingApplication Testing

Code ReviewCode Review

Runtime Error Detection

Page 19: Introduction to Parasoft C++TEST

C++Test Configuration

Professional Edition Developer desktop usage

Architect Edition RuleWizard for custom rule creation

Server Edition Command line for integration with nightly build systems BugDetective for detection of runtime issues Provides reports to development team Includes Team Server Module

Team Server Stores and distributes rules, test configurations, and reports Standardizes testing methods across a team

Page 20: Introduction to Parasoft C++TEST

Team-wide Deployment and Workflow

SCM

Source Control

code & tests

Team Server

Team Server

Test Results

Scheduled TestServer

Professional Editions

Server Edition(Batch Mode)

Architect Edition Team CodingStandards

DeveloperMachines

Architect / Technical lead

NightlyResults

Page 21: Introduction to Parasoft C++TEST

C++Test benefits

Automatically find software defects using static analysis of code

Implement, configure, and automatically enforce team-or company-specific coding standards and guidelines

Ensure that code is reviewed for higher level issues by facilitating and automating the code review process

Automatically generate and validate baseline unit and module tests

Ensure code integrity via automated regression testing Assess effectiveness of existing tests by providing detailed

coverage information Improve efficiency and test effectiveness by promoting “team

behavior” and integrating key test practices into the development process

Page 22: Introduction to Parasoft C++TEST

Summary

Reduce cost by finding errors early in the development process

Improve efficiency Reduce testing time Reduce testing effort Reduce number of bugs introduced into QA by

catching errors early in the development process

Increase stability and confidence Increase testing completeness Improve visibility into the development process Improve efficiency and effectiveness of development

process