From 865f1d74186f3a6c87dd1a947a7e5cc1a7537575 Mon Sep 17 00:00:00 2001 From: Yas7777 Date: Wed, 29 May 2024 13:44:15 -0700 Subject: [PATCH 1/4] Added Testing Doc to repo --- Testing/readme.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Testing/readme.md diff --git a/Testing/readme.md b/Testing/readme.md new file mode 100644 index 00000000..b508c6a4 --- /dev/null +++ b/Testing/readme.md @@ -0,0 +1,65 @@ + +Testing is the process of evaluating a system or its components to ensure that it meets the specified requirements and functions as intended. Testing helps identify defects, errors, or gaps in the software and verifies that the product is reliable, efficient, and user-friendly. +Testing can be divided into functional and non-functional testing. To start with, I am going to describe functional testing: + +Functional Testing: This is a type of software testing that verifies the functionality of a software system or application. The following are the different types of functional testing methods: + +Unit Testing: +• Unit testing is a level of software testing where individual units or components of a software are tested in isolation. It is typically done by developers to ensure that each unit of the software performs as designed. +• The goal is to validate that each unit of the software works correctly and handles different inputs and edge cases as expected. +• These tests can usually be automated. +Integration Testing: +• Integration testing is a level of software testing where individual units are combined and tested as a group to verify that they work together correctly. It focuses on testing the interfaces and interactions between different modules or components of a system. +• The goal is to detect any defects or issues that arise when integrating various parts of the system. +• Integration testing is performed after unit testing and before system testing. +System Testing: +• System testing is a level of software testing where the complete and fully integrated software is tested as a whole to evaluate its compliance with the specified requirements. +• It is performed after integration testing. +• The goal is to verify that the system meets the functional and non-functional requirements, such as performance, usability, reliability, and security. +Acceptance Testing: +• Acceptance testing is a level of testing where the system is tested for acceptability by the end-users. +• It is performed after system testing and before the system is deployed to production. +• The goal is to ensure that the system meets the business requirements and is acceptable for use. +Regression Testing: +• Regression testing is performed to verify that changes or updates to the software have not adversely affected the existing functionality. +• It involves re-executing a subset of previously executed tests to ensure that the system still functions correctly after modifications. +Performance Testing: +• Performance testing is a type of testing that evaluates how the system performs under different loads and conditions. +• It measures the responsiveness, stability, and resource utilization of the system under varying workloads. +• The goal is to identify performance bottlenecks, optimize resource usage, and ensure that the system meets the desired performance criteria. +Unit testing focuses on individual components, while integration testing verifies the interactions between components. System testing evaluates the complete system, and acceptance testing ensures that the system meets business requirements. Regression testing verifies that changes have not introduced new defects, and performance testing measures the system's behavior under different loads. These practices work together to create reliable, efficient, and thoroughly tested software systems. + +Testing Strategies + +Testing strategies describe how testing is approached and conducted: + +Black Box Testing: + +Black box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. +This type of testing is typically conducted by testers who evaluate the software from an end-user perspective. +The goal is to verify that the software functions as expected based on the specified requirements and to identify any discrepancies. +Grey Box Testing: + +Grey box testing is a method of software testing that involves having some knowledge of the internal workings of the application, but not as much as white box testing. +This approach combines aspects of both black box and white box testing. +The goal is to design test cases based on a limited understanding of the internal logic and structure of the system, allowing for more thorough testing of both functionality and potential edge cases. +White Box Testing: + +White box testing involves testing the internal structures or workings of an application. +It is typically done by developers who have knowledge of the internal code and architecture. +The goal is to verify the internal operations of the system, including paths, branches, and loops. + +There are “testing development frameworks” as well to consider: +Test-Driven Development (TDD): +• TDD is a software development approach where tests are written before the actual code implementation. TDD emphasizes writing small, focused tests that drive the development of the software incrementally. +• The development process follows a cycle of writing a failing test, writing the minimal code to make the test pass, and then refactoring the code. +• It promotes better design, maintainability, and confidence in the code by ensuring that the software is thoroughly tested at every stage of development. +Behavior-Driven Development (BDD): +• BDD is an agile software development approach that combines practices from TDD and domain-driven design (DDD). +• It focuses on defining the behavior of the system from the perspective of its stakeholders. +• The scenarios serve as a basis for collaboration, communication, and automated testing. + + +Useful Links: +What is Software Testing? Definition, Types, and Tools - https://katalon.com/resources-center/blog/software-testing# +TDD vs BDD vs ATDD - https://www.browserstack.com/guide/tdd-vs-bdd-vs-atdd From b75c6189d5d8db136259391b54ed8cbfba2a4238 Mon Sep 17 00:00:00 2001 From: Yas7777 Date: Wed, 29 May 2024 13:48:11 -0700 Subject: [PATCH 2/4] Formatted changes to testing doc --- Testing/readme.md | 117 +++++++++++++++++++++++++--------------------- 1 file changed, 64 insertions(+), 53 deletions(-) diff --git a/Testing/readme.md b/Testing/readme.md index b508c6a4..144e97a0 100644 --- a/Testing/readme.md +++ b/Testing/readme.md @@ -1,65 +1,76 @@ + +Testing is the process of evaluating a system or its components to ensure that it meets the specified requirements and functions as intended. Testing helps identify defects, errors, or gaps in the software and verifies that the product is reliable, efficient, and user-friendly. -Testing is the process of evaluating a system or its components to ensure that it meets the specified requirements and functions as intended. Testing helps identify defects, errors, or gaps in the software and verifies that the product is reliable, efficient, and user-friendly. -Testing can be divided into functional and non-functional testing. To start with, I am going to describe functional testing: +Testing can be divided into functional and non-functional testing. To start with, I am going to describe functional testing: + +**Functional Testing:** This is a type of software testing that verifies the functionality of a software system or application. The following are the different types of functional testing methods: + +**Unit Testing:** +• Unit testing is a level of software testing where individual units or components of a software are tested in isolation. It is typically done by developers to ensure that each unit of the software performs as designed. +• The goal is to validate that each unit of the software works correctly and handles different inputs and edge cases as expected. +• These tests can usually be automated. -Functional Testing: This is a type of software testing that verifies the functionality of a software system or application. The following are the different types of functional testing methods: +**Integration Testing:** +• Integration testing is a level of software testing where individual units are combined and tested as a group to verify that they work together correctly. It focuses on testing the interfaces and interactions between different modules or components of a system. +• The goal is to detect any defects or issues that arise when integrating various parts of the system. +• Integration testing is performed after unit testing and before system testing. -Unit Testing: -• Unit testing is a level of software testing where individual units or components of a software are tested in isolation. It is typically done by developers to ensure that each unit of the software performs as designed. -• The goal is to validate that each unit of the software works correctly and handles different inputs and edge cases as expected. -• These tests can usually be automated. -Integration Testing: -• Integration testing is a level of software testing where individual units are combined and tested as a group to verify that they work together correctly. It focuses on testing the interfaces and interactions between different modules or components of a system. -• The goal is to detect any defects or issues that arise when integrating various parts of the system. -• Integration testing is performed after unit testing and before system testing. -System Testing: -• System testing is a level of software testing where the complete and fully integrated software is tested as a whole to evaluate its compliance with the specified requirements. -• It is performed after integration testing. -• The goal is to verify that the system meets the functional and non-functional requirements, such as performance, usability, reliability, and security. -Acceptance Testing: -• Acceptance testing is a level of testing where the system is tested for acceptability by the end-users. -• It is performed after system testing and before the system is deployed to production. -• The goal is to ensure that the system meets the business requirements and is acceptable for use. -Regression Testing: -• Regression testing is performed to verify that changes or updates to the software have not adversely affected the existing functionality. -• It involves re-executing a subset of previously executed tests to ensure that the system still functions correctly after modifications. -Performance Testing: -• Performance testing is a type of testing that evaluates how the system performs under different loads and conditions. -• It measures the responsiveness, stability, and resource utilization of the system under varying workloads. -• The goal is to identify performance bottlenecks, optimize resource usage, and ensure that the system meets the desired performance criteria. -Unit testing focuses on individual components, while integration testing verifies the interactions between components. System testing evaluates the complete system, and acceptance testing ensures that the system meets business requirements. Regression testing verifies that changes have not introduced new defects, and performance testing measures the system's behavior under different loads. These practices work together to create reliable, efficient, and thoroughly tested software systems. +**System Testing:** +• System testing is a level of software testing where the complete and fully integrated software is tested as a whole to evaluate its compliance with the specified requirements. +• It is performed after integration testing. +• The goal is to verify that the system meets the functional and non-functional requirements, such as performance, usability, reliability, and security. -Testing Strategies +**Acceptance Testing:** +• Acceptance testing is a level of testing where the system is tested for acceptability by the end-users. +• It is performed after system testing and before the system is deployed to production. +• The goal is to ensure that the system meets the business requirements and is acceptable for use. -Testing strategies describe how testing is approached and conducted: +**Regression Testing:** +• Regression testing is performed to verify that changes or updates to the software have not adversely affected the existing functionality. +• It involves re-executing a subset of previously executed tests to ensure that the system still functions correctly after modifications. -Black Box Testing: +**Performance Testing:** +• Performance testing is a type of testing that evaluates how the system performs under different loads and conditions. +• It measures the responsiveness, stability, and resource utilization of the system under varying workloads. +• The goal is to identify performance bottlenecks, optimize resource usage, and ensure that the system meets the desired performance criteria. -Black box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. -This type of testing is typically conducted by testers who evaluate the software from an end-user perspective. -The goal is to verify that the software functions as expected based on the specified requirements and to identify any discrepancies. -Grey Box Testing: +*Unit testing focuses on individual components, while integration testing verifies the interactions between components. System testing evaluates the complete system, and acceptance testing ensures that the system meets business requirements. Regression testing verifies that changes have not introduced new defects, and performance testing measures the system's behavior under different loads. These practices work together to create reliable, efficient, and thoroughly tested software systems.* + +**Testing Strategies** + +Testing strategies describe how testing is approached and conducted: + +**Black Box Testing:** + +Black box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. +This type of testing is typically conducted by testers who evaluate the software from an end-user perspective. +The goal is to verify that the software functions as expected based on the specified requirements and to identify any discrepancies. -Grey box testing is a method of software testing that involves having some knowledge of the internal workings of the application, but not as much as white box testing. -This approach combines aspects of both black box and white box testing. -The goal is to design test cases based on a limited understanding of the internal logic and structure of the system, allowing for more thorough testing of both functionality and potential edge cases. -White Box Testing: +**Grey Box Testing:** + +Grey box testing is a method of software testing that involves having some knowledge of the internal workings of the application, but not as much as white box testing. +This approach combines aspects of both black box and white box testing. +The goal is to design test cases based on a limited understanding of the internal logic and structure of the system, allowing for more thorough testing of both functionality and potential edge cases. -White box testing involves testing the internal structures or workings of an application. -It is typically done by developers who have knowledge of the internal code and architecture. -The goal is to verify the internal operations of the system, including paths, branches, and loops. +**White Box Testing:** + +White box testing involves testing the internal structures or workings of an application. +It is typically done by developers who have knowledge of the internal code and architecture. +The goal is to verify the internal operations of the system, including paths, branches, and loops. + +There are “testing development frameworks” as well to consider: -There are “testing development frameworks” as well to consider: -Test-Driven Development (TDD): -• TDD is a software development approach where tests are written before the actual code implementation. TDD emphasizes writing small, focused tests that drive the development of the software incrementally. -• The development process follows a cycle of writing a failing test, writing the minimal code to make the test pass, and then refactoring the code. -• It promotes better design, maintainability, and confidence in the code by ensuring that the software is thoroughly tested at every stage of development. -Behavior-Driven Development (BDD): -• BDD is an agile software development approach that combines practices from TDD and domain-driven design (DDD). -• It focuses on defining the behavior of the system from the perspective of its stakeholders. -• The scenarios serve as a basis for collaboration, communication, and automated testing. +**Test-Driven Development (TDD):** +• TDD is a software development approach where tests are written before the actual code implementation. TDD emphasizes writing small, focused tests that drive the development of the software incrementally. +• The development process follows a cycle of writing a failing test, writing the minimal code to make the test pass, and then refactoring the code. +• It promotes better design, maintainability, and confidence in the code by ensuring that the software is thoroughly tested at every stage of development. - -Useful Links: -What is Software Testing? Definition, Types, and Tools - https://katalon.com/resources-center/blog/software-testing# +**Behavior-Driven Development (BDD):** +• BDD is an agile software development approach that combines practices from TDD and domain-driven design (DDD). +• It focuses on defining the behavior of the system from the perspective of its stakeholders. +• The scenarios serve as a basis for collaboration, communication, and automated testing. + + +**Useful Links:** +What is Software Testing? Definition, Types, and Tools - https://katalon.com/resources-center/blog/software-testing# TDD vs BDD vs ATDD - https://www.browserstack.com/guide/tdd-vs-bdd-vs-atdd From f5d1b279679325efb249b7ffc6cc0b734b2d4dc4 Mon Sep 17 00:00:00 2001 From: Yas7777 Date: Wed, 29 May 2024 13:55:13 -0700 Subject: [PATCH 3/4] Formatted changes to testing doc v2 --- Testing/readme.md | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Testing/readme.md b/Testing/readme.md index 144e97a0..efb39a89 100644 --- a/Testing/readme.md +++ b/Testing/readme.md @@ -41,22 +41,19 @@ Testing can be divided into functional and non-functional testing. To start with Testing strategies describe how testing is approached and conducted: **Black Box Testing:** - -Black box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. -This type of testing is typically conducted by testers who evaluate the software from an end-user perspective. -The goal is to verify that the software functions as expected based on the specified requirements and to identify any discrepancies. +• Black box testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. +• This type of testing is typically conducted by testers who evaluate the software from an end-user perspective. +• The goal is to verify that the software functions as expected based on the specified requirements and to identify any discrepancies. **Grey Box Testing:** - -Grey box testing is a method of software testing that involves having some knowledge of the internal workings of the application, but not as much as white box testing. -This approach combines aspects of both black box and white box testing. -The goal is to design test cases based on a limited understanding of the internal logic and structure of the system, allowing for more thorough testing of both functionality and potential edge cases. +• Grey box testing is a method of software testing that involves having some knowledge of the internal workings of the application, but not as much as white box testing. +• This approach combines aspects of both black box and white box testing. +• The goal is to design test cases based on a limited understanding of the internal logic and structure of the system, allowing for more thorough testing of both functionality and potential edge cases. **White Box Testing:** - -White box testing involves testing the internal structures or workings of an application. -It is typically done by developers who have knowledge of the internal code and architecture. -The goal is to verify the internal operations of the system, including paths, branches, and loops. +• White box testing involves testing the internal structures or workings of an application. +• It is typically done by developers who have knowledge of the internal code and architecture. +• The goal is to verify the internal operations of the system, including paths, branches, and loops. There are “testing development frameworks” as well to consider: From 7a61299ca34d4209021d0e45101988230427f1d2 Mon Sep 17 00:00:00 2001 From: Yas7777 Date: Wed, 29 May 2024 13:59:18 -0700 Subject: [PATCH 4/4] Formatted changes to testing doc v3 --- Testing/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Testing/readme.md b/Testing/readme.md index efb39a89..9a40766d 100644 --- a/Testing/readme.md +++ b/Testing/readme.md @@ -1,5 +1,5 @@ -Testing is the process of evaluating a system or its components to ensure that it meets the specified requirements and functions as intended. Testing helps identify defects, errors, or gaps in the software and verifies that the product is reliable, efficient, and user-friendly. +**Testing is the process of evaluating a system or its components to ensure that it meets the specified requirements and functions as intended. Testing helps identify defects, errors, or gaps in the software and verifies that the product is reliable, efficient, and user-friendly.** Testing can be divided into functional and non-functional testing. To start with, I am going to describe functional testing: