-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #55 from osundwajeff/fixes
fixes & updates
- Loading branch information
Showing
4 changed files
with
75 additions
and
33 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |