The-Software-Experts




Google
 




   catch your bugs!
  Home
  Newsletter
  Forum
  Shop

  SW-Training
  - Software Design
  - Safe Coding in C
  - Software Inspection
  - Software Testing
  

  SW-Design
  - Architecture
  - Module Design
  

  Coding in C
  - Safe Coding in C
  

  Refactoring
  - Principles
  - Methods
  

  SW-Testing
  - Principles
  - Static Analysis
  - Inspections
  - Module Tests
  - Functional Tests
  - Integration Tests
  - Test Documentation
  - Links
  

  SW-Documentation
  - SGML Principles
  - Printing SGML
  - Links
  

  SW-Processes
  - Process Descriptions
  - Process Assessments
  - Self Evaluation
  - Food for Thought
  - Links
  

Safety Software
Design Training

IEC 61508 compliant
Safety Software
Design for Microcontroller

SW Document
Templates

CMMI and SPICE
compliant document
templates

SW Process
Description

CMMI Level 4 and
SPICE compliant SW
development procedure

SGML Package for
Documentation

Edit and print SGML
Documemts. Professional.
fast, easy to use.

Test Bench
for C/C++

Perl based test
environment for easy
component testing

Software Test Training

I offer this test training to make test engineers fit for their job. Testing is a skill of its own. There is a wide variety of good literature presenting the state of the art of SW testing. However this is rarely taught at school or universities. This leaves modern SW engineers unprepared for the challenging task of SW testing. Based on the solid theoretical background as taught in this course, I will also give a wide variety of examples from real life, which can serve as source of best pracitice for your own applications. The course is taught on a regular basis at the University of Applied Sciences in Ingolstadt. The background and the examples are related to software testing for safety critical microcontroller applications which were programmed in C. However the techniques and theories are also applicable for other applications and programming languages. This Software Test Training is a 2 days intensive seminar. The course can be held in English or German. The training material is in English. I would be glad to receive your requests for inhouse trainings. You can use our contact sheet for this.

The contents of the course are:

State of the Art of SW Testing

The first part of the course gives a complete overview on testing theory. You will learn what you can expect from testing and how you have to specify and document tests. Further the main testing methods will be explained including their capability to find specific errors. The following detailed subjects will be addressed in the course:

Introduction to Software Testing

This is a general introduction into the art of testing. Somtimes the expectations in tests are wrong, sometimes activities are believed to be testing although they miss the most important features of it. The introduction will explain terms used in testing and provide a good overview on the subject:

  • What is test NOT?
  • What is test, what can you expect of it, what are the goals of testing.
  • Definition of terms and principles
  • Overview on tests, which test finds which error?
  • Who should do testing?

Test Documentation According to IEEE 829

If tests are not specified and documented properly they can not be regarded to be proper tests. The main features of test documentation are defined in an IEEE standard. I will present the necessary test documentation which satisfies the demands of the standard and is usable in everyday testing:

  • Test Plan
  • Effort Estimation and Schedule of Test Activities
  • Test Design Specification
  • Test Case / Procedure Specification
  • Test Reporting
  • Defect Data Collection

State of the Art - Test Methods

There is a set of testing methods which became state of the art. The aim of these techniques is to provide a good and sensible coverage of tests. On the one hand tests should be as complete as possible and poke into known areas of problems, but on the other hand you want to reduce test cases to the needed amount in order to avoid too high testing efforts. In the course I will show how these techniques can be combined and applied in everyday testing:

  • Statement Testing
  • Branch / Decision Testing
  • Condition Coverage (Variant of Branch / Decision Testing)
  • Path Testing
  • Data Flow Testing
  • Equivalence Partitioning
  • Boundary-Value Analysis
  • Interface Testing
  • Memory Testing
  • State Transition Testing
  • Real Time Testing

SW Testing Techniques

The second part of the course will enter into practical testing. There are various techniques which should be applied in the right sequence, because each one of them finds different kinds of errors and the techniques build upon each other. The following subjects will be addressed:

Static Code Analysis

Since a couple of years the quality of code checking tools improved and more tools became available. These tools can perform checks which so far had to be done in code inspections. In this course I will expalin the benefits of static code analysis, its limits and what is left to be done by inspections. Some of the details are:

  • Automatic Checking Tools and their benefits and limits
  • Examples of PC-Lint Checks
  • MISRA checking tools

Software Inspection

Software inspections are one of the most powerful testing methods. In the course I will give only an overview on the methods of inspections and reviews. I also offer a dedicated course for inspections with examples and exercises. The content of the two courses is basially the same, however the proper inspection training has the aim to train you in inspections, whereas this course part has the aim to supply you with some knowledge about it and give you an overview:

  • Inspection, Review, Walk Trough and Other Checks
  • Definitions and Inspection Facts
  • Inspection Process According to IEEE 1028
  • Technical Review According to IEEE 1028
  • Practical Problems with Inspections
  • An Adapted Inspection Process
  • Code Inspections and their relation to Automatic Checks

Dynamic Module Tests

There are various test benches available to perform module tests. However I choose Perl and the Inline package, simply because it is for free and it works excellent. Using this tool I will show how to set up module tests, focusing on white box testing:

  • The Perl Script Based Test Environment and its Usage.
  • The setup of the environment: The C-Test Object, the "test_init()" Function, Test Stubs, "get_" Functions, "set_" Functions
  • Boundary and Equivalence Class Checks
  • Functional Component Tests
  • Support of Development of Functions Terms and Formulas
  • Further Hints and Examples for Usage

Functional Component Tests

Using the same Perl testing environment you can also perform functional component tests. Only the test cases are different. Component tests view the test object only at its interface, without considering the interiors. Therefore the test cases try to stress the interface and check the behaviour of a component against its specification. The details of the course are:

  • Principles of Component Tests
  • Matching of Data Types
  • Check Number and Sequence of Pass-parameters
  • Check Ranges of Parameters
  • Regression Tests
  • Clean Tests and Dirty Tests

Integration Tests

Integration tests have to focus on the one hand on the integration of software components to form the next bigger component, until the software is complete. But for many applications there is also a system integration which needs a stest strategy. System integration testing means to test the operation of all system components in combination with the software. For both kinds of integrations the basic practices are explained and valuable hints are given in the course.

System Tests

The purpose and the special problems of system tests are explained. E.g. the challenge of testing a system without influences by the test instrumentation.









Imprint