Skip to content

Commit

Permalink
Merge pull request #55 from osundwajeff/fixes
Browse files Browse the repository at this point in the history
fixes & updates
  • Loading branch information
osundwajeff authored Dec 22, 2023
2 parents 7a7243a + 7cedbb1 commit cc2071f
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 33 deletions.
2 changes: 1 addition & 1 deletion .idea/TheKartozaHandbook.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

File renamed without changes.
101 changes: 70 additions & 31 deletions docs/src/development/testing/index.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,98 @@
# Introduction

Evaluating quality, functioning and performance of software

Act of examining artifacts and behaviour of software under test by validation and verification.
Software testing is a crucial phase in the software development life cycle (SDLC).
Involving evaluating quality, functioning and performance of software.

It involves:

- analysing product requirements for completeness and correctness
- reviewing product architecture
- working on improving coding techniques with product developers
- examining program behaviour
- Analysing product requirements for completeness and correctness
- Reviewing product architecture
- Working on improving coding techniques with product developers
- Examining program behaviour

The `main` goal is to detect software failures/defects early enough before deployment.

**Note**:
Faults and failures in a software my not necessarily mean errors/bugs in the code.
It may be a `missing feature` which is a `requirement` by a client.

For further reading: [software testing basics](https://www.geeksforgeeks.org/software-testing-basics/).

## Classification of software testing

Classified into two:

The main goal is normally to detect software failures so that defects may be fixed.
- `Manual testing`:
Manual execution of test cases.
Tester takes the role of the end user.

It may entail:
- examining the code
- examining aspects of the code to ensure it does what it's supposed to do
- `Automated testing`:
Automating manual testing using scripts and software.
It comes in handy during regression testing.

Faults and failures in a software my not necessarily mean errors of bugs in the code. It may be a missing feature which is a requirement by the client.
## Levels of testing

For further reading: https://www.geeksforgeeks.org/software-testing-basics/
- `Unit Testing`: Individual units or components of a software application are tested in isolation.

- `Integration Testing`: Different units or components are combined and tested as a group.

- `System Testing`: The entire software system is tested as a whole.

- `Acceptance Testing`: The software is tested to ensure it meets the specified requirements and is accepted by users.

## Testing approaches
- There are three testing approaches:
- 1️⃣ Static testing
- 2️⃣ Dynamic testing
- 3️⃣ Passive testing
There are three testing approaches:

### Static testing
- 1️⃣ `Static testing`:
It is mostly regarded as implicit, involves proofreading, checking syntax and data flows etc. (verification).
- 2️⃣ `Dynamic testing`:
It is done when running the program (validation).
It normally starts when the program is still in development stage to ensure that certain functions work as they are supposed to.

- It is mostly regarded as implicit, involves proofreading, checking syntax and data flows etc. (verification).
- 3️⃣ `Passive testing`:
It means verifying the system behaviour without any interaction with the software program.
In this case no test data is provided but the tester studies logs and traces for specific patterns and specific behaviour.

### Dynamic testing
## Testing process

- It is done when running the program (validation).
- It normally starts when the program is still in development stage to ensure that certain functions work as they are supposed to.
- `Test Planning`:
Defining the scope, objectives, and resources for testing.
- `Test Design`:
Creating test cases based on requirements and design specifications.
- `Test Execution`:
Running the tests and collecting results.
- `Defect Tracking`:
Identifying and documenting any defects found during testing.
- `Test Reporting`:
Communicating the test results to stakeholders.

### Passive testing
- It means verifying the system behaviour without any interaction with the software program.
- In this case no test data is provided but the tester studies logs and traces for specific patterns and specific behaviour.
## Testing concepts

Software testing touches on a few concepts:

- [End-to-end testing](end2endtesting.md)
- [Test driven development](tdd.md)
- [Behaviour driven development](behave.md)
- [Behaviour driven development](bdd.md)
- [Functional testing](functionaltesting.md)
- [Integrated testing](integratedtesting.md)
- [Regression testing](regression.md)
- [System testing](systemtesting.md)

## Frameworks and packages

Frameworks and packages:

- behave
- playwright
- pytest
- black
- pyperformance
- [behave](https://behave.readthedocs.io/en/latest/)
- [playwright](https://playwright.dev/)
- [pytest](https://docs.pytest.org/en/latest/)
- [black](https://black.readthedocs.io/en/stable/)
- [pyperformance](https://pyperformance.readthedocs.io/)

## Best practices

- `Early Testing`:
Start testing as early as possible in the development life cycle.
- `Regression Testing`:
Ensure that new changes do not negatively impact existing functionality(Automated).
- `Test Data Management`:
Use realistic and diverse test data to uncover potential issues.

0 comments on commit cc2071f

Please sign in to comment.