This repo is the best place to learn and keep your testing skills sharpen, The entire content listed below was gathered and placed in a specific order from the intro of the software testing domain up to advanced testing technologies and skills.
Table of Contents
- Top Page
- Software testing fundamentals
- Manual testing
- Automation testing
- Testing Tools
- Test Management and Collaboration Tools
- Software Testing Read & Learn Resources
- Credits and Thanks
βοΈ
Hi π and welcome to this Awesome repo that is all about software testing. Before you can start testing software, you need to understand the terminology, the logical reason of when to do what, and the why. I suggest of course to learn ISTQB FOUNDATION as a ground base of knowledge required to start your path. there is also a need to understand testing methodologies such as Agile and SCRUM framework which is the main domain of performing tests nowadays. here are the main objectives a QA tester needs to understand and apply, the deeper the understanding will go, the smarter the QA tester will be, the more professional skills and confidence he will add to the project under test.
The QA tester has the main responsibility, to give confidence in the stability of the software to perform as the client expects it to be. we need to think about every scenario, every test case, we need to challenge the software in the most creative possible way our time and budget allow in order to alert on every defect we can find to raise the confidence rate before the software goes production.
Depend on your path you aim for, Software developer or QA Manual/ Automation or Automation developer, all of those paths start from the understanding of testing or debugging edit value, why do we even need this? why cant a developer just write his App and deploy for production? can't a developer do his own testing? and many more importent questions you should learn the answer to.
there is a universal language related to the Software development lifecycle that all tech employees must stick to inorder to communicate and understand each other whatever his role, basic set of terms and approaches are listed below. more information can be learned at ISTQB Glossary
π¬
Term βπ» | Meaningβ |
---|---|
Quality Assurance | Activities focused on providing confidence that quality requirements will be fulfilled |
Testing | The process consisting of all lifecycle activities, both static and dynamic, concerned with planning, preparation and evaluation of a component or system and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects |
Defect | An imperfection or deficiency in a work product where it does not meet its requirements or specifications |
Bug | a failure or a flaw in the software program |
Failure | An event in which a component or system does not perform a required function within specified limits |
Error / Mistake | A human action that produces an incorrect result |
Agile | A group of software development methodologies based on iterative incremental development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams |
SCRUM | An iterative incremental framework for managing projects commonly used with Agile software development |
atomic condition | A condition that does not contain logical operators |
test pyramid | A graphical model representing the relationship of the amount of testing per level, with more at the bottom than at the top |
equivalence partition | A subset of the value domain of a variable within a component or system in which all values are expected to be treated the same based on the specification |
- More terms
HERE
π
π―
Theres many testing types and techniques, each one is suited for a different need in the SDLC, most of them can be automated(will be discussed later in this repo) and some are are avalable only when using third-party tools and scripting language.
Here are testing types and techniques a tester must understand and apply when scenario require:
Test name | Used for | Learn more |
---|---|---|
Unit testing |
a software testing method by which individual units of source code being tested | Unit testing |
Component testing |
done after unit testing, testing component without integrating with other components e.g. modules, classes, objects, and programs | Component testing |
Integration testing |
Testing group of units that suppose to work together and being connected as one unit of action | Integration testing |
System testing |
a complete integrated system test to evaluate the system's compliance with its specified requirements | System testing |
Acceptance testing |
a test conducted to determine if the requirements of a specification or contract are met | Acceptance testing |
Test name | Used for |
---|---|
End to end testing | AKA E2E testing, A type of testing in which business processes are tested from start to finish under production-like circumstances |
API testing | Testing performed by submitting requests to the test object using its application programming interface |
Alpha testing | A type of acceptance testing performed in the developer's test environment by roles outside the development organization |
Beta testing | A type of acceptance testing performed at an external site to the developer's test environment by roles outside the development organization |
Production acceptance testing | A type of acceptance testing performed to determine if operations and/or systems administration staff can accept a system. |
Smoke / Confidence test | A test suite that covers the main functionality of a component or system to determine whether it works properly before planned testing begins |
Sanity/ Check test | a basic test to quickly evaluate whether a claim or the result of a calculation can possibly be true |
Regression testing | A type of change-related testing to detect whether defects have been introduced or uncovered in unchanged areas of the software |
regression-averse test strategy | A test strategy whereby the test team applies various techniques to manage the risk of regression such as functional and/or non-functional regression test automation at one or more levels |
back-to-back testing | Testing to compare two or more variants of a test item or a simulation model of the same test item by executing the same test cases on all variants and comparing the results |
UI/ GUI testing | Testing performed by interacting with the software under test via the graphical user interface |
Black box test technique | A test technique based on an analysis of the specification of a component or system, tester does not care about the internal code, but the expected output by the given input |
Grey box testing | a combination of white-box testing and black-box testing, The aim of this testing is to search for the defects if any due to improper structure or improper usage of applications |
White/ clear box testing | The opposit of Black box, The tester chooses inputs to exercise paths through the code and determine the expected outputs |
π©π»βπ§
π©π»βπ»
π¦
π₯οΈ
wwww
π§°
πΎ
Library name | Used for |
---|---|
Chai | BDD / TDD assertion library |
Mocha | Testing framework allowing Async |
Jest.js | Unit testing |
jasmine.js | Unit testing |
K6 | Stress testing |
Cypress | E2E testing (next big thing) |
playwright | end-to-end testing for modern web apps |
Karma | testing JavaScript code in real browsers |
Phantom | Scriptable Headless Browser (currently this project is suspended) |
cucumber | tool for running automated tests written in plain language |
nightwatch.js | End-to-end testing, the easy way. |
webdriver.io | browser and mobile automation test framework for Node.js |
CodeceptJS | End 2 End Testing |
TestCafe | No WebDriver required. No manual timeouts needed. Cross-browser E2E testing |
Library name | Used for |
---|---|
TestNG | designed to cover all categories of tests: unit, functional, end-to-end, integration, etc... |
JUnit | TDD and unit testing |
Spock | testing and specification framework for Java and Groovy applications |
Karate | open-source general-purpose test-automation framework |
Scalatest | open-source testing toolkit for Scala and Java programmers |
Library name | Used for |
---|---|
Robot framework | used for test automation and robotic process automation (RPA) |
PyTest | Functional and API testing |
Unittest | automated unit test framework |
nose | Unit testing |
π οΈ
Tool name | Used for |
---|---|
Leonardo |
Developed By outbrain dev team, This tool allow you as a dev or tester to test your app behaviour under empty inputs, errors coming from the server and situations when the server not responding, Also, unique option is to check "Slow" server responds behaviour |
POSTMAN |
de-facto most used API testing software in the industry nowdays |
RANOREX |
A great *paid GUI tool for automation testing, can build sophisticated tests for desktop, web, and mobile apps |
BrowserStack |
web and mobile testing platform |
Percy |
Percy detects, groups, and highlights relevant visual changes across your web applications and components. |
Tool name | Used for |
---|---|
GTmetrix |
A recommended tool for Advanced analysis on your webstie performance in Desktop & Mobile, ability to monitor and track and export reports and many more features |
π€ π§
Logo | Link | What is About |
---|---|---|
Jira |
a proprietary issue tracking product developed by Atlassian that allows bug tracking and agile project management | |
YouTrack |
Developed by Jet Brains, paid* tool, concidered to be the most professional a team can get |
|
testlink |
Well known open source test management tool | |
Testrail |
currently marked as the top tool *paid for team collaboration in the agile era |
|
PractiTest |
High quality test management tool with fantastic Documentation and multi integration capabilities | |
ReportPortal.io |
AI-powered Test Automation Dashboard open source |
π
Logo | Link | What is About |
---|---|---|
SATISFICE |
by James and Lenore Bach, Awesome testing practical learning material | |
Tmap |
Well known publisher of books and learning material in the QA and DevOps domain | |
Guru99 |
This website in the ultimate learning resource for software tester, with a lot of rich content and nice testing simulatores for the beginner QA tester |
-
Assets
-header image : Technology photo created by freepik - www.freepik.com