introduction to parasoft c++test
DESCRIPTION
Static Code Analysis, Dynamic Application Monitoring, Code Coverage and Unit testing as a combined method in Software Error Prevention process.TRANSCRIPT
Parasoft ADP and C++test
Ellen Chiang
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
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…
Defect Analysis and Reproduction in Different Phases
Coding Production TestSystem TestIntegration TestUnit Test
Improving Quality: Typical Approach
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
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
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.
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
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
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
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
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
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
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
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.
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.
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
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
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
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
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