---
# System prepended metadata

title: 0-3 Recap
tags: [ISTQB, SQA, Software Testing]

---

# 0-3 Recap

###### tags:  `ISTQB` `Software Testing` `SQA`

## Introduction
- *Software Testing: An ISTQB-BCS Certified Test Foundation guide 3rd edition*
- Relates to the 2010 version of the **ISTQB Certified Tester Foundation Level** syllabus.
- References to ISO/IEC/IEEE 29119 Software Testing:
    - ISO/IEC 29119-1: Concepts & definitions
    - ISO/IEC 29119-2: Test processes
    - ISO/IEC 29119-3: Test documentation
    - ISO/IEC 29119-4: Test techniques 
    - ISO/IEC 29119-5: Keyword driven testing

## 1 THE FUNDAMENTALS OF TESTING 
### Why testing is needed?
- **An error** (or mistake) leads to **a defect**, which can cause **an observed failure**. Cause consequences:
    - Harm people, companies, the envirnment
    - Cost money, time, business reputation, life
- Keep software under control.

![Effect of an error](https://i.imgur.com/SdZdjQO.png)

### What testing is?
- Debugging and Testing 
- Static testing and dynamic testing

### What testing does?
- Ensure
- Examined
- Reported 

### General testing principles
- Testing shows the presence of bugs
- Exhaustive testing is impossible
    - Consider both ‘risk’ and ‘priorities’ 
:::info
:star: **Definition of Exhaustive testing**
A test approach in which all possible data combinations are used. This includes implicit data combinations present in the state of the
software/data at the start of testing.
:::

- Resources triangle
![Resources triangle](https://i.imgur.com/BqoU4a5.png)

- Early testing
![Effect of identification time on cost of errors](https://i.imgur.com/hFHz8Xb.png)

- Defect clustering
    - The application of the Pareto principle to software testing: approximately 80% of the problems are found in about 20% of the modules.

- The pesticide paradox
    - Running the same set of tests continually will not continue to find new defects.
    - Any regression test set needs to change to reflect business needs, and what are now seen as the most important risks. 

- Testing is context dependent

- Absence of errors fallacy
    - The fact that no defects are outstanding is not a good reason to ship the software

### Fundemental Test Process

```graphviz
digraph fundemental_test_process{
    splines=ortho
    node[
        shape=box,
        fixedsize=true,
        width=2,
        fontsize=12
    ];
    
    
    "Test planning and control"
    ->"Test analysis and design"
    ->"Test implementation \nand execution" 
    ->"Evaluating exit criteria \nand reporting"
    ->"Test closure activities";  
}
```

### The psychology of testing
## 2 LIFE CYCLES

### V-model
![V-model for software development](https://i.imgur.com/xCZf75e.png)
- Test level

### Iterative
![Iterative development](https://i.imgur.com/kLo1C8D.png)

### Test Type
- Functional testing.
- Non-functional testing.
(Security 比較common的是不是有機會屬於此類，例如要符合某一種等級的入侵)
- Structural testing.
- Testing after code has been changed.

:::danger
:question: security是functional or non-functional?
:::

### Maintenance testing

## 3 STATIC TESTING
- Review: document 
    - a requirement specification, a piece of code, a test plan/test case
    - carried out by reading
- Static analysis: 
    - code
    - best carried out using tools

### Review
- Stages of a formal review
![Stages of a formal review](https://i.imgur.com/YAmhNqQ.png)

- Formality of reviews
![Formality of reviews](https://i.imgur.com/8n1h7kP.png)

## Functional Vs Non-Functional Testing:
以下是搜尋到關於Functional testing 跟 non-Functional testing的差別，放在這裡參考
reference to https://www.guru99.com/functional-testing.html
![](https://i.imgur.com/qn2Lps9.png)
![](https://i.imgur.com/JRHe2Iu.png)
