Modern Testing Techniques in Cloud and Distributed Systems - Mirantis Training Course for Students

1. Overview

This course (hereinafter TCS) is intended for students of mostly IT-related departments who plan to gain their skills in SW testing and QA. TCS is based on the mandatory scope of knowledge for Certified Test Engineers (ISTQB) and consists of two parts: theoretical and practical which are delivering in parallel to accelerate learning process.

Despite being planned as optional, TCS provides students with a strong background for further adjusting their professional level of testing to the current industrial standards.

2. Plan

2.1. Introduction to QA and Testing Basics (Lecture 1)

  • Introduction

  • Testing Basics:

    • Terminology

2.1.1. Theory (3 ah)

  1. Introduction:

    1. Role of SW in modern life

    2. High dependence on the SW quality

    3. History and increasing value of testing mission

    4. Why testing is necessary?

    5. Quality as a critical factor

    6. Role of QA and Testing in SW:

      1. Design

      2. Development

      3. Support

    7. Development vs testing

    8. Importance of structured and systematic approach to evaluation and testing

    9. Testing as time-consuming and expensive project activity

    10. Lack of academic educational programs for training professional testers:

      1. Historic peculiarities

      2. Courses and certifications

      3. International initiatives

  2. Testing basics:

    1. Terminology:

      1. “Error” and “Bug” (failure, fault, defect)

      2. Testing is not debugging

      3. Absolute correctness and “bug-free” systems

      4. SW Quality (FURPS+)

      5. Test effort

      6. Cost of a fault

      7. Risks and testing

      8. Adequate and extra testing

      9. Test case explosion and limited resources

2.1.2. Practice

  • Entry-level knowledge check

 

2.2. Testing Basics: Test Process (Lecture 2)

  • Test process fundamentals

2.2.1. Theory (2 ah)

  1. Testing basics:

    1. Terminology:

    2. Test process fundamentals:

      1. SDP types:

        1. Waterfall

        2. V-shaped

        3. Iterative (RUP)

        4. Agile-like (XP, SCRUM, Kanban, Test-Driven Development)

      2. Test planning:

        1. Test Strategy (approach , techniques)

        2. Test Intensity

        3. Prioritization

        4. Tools

        5. Schedule

        6. Resources

        7. “Test Plan” document sample

      3. Test Analysis and Design:

        1. Review (docs, reqs, standards)

        2. Analysis and Improvement

        3. Test Cases (logical and specific, Test Case Spec example)

        4. Input data and results verification

        5. Test oracles

        6. Expected and unexpected inputs

      4. Test Implementation and Execution:

        1. TCs logical -> TCs concrete

        2. Tests without a protocol have no value!

        3. Corrections may lead to new faults

        4. TCs prioritization

      5. Evaluation of the Test Exit Criteria and Reporting:

        1. End of testing

        2. Dead code

        3. Determining test's end

        4. Exit criteria in practice:
          Time and cost

        5. Test summary report

      6. Test Closure Activities:

        1. Gathering and accumulation of gained experience

        2. Analysis of the results

        3. Using the findings

        4. Conservation

      7. The Psychology of Testing:

        1. People make mistakes

        2. Development vs testing peculiarities

        3. Constructive and destructive actions

        4. Independent testing team

        5. Reporting of failures

        6. Mutual comprehension

      8. General Principles of Testing:

        1. Testing shows the presence of defects, not their absence

        2. Exhaustive testing is not possible

        3. Testing activities should start as early as possible

        4. Defects tend to cluster together

        5. The pesticide paradox

        6. Test is context dependent

        7. The fallacy of assuming that no failures means a useful system

2.2.2. Practice

  • Work environment and instrumentaria:
    LDAP, Redmine, GIT, Linux, Win, Ping, Traceroute, OpenVPN, IPtables, Wireshark

 

2.3. Dynamic Analysis (Lecture 3)

  • Dynamic analysis

2.3.1. Theory (2 ah)

  1. Dynamic testing:

    1. Black Box Testing Techniques:

      1. Equivalence Class Partitioning

      2. Boundary Value Analysis

      3. State Transition Testing

      4. Use Case Testing

    2. White Box Testing Techniques:

      1. Structural testing

      2. Coverage:

        1. Statement

        2. Branch

        3. Path

    3. Intuitive and Experience Based Testing

2.3.2. Practice

  • Introduction to the commercial cloud-based projects (CBP). Description of server cloud environment ( Linux Virtual Machines, OpenVPN, IPtables) and client environment (Windows VMs)

 

2.4. Testing in Software Life Cycle 1 (Lecture 4)

  • Testing in software life cycle

2.4.1. Theory (2ah)

  1. Testing in software life cycle:

    1. The General V-model

    2. Unit Test

    3. Component Test

    4. Integration Test

    5. System Test

2.4.2. Practice

  • Introduction to test planning

  • Development of a Test Plan: sequential Test Cases based on an example (using common Linux utilities e.g. ping, traceroute, whois etc.)

 

2.5. Testing in Software Life Cycle 2 (Lecture 5)

  • Acceptance testing

  • Other kinds and generic types of testing

2.5.1. Theory (2ah)

  1. Testing in software life cycle:

    1. Acceptance Test

    2. Testing of new Product Versions

    3. Generic Types of Testing: (FURPS+)

2.5.2. Practice

  • Unit and Component testing:

    • API for VPN tunnel creation

    • Establishing a VPN tunnel

 

2.6. Static Testing (Lecture 6)

  • Static analysis

2.6.1. Theory (2 ah)

  1. Static testing:

    1. Structured Group Examinations:

      1. Reviews

      2. The General Process

      3. Roles and Responsibilities

    2. Static Analysis:

      1. The Compiler as Static Analysis Tool

      2. Examination of Compliance to Conventions and Standards

      3. Data Flow Analysis

      4. Control Flow Analysis

      5. Determining Metrics

    3. Tools:

      1. Static analyzers

      2. Profilers

      3. System architecture analyzers

2.6.2. Practice

  • Integration and System testing:

    • Pinger

    • All system end-to end test. From server client to windows client

 

2.7. Test Management 1 (Lecture 7)

  • Test management:

    • Organization

    • Planning

    • Cost

    • Strategy

2.7.1. Theory (2 ah)

  1. Test management:

    1. Test Organization:

      1. Test teams

      2. Tasks and Qualifications

      3. QA Engineer personality (features)

    2. Test Planning:

      1. Estimation

      2. Test Plan document

      3. Prioritizing tests

      4. Tests Exit Criteria

    3. Cost and Economy Aspects:

      1. Costs of defects

      2. Risk analysis

      3. Costs of testing

      4. Test effort estimation methods

    4. Test Strategy:

      1. Preventative vs. Reactive Approach

      2. Analytical vs. Heuristic Approach

      3. Testing and Risk

2.7.2. Practice

  • Acceptance testing:

    • End user test ( end–to–end test from the user perspective)

    • IPtables source code analysis

 

2.8. Test Management 2 (Lecture 8)

  • Test management: Activities, Incidents, Configurations

2.8.1. Theory (2 ah)

  1. Test management:

    1. Test Activity Management:

      1. Test Cycle Control

      2. Test Log

    2. Incident Management:

      1. Reporting

      2. Classification

      3. Status and Life cycle

    3. Configuration Management

      1. Role of CM

      2. Requirements to CM

2.8.2. Practice

  • Data Flow & test logs:

    • Data flow whithin the system

    • IPtables data changes

    • Historical analysis of logs

 

2.9. Agile SDPs (Lecture 9)

  • Agile SW development processes

2.9.1. Theory (2 ah)

  1. Agile SDP:

    1. Principles

    2. Peculiarities

    3. Testing process

2.9.2. Practice

  • Automated web testing:

    • Web applications

    • Service-based applications

 

2.10. Tools (Lecture 10)

  • Tools for testing

2.10.1. Theory (2 ah)

  1. Tools:

    1. Test Management and Control

    2. Test Specification

    3. Static Testing

    4. Dynamic Testing

    5. Non-Functional Testing

2.10.2. Practice

  • DB Testing:

    • Testing methods

    • Working with DB

    • Queries optimization

 

2.11. Test Automation (Lecture 11)

  • Test Automation

2.11.1. Theory (2 ah)

  1. Test Automation:

    1. Introduction to Behavior-Driven Development

    2. Testing Framework Structure

    3. Web testing

    4. Network testing

    5. DB testing

    6. Load/Performance testing

2.11.2. Practice

  • Performance testing:

    • Load testing

    • Stress testing

    • Stability / endurance / soak testing

 

2.12. Distributed and Cloud–based Systems (Lecture 12)

  • Distributed systems

  • Cloud-based systems

2.12.1. Theory (2 ah)

  1. Distributed and Cloud–based systems:

    1. Introduction

    2. Architectures

    3. Peculiarities of testing:

      1. Test design

      2. Test development and running

      3. Testing

2.12.2. Practice

  • Network testing:

    • Network layouts

    • Network Routing

    • General attack types

 

2.13. Other Verification Techniques (Lecture 13)

  • Verification Techniques

2.13.1. Theory (2 ah)

  1. Other verification technics:

    1. Expertise:

      1. SW classification/evaluation

      2. Other types of SW expertise

      3. Specific methods

      4. SW architecture analysis

    2. Formal verification methods:

      1. Logic-algebraic models

      2. Interim models

      3. Executable models

      4. Formal methods classification

      5. Methods and tools of deductive analysis

      6. Methods and tools for models verification

      7. Methods and tools of conformity verification

    3. Synthetic methods:

      1. Model-based

      2. SW formal attributes monitoring

      3. Static analysis of formal attributes

      4. Structured texts generation

2.13.2. Practice

  • Final knowledge check (exam)

 

3. Schedule

Here is the list of classes and lecturers conducting the training sessions:

 

Session #

Date

Topic (Lecture / Practice)

Lecturers

Notes

1

24 Sep 11

Introduction to QA and Testing Basics

Maxim Usichenko

 

Entry-level knowledge check

Orest Tatomyr

 

2

1 Oct 11

Testing Basics: Test Process

Maxim Usichenko

 

Work environment and instrumentaria: LDAP, Redmine, GIT, Linux, Win, Ping, Traceroute, OpenVPN, IPtables, Wireshark

Orest Tatomyr

 

3

8 Oct 11

Dynamic Analysis

Maxim Usichenko

 

Introduction to the Project. Description of server cloud environment ( Linux Virtual Machines, OpenVPN, IPtables) and client environment (Windows VMs)

Orest Tatomyr

 

4

15 Oct 11

Testing in Software Life Cycle 1

Maxim Usichenko

 

Development of a Test Plan: sequential Test Cases based on an example (using common Linux utilities e.g. ping, traceroute, whois etc.)

Orest Tatomyr

 

5

22 Oct 11

Testing in Software Life Cycle 2

Maxim Usichenko, Polina Petriuk

 

Unit and Component testing:

  • API for VPN tunnel creation

  • Establishing a VPN tunnel

Orest Tatomyr

 

6

29 Oct 11

Static Testing

 

 

Integration and System testing:

  • Pinger

  • All system end-to end test. From server client to windows client

Orest Tatomyr

 

7

5 Nov 11

Test Management 1

Maxim Usichenko

 

Acceptance testing:

  • End user test ( end–to–end test from the user perspective)

  • IPtables source code analysis

Orest Tatomyr

 

8

12 Nov 11

Test Management 2

Maxim Usichenko

 

Data Flow & test logs:

  • Data flow whithin the system. IPtables data changes

  • Historical analysis of logs

Orest Tatomyr

 

9

19 Nov 11

Agile Software Development Processes

Maxim Usichenko

 

Automated web testing:

  • Web applications

  • Service-based applications

Alexander Savin, Orest Tatomyr

 

10

26 Nov 11

Tools

Maxim Usichenko

 

DB Testing:

  • Testing methods

  • Working with DB

  • Queries optimization

Orest Tatomyr, Helena Pantioukh

 

11

3 Dec 11

Test Automation

Maxim Usichenko

 

Performance testing:

  • Load testing

  • Stress testing

  • Stability / endurance / soak testing

Orest Tatomyr, Maxim Borodin

 

12

14 Jan 12

Distributed and Cloud–based Systems

Alexander Dolgarev

 

Network testing:

  • Network layouts

  • Network Routing

  • General attack types

Orest Tatomyr

 

13

21 Jan 12

Other Verification Techniques

Maxim Usichenko

 

Final knowledge check (exam)

Maxim Usichenko, Orest Tatomyr

 

 

| (0)