0% found this document useful (0 votes)
8 views

CTPS - Unit 4 Notes

The document discusses the significance of automated testing in software development, highlighting its advantages such as improved reliability, increased test coverage, and reduced human intervention compared to manual testing. It outlines various types of software testing, including black box, white box, and API testing, as well as the automation testing process and criteria for selecting automation tools. Additionally, it addresses the benefits and drawbacks of automation testing, emphasizing the importance of API testing for ensuring system functionality and security.

Uploaded by

rushisulakhe12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

CTPS - Unit 4 Notes

The document discusses the significance of automated testing in software development, highlighting its advantages such as improved reliability, increased test coverage, and reduced human intervention compared to manual testing. It outlines various types of software testing, including black box, white box, and API testing, as well as the automation testing process and criteria for selecting automation tools. Additionally, it addresses the benefits and drawbacks of automation testing, emphasizing the importance of API testing for ensuring system functionality and security.

Uploaded by

rushisulakhe12
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Software Testing and Development

Automated Testing is a technique where the Tester writes scripts on their own and uses
suitable Software or Automation Tool to test the software.
It is an Automation Process of a Manual Process. It allows for executing repetitive tasks without
the intervention of a Manual Tester.
• It is used to automate testing tasks that are difficult to perform manually.
• Automation tests can be run at any time of the day as they use scripted sequences
to examine the software.
• Automation tests can also enter test data compare the expected result with the actual
result and generate detailed test reports.
• The goal of automation tests is to reduce the number of test cases to be executed
manually but not to eliminate manual testing.
• It is possible to record the test suit and replay it when required.

Why Transform from Manual to Automated Testing?


Below are some of the reasons for using automation testing:
• Quality Assurance: Manual testing is a tedious task that can be boring and at the
same time error prone. Thus, using automation testing improves the quality of the
software under test as more test coverage can be achieved.
• Error or Bug-free Software: Automation testing is more efficient for detecting bugs
in comparison to manual testing.
• No Human Intervention: Manual testing requires huge manpower in comparison to
automation testing which requires no human intervention, and the test cases can be
executed unattended.
• Increased test coverage: Automation testing ensures more test coverage in
comparison to manual testing where it is not possible to achieve 100% test coverage.
• Testing can be done frequently: Automation testing means that the testing can be
done frequently thus improving the overall quality of the software under test.

Difference Between Manual Testing vs Automated Testing


Below are some of the differences between manual testing and automated testing:

Parameters Manual Testing Automated Testing

Manual testing is not Since it is performed by


accurate at all times due to third-party tools and/or
Reliability
human error, thus it is less scripts, therefore it is more
reliable. reliable.

Heavy investment in human Investment in tools rather


Investment
resources. than human resources.
Parameters Manual Testing Automated Testing

Manual testing is time- Automation testing is time-


consuming due to human saving as due to the use of
Time efficiency intervention where test the tools the execution is
cases are generated faster in comparison to
manually. manual testing.

There is no need to have It is important to have


Programming knowledge programming knowledge to programming knowledge to
write the test cases. write test cases.

There is a possibility that the


test cases executed the first When there are changes in
time will not be able to catch the code, regression testing
Regression testing
the regression bugs due to is done to catch the bugs
the frequently changing due to changes in the code.
requirements.

Different Types of Software Testing:


Different Types of Software Testing Techniques
Software testing techniques can be majorly classified into two categories:
1. Black Box Testing: Black box technique of testing in which the tester doesn’t have access to
the source code of the software and is conducted at the software interface without any concern
with the internal logical structure of the software known as black-box testing.
2. White-Box Testing: White box technique of testing in which the tester is aware of the internal
workings of the product, has access to its source code, and is conducted by making sure that
all internal operations are performed according to the specifications is known as white box
testing.
3. Grey Box Testing: Grey Box technique is testing in which the testers should have knowledge
of implementation, however, they need not be experts.

S No. Black Box Testing White Box Testing

Internal workings of an application Knowledge of the internal workings


1
are not required. is a must.

Also known as closed box/data- Also known as clear box/structural


2
driven testing. testing.

Normally done by testers and


3 End users, testers, and developers.
developers.

This can only be done by a trial-and- Data domains and internal


4
error method. boundaries can be better tested.

Automation Testing Types


Below are the different types of automation testing:
• Unit testing: Unit testing is a phase in software testing to test the smallest piece of
code known as a unit that can be logically isolated from the code. It is carried out
during the development of the application.
• Integration testing: component: Integration testing is a phase in software testing
in which individual software components are combined and tested as a group. It is
carried out to check the compatibility of the component with the specified functional
requirements.
• Smoke testing: Smoke testing is a type of software testing that determines whether
the built software is stable or not. It is the preliminary check of the software before its
release in the market.
• Performance testing: Performance testing is a type of software testing that is
carried out to determine how the system performs in terms of stability and
responsiveness under a particular load.
• Regression testing: Regression testing is a type of software testing that confirms
that previously developed software still works fine after the change and that the
change has not adversely affected existing features.
• Security testing: Security testing is a type of software testing that uncovers the
risks, and vulnerabilities in the security mechanism of the software application. It
helps an organization to identify the loopholes in the security mechanism and take
corrective measures to rectify the security gaps.
• Acceptance testing: Acceptance testing is the last phase of software testing that is
performed after the system testing. It helps to determine to what degree the
application meets end users’ approval.
• API testing: API testing is a type of software testing that validates the Application
Programming Interface(API) and checks the functionality, security, and reliability of
the programming interface.
• UI Testing: UI testing is a type of software testing that helps testers ensure that all
the fields, buttons, and other items on the screen function as desired.

Automation Testing Process


1. Test Tool Selection: There will be some criteria for the Selection of the tool. The
majority of the criteria include: Do we have skilled resources to allocate for
automation tasks, budget constraints, and Do the tool satisfies our needs?
2. Define Scope of Automation: This includes a few basic points such as the
Framework should support Automation Scripts, Less Maintenance must be there,
High Return on Investment, not many complex Test Cases
3. Planning, Design, and Development: For this, we need to Install frameworks or
libraries, and start designing and developing the test cases such as NUnit, JUnit,
QUnit, or required Software Automation Tools
4. Test Execution: Final Execution of test cases will take place in this phase, and it
depends on Language to Language for .NET, we’ll be using NUnit, for Java, we’ll be
using JUnit, for JavaScript, we’ll be using QUnit or Jasmine, etc.
5. Maintenance: Creation of Reports generated after Tests and that should be
documented to refer to that in the future for the next iterations.

Criteria to Select Automation Tool


Following is some of the criteria for selecting the automation tool:
• Ease of use: Some tools have a steep learning curve; they may require users to
learn a completely new scripting language to create test cases and some may require
users to maintain a costly and large test infrastructure to run the test cases.
• Support for multiple browsers: Cross-browser testing is vital for acceptance
testing. Users must check how easy it is to run the tests on different browsers that
the application supports.
• Flexibility: No single tool framework can support all types of testing, so it is
advisable to carefully observe what all tool offers and then decide.
• Ease of analysis: Not all tools provide the same sort of analysis. Some tools have
a nice dashboard feature that shows all the statistics of the test like which test failed
and which test passed. On the other hand, there can be some tools that will first
request users to generate and download the test analysis report thus, not very user-
friendly. It depends entirely on the tester, project requirement, and budget to decide
which tool to use.
• Cost of tool: Some tools are free, and some are commercial tools but many other
factors need to be considered before deciding whether to use free or paid tools. If a
tool takes a lot of time to develop test cases and it is a business-critical process that
is at stake than it is better to use a paid tool that can generate test cases easily and
at a faster rate.
• Availability of support: Free tools mostly provide community support on the other
hand commercial tools provide customer support, and training material like tutorials,
videos, etc. Thus, it is very important to keep in mind the complexity of the tests
before selecting the appropriate tool.

Popular Automation Tools


• Selenium: Selenium is an automated testing tool that is used for Regression testing
and provides a playback and recording facility. It can be used with frameworks like
JUnit and Test NG. It provides a single interface and lets users write test cases in
languages like Ruby, Java, Python, etc.
• QTP: Quick Test Professional (QTP) is an automated functional testing tool to test
both web and desktop applications. It is based on the VB scripting language and it
provides functional and regression test automation for software applications.
• Sikuli: It is a GUI-based test automation tool that is used for interacting with
elements of web pages. It is used to search and automate graphical user interfaces
using screenshots.
• Appium: Apium is an open-source test automation framework that allows QAs to
conduct automated app testing on different platforms like iOS, Android, and Windows
SDK.
• Jmeter: Apache JMeter is an open-source Java application that is used to load test
the functional behavior of the application and measure the performance.

Advantages of Automation Testing


• Simplifies Test Case Execution: Automation testing can be left virtually
unattended and thus it allows monitoring of the results at the end of the process.
Thus, simplifying the overall test execution and increasing the efficiency of the
application.
• Improves Reliability of Tests: Automation testing ensures that there is equal
focus on all the areas of the testing, thus ensuring the best quality end product.
• Increases amount of test coverage: Using automation testing, more test cases
can be created and executed for the application under test. Thus, resulting in higher
test coverage and the detection of more bugs. This allows for the testing of more
complex applications and more features can be tested.
• Minimizing Human Interaction: In automation testing, everything is automated
from test case creation to execution thus there are no changes for human error due
to neglect. This reduces the necessity for fixing glitches in the post-release phase.
• Saves Time and Money: The initial investment for automation testing is on the
higher side but it is cost-efficient and time-efficient in the long run. This is due to the
reduction in the amount of time required for test case creation and execution which
contributes to the high quality of work.
• Earlier detection of defects: Automation testing documents the defects, thus
making it easier for the development team to fix the defect and give a faster output.
The earlier the defect is identified, the easier and more cost-efficient it is to fix the
defects.

Disadvantages of Automation Testing


• High initial cost: Automation testing in the initial phases requires a lot of time and
money investment. It requires a lot of effort for selecting the tool and designing
customized software.
• 100% test automation is not possible: Generally, the effort is to automate all the
test cases but in practical real situations not all test cases can be automated some
test cases require human intervention for careful observation. There is always a
human factor, i.e., it can’t test everything like humans (design, usability, etc.).
• Not possible to automate all testing types: It is not possible to automate tests
that verify the user-friendliness of the system. Similarly, if we talk about the graphics
or sound files, even their testing cannot be automated as automated tests typically
use textual descriptions to verify the output.
• Programming knowledge is required: Every automation testing tool uses any one
of the programming languages to write test scripts. Thus, it is mandatory to have
programming knowledge for automation testing.
• False positives and negatives: Automation tests may sometimes fail and reflect
that there is some issue in the system but there is no issue present and, in some
cases, it may generate false negatives if tests are designed to verify that some
functionality exists and not to verify that it works as expected.

API Testing – Software testing


• API testing, or Application Programming Interface (API) testing, is a type of software
testing that focuses on the testing of individual API methods and the interactions between
different APIs.
• This type of testing is typically performed at the integration level, after unit testing is
completed, and before user interface testing begins.
• It is used to validate that the API behaves correctly and that it meets the requirements of
the system.
API testing can be performed manually or using automated testing tools. Some common
tasks that are performed during API testing include:
1. Testing the functionality of the API to ensure it behaves as expected
2. Verifying that the API returns the correct response for different input values Checking for
error handling and validation of input Testing for security vulnerabilities.
3. Checking for performance and scalability of the API
4. API testing is important because it ensures that the different components of a system
can communicate with each other correctly and that the system can handle a large volume
of requests.

It is also used to ensure that the API is compatible with different platforms and operating
systems and can be integrated with other systems and applications.

• As we know API stands for Application Programming Interface which acts as an


intermediate of communication between two applications.
• Due to this intermediary role of API (Application Programming Interface) two applications
talk to each other and perform the required actions efficiently.
• API contains a set of rules and guidelines based on which the applications are developed.
• So in simple we can say an API acts as an interface between two software applications
so that two software applications can communicate with each other.
• API (Application Programming Interface) testing is a type of software testing that focuses
on the functionality, reliability, and performance of application programming interfaces
(APIs).
• APIs act as a bridge between different software systems, allowing them to communicate
and exchange data with each other.

API testing is important because it helps ensure that the different systems that make up
an application are working together correctly, and that the data being exchanged is accurate and
secure.
It is also important because it helps identify and fix issues before the application is
deployed to production.

API testing typically includes the following steps:


• Reviewing the API documentation to understand the functionality and expected inputs
and outputs.
• Writing test cases that exercise the different functionality of the API.
• Executing the test cases and comparing the expected results with the actual results
• Analyzing the results and identifying any issues that need to be fixed’

There are several types of API testing:


• Functional testing: Testing the functionality of the API to ensure it behaves as
expected.
• Security testing: Testing the security of the API to ensure it is protected against
common vulnerabilities.
• Performance testing: Testing the performance of the API to ensure it can handle the
expected load.
• Interoperability testing: Testing the compatibility of the API with other systems.
• Usability testing: Testing the usability of the API for developers.
• Tools such as Postman, SoapUI, and Run scope can be used to automate and
simplify the process of API testing.

Types of API testing


When a system has a collection of APIs, these need to be tested to know that the system is
working perfectly or not. Mostly we can say that API testing confirms system’s performance,
reliability, security and functionality.

Below list represents some of the tools which are used for API Testing:
1. Postman 2. Katalon Studio 3. Parasoft
4. Soap UI 5. REST assured. 6. Tricentis Tosca
7. Ping API 8. Assertible

GUI testing is different from the API testing as GUI testing is present at Presentation layer where
the API testing is present at Business layer. If we take an example of a typical app then API is
the middle layer in between UI layer and Data base layer and due to this API communication and
data exchange between the applications occur. The below figure represents the layer at which
API testing is performed:

Layers of API Testing


API testing Types:
There are multiple types of testing which are most often used as a form of API testing
which means during multiple types of testing simultaneously API can be tested. So the below list
represents the types of API testing i.e.
1. Unit Testing
2. Integration Testing
3. End-to-End Testing
4. Performance Testing
5. Functional testing
6. Security Testing
7. Load testing
8. Penetration testing
9. Reliability testing
10. Fuzz testing

What exactly we check during API testing:


• Data accuracy.
• Response time.
• Duplicate or missing functionality.
• Authorization checks.
• Multithreaded issues.
• Security and performance issues.
• Error codes if API returns.
• Reliability issues.

Benefits of API Testing:


Like we get a lot of advantages by using APIs in application, similarly by performing API testing
we achieve a lot of things towards the success of the developed application. Below are some
benefits i.e.
• Earlier validation of correctness in response and data.
• Earlier test maintenance.
• Better speed and coverage of testing.
• GUI independent testing.
• Reduced testing cost.
• Language independent test.
• Helpful in testing core functionality.
• API testing has several benefits that make it an important aspect of software testing:
• Improved functionality: API testing helps ensure that the functionality of the API is
working as expected and that the data being exchanged is accurate and complete.
• Increased security: API testing helps identify and fix security vulnerabilities such as
SQL injection and cross-site scripting. This helps ensure that the API is protected
against common threats and that sensitive data is secure.
• Improved performance: API testing helps identify and fix performance bottlenecks,
such as slow response times or high error rates. This helps ensure that the API can
handle the expected load and that users have a positive experience when using it.
• Better integration: API testing helps ensure that the different systems that make up
an application are working together correctly, and that the data being exchanged is
accurate and secure.
• Reduced risk: By identifying and fixing issues before the application is deployed to
production, API testing helps reduce the risk of system failure or poor performance in
production.
• Cost-effective: API testing is more cost-effective than fixing problems that occur in
production. It is much cheaper to identify and fix issues during the testing phase than
after deployment.
• Improved developer experience: By making sure that the API is easy to use, well-
documented, and provides useful error messages, API testing helps improve the
developer experience and encourage adoption.
• Greater flexibility: API testing allows teams to test the application without a user
interface, which can be useful when testing microservices or when the user interface
is not yet developed.

Disadvantages of API Testing:


API testing can have some disadvantages, including:
• Complexity: API testing can be complex, especially when testing multiple APIs or
when testing APIs that are integrated with other systems.
• Limited Visibility: Since API testing is performed at the integration level, it can be
difficult to see how the API is interacting with other components of the system. This
can make it difficult to identify and troubleshoot issues.
• Security: APIs can introduce security vulnerabilities if they are not properly tested and
secured. This can be a significant concern for organizations that handle sensitive data.
• Difficulty in testing non-functional requirements: Non-functional requirements such as
performance, scalability and security are difficult to test with functional testing.
• Time consuming: The time required to develop and execute test scripts for APIs can
be longer than other types of testing.
• Limited documentation: Limited or poor documentation of the API can make it difficult
for testers to understand how the API should behave.
• Limited test coverage: It is difficult to test all possible scenarios and edge cases with
API testing.
• Cost: Automated API testing tools can be expensive and require a significant
investment.

Types of Bugs that may occur in API Testing:


• Performance Issues – API response Time can be very high, and they may have
latency.
• Response data may not structure correctly (JSON or XML)
• Security Issues
• Incorrect handling of valid argument values
• Improper errors/warning to caller
• Missing or Duplicate Functionality
• Reliability Issues: Difficulty in connecting and getting a response from API

Integration testing

• Integration testing is the process of testing the interface between two software units or
modules.
• It focuses on determining the correctness of the interface.
• The purpose of integration testing is to expose faults in the interaction between
integrated units.
• Once all the modules have been unit-tested, integration testing is performed.
• Integration testing is a software testing technique that focuses on verifying the
interactions and data exchange between different components or modules of a software
application.
• The goal of integration testing is to identify any problems or bugs that arise when
different components are combined and interact with each other.
• Integration testing is typically performed after unit testing and before system testing.
• It helps to identify and resolve integration issues early in the development cycle,
reducing the risk of more severe and costly problems later.
• Integration testing can be done by picking module by module.
• Exposing the defects is the major focus of the integration testing and the time of
interaction between the integrated units.

Integration test approaches – There are four types of integration testing approaches. Those
approaches are the following:
1. Big-Bang Integration Testing –
• It is the simplest integration testing approach, where all the modules are combined,
and the functionality is verified after the completion of individual module testing. In
simple words, all the modules of the system are simply put together and tested.
• This approach is practicable only for very small systems. If an error is found during
the integration testing, it is very difficult to localize the error as the error may
potentially belong to any of the modules being integrated.
• So, debugging errors reported during Big Bang integration testing is very expensive
to fix.
• This approach is typically used when the software components have a low degree
of interdependence or when there are constraints in the development environment
that prevent testing individual components.
• The goal of big-bang integration testing is to verify the overall functionality of the
system and to identify any integration problems that arise when the components are
combined.
Advantages:
1. It is convenient for small systems.
2. Simple and straightforward approach.
3. Can be completed quickly.
4. Does not require a lot of planning or coordination.
5. May be suitable for small systems or projects with a low degree of interdependence
between components.
Disadvantages:
1. There will be quite a lot of delay because you would have to wait for all the modules
to be integrated.
2. High-risk critical modules are not isolated and tested on priority since all modules
are tested at once.
3. Not Good for long projects.
4. High risk of integration problems that are difficult to identify and diagnose.
5. This can result in long and complex debugging and troubleshooting efforts.
6. This can lead to system downtime and increased development costs.
7. May not provide enough visibility into the interactions and data exchange between
components.
8. This can result in a lack of confidence in the system’s stability and reliability.
9. This can lead to decreased efficiency and productivity.
10. This may result in a lack of confidence in the development team.
11. This can lead to system failure and decreased user satisfaction.

2. Bottom-Up Integration Testing –


• In bottom-up testing, each module at lower levels are tested with higher modules until
all modules are tested.
• The primary purpose of this integration testing is that each subsystem tests the
interfaces among various modules making up the subsystem.
• This integration testing uses test drivers to drive and pass appropriate data to the
lower-level modules.
Advantages:
• In bottom-up testing, no stubs are required.
• A principal advantage of this integration testing is that several disjoint subsystems
can be tested simultaneously.
• It is easy to create the test conditions.
• Best for applications that use bottom-up design approach.
• It is Easy to observe the test results.
Disadvantages:
• Driver modules must be produced.
• In this testing, complexity occurs when the system is made up of many small
subsystems.
• As Far modules have been created, there is no working model that can be
represented.
3. Top-Down Integration Testing –
• Top-down integration testing technique is used in order to simulate the behavior of the
lower-level modules that are not yet integrated.
• In this integration testing, testing takes place from top to bottom.
• First, high-level modules are tested and then low-level modules and finally integrating
the low-level modules to a high level to ensure the system is working as intended.
Advantages:
• Separately debugged module.
• Few or no drivers needed.
• It is more stable and accurate at the aggregate level.
• Easier isolation of interface errors.
• In this, design defects can be found in the early stages.
Disadvantages:
• Needs many Stubs.
• Modules at lower level are tested inadequately.
• It is difficult to observe the test output.
• It is difficult to stub design.

4. Mixed Integration Testing –


• A mixed integration testing is also called sandwiched integration testing.
• A mixed integration testing follows a combination of top down and bottom-up testing
approaches.
• In the top-down approach, testing can start only after the top-level module have been
coded and unit tested. In bottom-up approach, testing can start only after the bottom
level modules are ready.
• This sandwich or mixed approach overcomes this shortcoming of the top-down and
bottom-up approaches. It is also called the hybrid integration testing.
Advantages:
• Mixed approach is useful for very large projects having several sub projects.
• This Sandwich approach overcomes the shortcoming of the top-down and bottom-
up approaches.
• Parallel tests can be performed in top and bottom layer tests.
Disadvantages:
• For mixed integration testing, it requires very high cost because one part has a Top-
down approach while another part has a bottom-up approach.
• This integration testing cannot be used for smaller systems with huge
interdependence between different modules.

Applications:
1. Identify the components: Identify the individual components of your application
that need to be integrated. This could include the frontend, backend, database, and
any third-party services.
2. Create a test plan: Develop a test plan that outlines the scenarios and test cases
that need to be executed to validate the integration points between the different
components. This could include testing data flow, communication protocols, and error
handling.
3. Set up test environment: Set up a test environment that mirrors the production
environment as closely as possible. This will help ensure that the results of your
integration tests are accurate and reliable.
4. Execute the tests: Execute the tests outlined in your test plan, starting with the
most critical and complex scenarios. Be sure to log any defects or issues that you
encounter during testing.
5. Analyze the results: Analyze the results of your integration tests to identify any
defects or issues that need to be addressed. This may involve working with
developers to fix bugs or make changes to the application architecture.
6. Repeat testing: Once defects have been fixed, repeat the integration testing
process to ensure that the changes have been successful, and that the application
still works as expected.

Regression Testing
• It is the process of testing the modified parts of the code and the parts that might get
affected due to the modifications to ensure that no new errors have been introduced in
the software after the modifications have been made.
• Regression means the return of something and in the software field, it refers to the
return of a bug.
When to do regression testing?
• When a new functionality is added to the system and the code has been modified to
absorb and integrate that functionality with the existing code.
• When some defect has been identified in the software and the code is debugged to
fix it.
• When the code is modified to optimize it’s working.

Process of Regression testing:


• Firstly, whenever we make some changes to the source code for any reason like
adding new functionality, optimization, etc., then our program, when executed fails in the
previously designed test suite for obvious reasons.
• After the failure, the source code is debugged to identify the bugs in the program.
• After identification of the bugs in the source code, appropriate modifications are made.
• Then appropriate test cases are selected from the already existing test suite which
covers all the modified and affected parts of the source code.
• We can add new test cases if required. Testing end, regression testing is performed
using the selected test cases.
Techniques for the selection of Test cases for Regression Testing:
• Select all test cases: In this technique, all the test cases are selected from the
already existing test suite. It is the simplest and safest technique but not very efficient.
• Select test cases randomly: In this technique, test cases are selected randomly
from the existing test-suite, but it is only useful if all the test cases are equally good
in their fault detection capability, which is very rare. Hence, it is not used in most
cases.
• Select modification traversing test cases: In this technique, only those test
cases are selected which cover and test the modified portions of the source code the
parts which are affected by these modifications.
• Select higher priority test cases: In this technique, priority codes are assigned to
each test case of the test suite based upon their bug detection capability, customer
requirements, etc. After assigning the priority codes, test cases with the highest
priorities are selected for the process of regression testing. The test case with the
highest priority has the highest rank. For example, test case with priority code 2 is
less important than test case with priority code 1.
Tools for regression testing:
Most commonly used tools for regression testing are:
• Selenium
• WATIR (Web Application Testing In Ruby)
• QTP (Quick Test Professional)
• RFT (Rational Functional Tester)
• WinRunner
• Silktest
Advantages of Regression Testing:
• It ensures that no new bugs have been introduced after adding new functionalities
to the system.
• As most of the test cases used in Regression Testing are selected from the existing
test suite, and we already know their expected outputs. Hence, it can be easily
automated by automated tools.
• It helps to maintain the quality of the source code.
Disadvantages of Regression Testing:
• It can be time and resource consuming if automated tools are not used.
• It is required even after very small changes in the code.

Smoke Testing

• Smoke Testing is a software testing method that determines whether the employed
build is stable or not.
• It is used to quickly identify and fix any major issues with the software before more
detailed testing is performed.
• The goal of smoke testing is to determine whether the build is stable enough to
proceed with further testing.
• It acts as confirmation of whether the quality assurance team can proceed with further
testing.
• Smoke tests are a minimum set of tests run on each build.
• Smoke testing is a process where the software build is deployed to a quality assurance
environment and is verified to ensure the stability of the application.
• Smoke Testing is also known as Confidence Testing or Build Verification Testing.

In other words, we verify whether the important features are working and there are no
showstoppers in the build that are under testing. It is a mini and quick regression test of major
functionality.
Smoke testing shows that the product is ready for testing. This helps in determining if
the build is flawed to make any further testing a waste of time and resources.
Smoke Testing
Characteristics of Smoke Testing:

The following are the characteristics of the smoke testing:


1. Level of Testing: Without delving into specific functionality, the testing procedure is
superficial and broad-based, covering only the most important features.
2. Automation: Automated smoke tests are a common way to confirm fundamental
system functionality quickly and effectively.
3. Frequency of execution: Usually, smoke testing is done following the release of a
new build or following significant code modifications. To identify major issues early
on, it can be run either daily or per build.
4. Time Management: The process of determining the build’s stability is usually swift,
requiring little time.
5. Environment: Usually, smoke tests are carried out in a controlled setting that is
quite similar to the production setting.

Smoke Testing is usually carried out by quality assurance engineers.


Goal of Smoke Testing:
The aim of Smoke Testing is:
1. Stop Wasting Resources: Refrain from wasting resources on extensive testing if
the core functions aren’t working properly.
2. Time Management: Save time by recognizing show-stopping concerns early on, so
that development teams may rapidly handle important issues.
3. Making Objective Decisions: Establish a transparent and impartial framework for
determining whether a software build is ready for more, in-depth testing or if it has to
be fixed right away.
4. Continuous Integration: Make sure that before every new build is integrated into
the bigger codebase, it satisfies basic quality criteria in order to support the
continuous integration approach.
5. Communication: Give quick feedback on the stability of the build to the
development and testing teams to help them communicate effectively.

Types of Smoke Testing:


There are three types of Smoke Testing:
1. Manual Testing: In this, the tester has to write, develop, modify, or update the test
cases for each built product. Either the tester has to write test scripts for existing
features or new features.
2. Automated Testing: In this, the tool will handle the testing process by itself
providing the relevant tests. It is very helpful when the project should be completed
in a limited time.
3. Hybrid Testing: As the name implies, it is the combination of both manual and
automated testing. Here, the tester has to write test cases by himself, and he can
also automate the tests using the tool. It increases the performance of the testing as
it combines both manual checking and tools.
4. Daily Smoke Testing: Daily smoke testing entails conducting smoke tests every
day, particularly for projects where the development process includes frequent builds
and continuous integration. It aids in making sure every daily build satisfies minimal
requirements for quality.
5. Acceptance Smoke Testing: This kind of smoke testing is carried out to confirm if
an application build satisfies the fundamental acceptance standards established by
clients or stakeholders. It frequently takes place prior to more thorough acceptance
testing.
6. UI Smoke Testing: The user interface components of an application are the only
focus of UI smoke testing. It checks that the fundamental user interface elements and
interactions are operating as intended.

Applying Smoke Testing at Different Levels:


It is applicable at 3 levels of testing. They are
• Acceptance Testing Level: Smoke testing verifies that the software build or
application satisfies the minimal acceptance criteria established by stakeholders or
clients during the acceptance testing stage. The main emphasis is on confirming the
essential features and functionalities that are required for the application to be
approved.
• System Testing Level: Smoke testing confirms that the integrated system operates
appropriately overall at the system testing level. It verifies the system’s overall
functionality, making sure that all the main parts and modules operate in unison.
• Integration testing Level: Smoke testing is used at the integration testing stage to
verify how integrated modules or components interact with one another. Its main goal
is to guarantee that the system’s integrated components can properly communicate
and work together.

Tools used for Smoke Testing:


• Selenium
• PhantomJS

Advantages of Smoke Testing:


1. Smoke testing is easy to perform.
2. It helps in identifying defects in the early stages.
3. It improves the quality of the system.
4. Smoke testing reduces the risk of failure.
5. Smoke testing makes progress easier to access.
6. It saves test effort and time.
7. It makes it easy to detect critical errors and helps in the correction of errors.
8. It runs quickly.
9. It minimizes integration risks.
Disadvantages of Smoke Testing:
1. Smoke Testing does not cover all the functionality in the application. Only a certain
part of the testing is done.
2. Errors may occur even after implementing all the smoke tests.
3. In the case of manual smoke testing, it takes a lot of time to execute the testing
process for larger projects.
4. It will not be implemented against negative tests or with the invalid input.
5. It usually consists of a minimum number of test cases and hence we cannot find the
other issues that happened during the testing process.
Important Points:
1. Smoke testing is a type of software testing performed early in the development
process.
2. The goal is to quickly identify and fix major issues with the software.
3. It tests the most critical functions of the application.
4. Helps to determine if the build is stable enough to proceed with further testing.
5. It is also known as Build Verification Testing or Build Acceptance Testing.

Unit Testing

• Unit testing is a type of software testing that focuses on individual units or components
of a software system.
• The purpose of unit testing is to validate that each unit of the software works as
intended and meets the requirements.
• Unit testing is typically performed by developers, and it is performed early in the
development process before the code is integrated and tested as a whole system.
• Unit tests are automated and are run each time the code is changed to ensure that new
code does not break existing functionality.
• Unit tests are designed to validate the smallest possible unit of code, such as a
function or a method, and test it in isolation from the rest of the system.
• This allows developers to quickly identify and fix any issues early in the development
process, improving the overall quality of the software and reducing the time required for
later testing.
• It is a testing method using which every independent module is tested to determine if
there is an issue by the developer himself.
• Unit Testing of the software product is carried out during the development of an
application. An individual component may be either an individual function or a procedure.

Thus, Unit Testing is defined as a type of software testing where individual components
of a software are tested.
Objective of Unit Testing:
The objective of Unit Testing is:
1. To isolate a section of code.
2. To verify the correctness of the code.
3. To test every function and procedure.
4. To fix bugs early in the development cycle and to save costs.
5. To help the developers understand the code base and enable them to make
changes quickly.
6. To help with code reuse.

Types of Unit Testing:


There are 2 types of Unit Testing: Manual, and Automated.

Workflow of Unit Testing:


Unit Testing Techniques:
There are 3 types of Unit Testing Techniques. They are.
1. Black Box Testing: This testing technique is used in covering the unit tests for
input, user interface, and output parts.
2. White Box Testing: This technique is used in testing the functional behavior of the
system by giving the input and checking the functionality output including the internal
design structure and code of the modules.
3. Gray Box Testing: This technique is used in executing the relevant test cases, test
methods, and test functions, and analyzing the code performance for the modules.

Unit Testing Tools:


Here are some commonly used Unit Testing tools:
1. Jtest
2. Junit
3. NUnit
4. EMMA
5. PHPUnit

Advantages of Unit Testing:


1. Unit Testing allows developers to learn what functionality is provided by a unit and
how to use it to gain a basic understanding of the unit API.
2. Unit testing allows the programmer to refine code and make sure the module works
properly.
3. Unit testing enables testing parts of the project without waiting for others to be
completed.
4. Early Detection of Issues: Unit testing allows developers to detect and fix issues
early in the development process before they become larger and more difficult to fix.
5. Improved Code Quality: Unit testing helps to ensure that each unit of code works as
intended and meets the requirements, improving the overall quality of the software.
6. Increased Confidence: Unit testing provides developers with confidence in their
code, as they can validate that each unit of the software is functioning as expected.
7. Faster Development: Unit testing enables developers to work faster and more
efficiently, as they can validate changes to the code without having to wait for the full
system to be tested.
8. Better Documentation: Unit testing provides clear and concise documentation of the
code and its behavior, making it easier for other developers to understand and
maintain the software.
9. Facilitation of Refactoring: Unit testing enables developers to safely make changes
to the code, as they can validate that their changes do not break existing functionality.
10. Reduced Time and Cost: Unit testing can reduce the time and cost required for later
testing, as it helps to identify and fix issues early in the development process.

Disadvantages of Unit Testing:


1. The process is time-consuming for writing the unit test cases.
2. Unit Testing will not cover all the errors in the module because there is a chance of
having errors in the modules while doing integration testing.
3. Unit Testing is not efficient for checking the errors in the UI(User Interface) part of
the module.
4. It requires more time for maintenance when the source code is changed frequently.
5. It cannot cover the non-functional testing parameters such as scalability, the
performance of the system, etc.
6. Time and Effort: Unit testing requires a significant investment of time and effort to
create and maintain the test cases, especially for complex systems.
7. Dependence on Developers: The success of unit testing depends on the
developers, who must write clear, concise, and comprehensive test cases to validate
the code.
8. Difficulty in Testing Complex Units: Unit testing can be challenging when dealing
with complex units, as it can be difficult to isolate and test individual units in isolation
from the rest of the system.
9. Difficulty in Testing Interactions: Unit testing may not be sufficient for testing
interactions between units, as it only focuses on individual units.
10. Difficulty in Testing User Interfaces: Unit testing may not be suitable for testing user
interfaces, as it typically focuses on the functionality of individual units.
11. Over-reliance on Automation: Over-reliance on automated unit tests can lead to a
false sense of security, as automated tests may not uncover all possible issues or
bugs.
12. Maintenance Overhead: Unit testing requires ongoing maintenance and updates, as
the code and test cases must be kept up-to-date with changes to the software.

System Testing

• System testing is a type of software testing that evaluates the overall functionality and
performance of a complete and fully integrated software solution.
• It tests if the system meets the specified requirements and if it is suitable for delivery to
the end-users.
• This type of testing is performed after the integration testing and before the acceptance
testing.
• System Testing is a type of software testing that is performed on a complete
integrated system to evaluate the compliance of the system with the corresponding
requirements.
• In system testing, integration testing passed components are taken as input. The goal of
integration testing is to detect any irregularity between the units that are integrated
together.
• System testing detects defects within both the integrated units and the whole system.
• The result of system testing is the observed behavior of a component or a system when
it is tested.
• System Testing is carried out on the whole system in the context of either system
requirement specifications or functional requirement specifications or in the context of
both.
• System testing tests the design and behavior of the system and also the expectations of
the customer.
• It is performed to test the system beyond the bounds mentioned in the software
requirements specification (SRS).
• System Testing is basically performed by a testing team that is independent of the
development team that helps to test the quality of the system impartial.
• It has both functional and non-functional testing. System Testing is a black-box
testing. System Testing is performed after the integration testing and before the
acceptance testing.

System Testing Process: System Testing is performed in the following steps:


• Test Environment Setup: Create a testing environment for the better-quality testing.
• Create Test Case: Generate test case for the testing process.
• Create Test Data: Generate the data that is to be tested.
• Execute Test Case: After the generation of the test case and the test data, test
cases are executed.
• Defect Reporting: Defects in the system are detected.
• Regression Testing: It is carried out to test the side effects of the testing process.
• Log Defects: Defects are fixed in this step.
• Retest: If the test is not successful then again test is performed.
Types of System Testing:
• Performance Testing: Performance Testing is a type of software testing that is
carried out to test the speed, scalability, stability and reliability of the software product
or application.
• Load Testing: Load Testing is a type of software Testing which is carried out to
determine the behavior of a system or software product under extreme load.
• Stress Testing: Stress Testing is a type of software testing performed to check the
robustness of the system under the varying loads.
• Scalability Testing: Scalability Testing is a type of software testing which is carried
out to check the performance of a software application or system in terms of its
capability to scale up or scale down the number of user request load.
Tools used for System Testing:
Here are a few common tools used for System Testing:
1. HP Quality Center/ALM
2. IBM Rational Quality Manager
3. Microsoft Test Manager
4. Selenium
5. Appium
6. LoadRunner
7. Gatling
8. JMeter
9. Apache JServ
10. SoapUI
Note: The choice of tool depends on various factors like the technology used, the size
of the project, the budget, and the testing requirements.

Advantages of System Testing:


• The testers do not require more knowledge of programming to carry out this testing.
• It will test the entire product or software so that we will easily detect the errors or
defects which cannot be identified during the unit testing and integration testing.
• The testing environment is similar to that of the real time production or business
environment.
• It checks the entire functionality of the system with different test scripts and also it
covers the technical and business requirements of clients.
• After this testing, the product will almost cover all the possible bugs or errors and
hence the development team will confidently go ahead with acceptance testing.

Here are some advantages of System Testing:


• Verifies the overall functionality of the system.
• Detects and identifies system-level problems early in the development cycle.
• Helps to validate the requirements and ensure the system meets the user needs.
• Improves system reliability and quality.
• Facilitates collaboration and communication between development and testing
teams.
• Enhances the overall performance of the system.
• Increases user confidence and reduces risks.
• Facilitates early detection and resolution of bugs and defects.
• Supports the identification of system-level dependencies and inter-module
interactions.
• Improves the system’s maintainability and scalability.

Disadvantages of System Testing:


• This testing is time consuming process than another testing techniques since it
checks the entire product or software.
• The cost for the testing will be high since it covers the testing of entire software.
• It needs a good debugging tool otherwise the hidden errors will not be found.

Here are some disadvantages of System Testing:


• Can be time-consuming and expensive.
• Requires adequate resources and infrastructure.
• Can be complex and challenging, especially for large and complex systems.
• Dependent on the quality of requirements and design documents.
• Limited visibility into the internal workings of the system.
• Can be impacted by external factors like hardware and network configurations.
• Requires proper planning, coordination, and execution.
• Can be impacted by changes made during development.
• Requires specialized skills and expertise.
• May require multiple test cycles to achieve desired results.

GUI Testing

• Graphical User Interface Testing (GUI) Testing is the process for ensuring proper
functionality of the graphical user interface (GUI) for a specific application.
• GUI testing generally evaluates a design of elements such as layout, colors and also
fonts, font sizes, labels, text boxes, text formatting, captions, buttons, lists, icons, links,
and content.
• GUI testing processes may be either manual or automatic and are often performed by
third-party companies, rather than developers or end users.

Feature of Graphical User Interface Testing (GUI):


There are some features of GUI which are given below:
• It provides a customizable test report.
• It is to run tests in parallel or distributed on a Selenium Grid with built-in Selenium
WebDriver.
• It allows you to test the functionality from a user’s perspective.
• Sometimes the internal functions of the system work correctly but the user interface
doesn’t. Then GUI testing is good to have in addition to the other types.
• It provides reliable object identification, even for web elements with dynamic IDs.

Types of Graphical User Interface Testing (GUI) Testing:


There are two types of GUI testing which are given below: Analog Recording, and Object
based recording. These are explained as follows below.
1. Analog Recording:
This is always what people associate with GUI testing tools by analog recording, the
testing tool basically captures specific mouse clicks, keyboard presses, and other
user actions and then simply stores them in a file for playback. For example, it might
record that a user left-clicked at position X = 500 pixels, Y = 400 pixels or typed the
word “Search” in a box and pressed the [ENTER] key on their keyboard.
2. Object based Recording:
In object based recording, the testing tool is able to connect programmatically to the
application being tested and “see” each of the individual user interface components
(a button, a text box, a hyperlink) as separate entities and is able to perform
operations (click, enter text) and read the state (is it enabled, what is the label text,
what is the current value) reliably regardless of where that object is on the screen.

Challenges with Graphical User Interface Testing (GUI) Testing:


There are some challenges that occur during Graphical user interface testing. These are
given below.
1. Technology Support
2. Stability of Objects
3. Instrumentation

Concurrent Activity
• Concurrent activities involve tasks that can be done at the same time.
• It refers to projects that can accommodate more than one activity to be completed at a
given point in time. In serial activities, the task commencement or completion depends on
others, while concurrent tasks can be done without depending on others.
• A concurrent activity in project management refers to overlapping or simultaneous tasks
that are independent of one another.
• It is different from using dependencies in the project schedule, and it doesn’t require team
members to focus on many things at once.
• Concurrent project management is the effective integration of all functions and processes
that are needed during the implementation of a project plan.
• It often focuses on the objective of transferring technology to market faster and more
predictably.
When are Overlapping Tasks Used in Project Management?
There are many reasons why project managers resort to this kind of scheduling.
• When detailed resource schedules are required. Especially in industries such as
engineering, construction, production, and design.
• Sometimes in the inverse of the above situation – when a high-level overview of the work
breakdown structure (WBS) is all that it necessary.
• Maybe the overlapping tasks don’t require the same amount of effort. And they can both
easily be achieved in the same time period.
• Perhaps one is a longer, ongoing task that doesn’t require constant involvement.
• Or one task has experienced a bottleneck in the process, opening up the opportunity to
schedule something else in the meantime.

How to Effectively Schedule Concurrent Tasks in Project Management


• If you want to schedule concurrent tasks, here’s a step by step guide to doing so in Ganttic.
Using Ganttic’s resource management software, you’ll be able to schedule tasks more
easily, quickly and more efficiently. And it only takes 3 steps.
1. Assign a Task to your Resource.
2. Add Another Task to the Same Resource.
• This is where you could stop. Because you’ll see that both tasks are assigned, and your
resource is aware of their schedule.
• But what if you want to prioritize tasks? Or make it clear that one doesn’t require as much
effort as the other.
• That’s where task utilization comes in.
3. Adjust the Utilization for the Task.
• Your utilization graph is a small bar chart above your resource’s assigned tasks. And it
shows the percentage that your resource is being used. Typically, for human resources,
you should aim for about 80% to avoid burnout.
• For example, here a resource’s tasks overlap, putting them at a 200% utilization.

With overlapping tasks, utilization may be over 100%.

• However, if one of those tasks requires less effort or you want to prioritize it, then you can
manually change the utilization by clicking on the task. Adjust the utilization based upon
the effort needed for each task, for example one task could be 20% while the other is at
60%. Click “save” and that’s that.
Manually adjust the resource’s utilization to get them down to 100%.

• Once you adjust the utilization, you’ll also notice that the bar chart above changes to
correspond with the update, both in color and percentage-wise. This can be seen below.
• You can also determine the actual “busy time” required to perform the task and schedule
that way. Or better yet, use a combination of the two methods.

Tips for Concurrent Task Scheduling in Project Management


• Because simultaneous work tasks won’t be disappearing anytime soon, it might be helpful
to have some tips for project managers tasked with this kind of planning.
• If you got work that overlaps remember to:

1. Get an overview of everything.


2. Collaborate with your team.
3. Be flexible.
4. Schedule interruptions
5. Track achievements and celebrate milestones.

Parallel development
Parallel development involves working on multiple projects or features simultaneously. Let’s
break it down:

1. Multiple Teams: In parallel development, multiple teams collaborate on different aspects


of a project. These teams could include component teams, feature teams, front-end, back-
end, API, and database teams, among others.
2. Parallel Releases: Organizations often work on parallel releases, where different versions
of a product are developed concurrently. Each release may cater to different user groups
or have distinct features.
3. Multiple Variants: Parallel development also encompasses creating multiple variants of
a product. These variants might serve different markets, comply with specific regulations,
or address unique customer needs.

Pros and Cons of Parallel Development

Pros:
● Simultaneous Work: Teams can work concurrently, accelerating development.
● Building on Each Other’s Work: Teams can build upon one another’s progress, leveraging
shared components and features.

Cons:

● Integration Challenges: Managing and tracking all active branches can be complex.
● Late-Stage Defects: Waiting until the end for integration often leads to late-stage defects
and quality issues.

How to Achieve Parallel Development at Scale

1. Branching and Testing: Proper branching and testing are critical. Automated branching
helps teams work independently without overwriting each other’s changes. It ensures early
and frequent integration.
2. Version Control Solution: To achieve parallel development at scale, use a robust version
control solution with advanced branching capabilities Helix Core from Perforce offers
Perforce Streams for efficient branching1.

Continuous Integration

• Continuous Integration, also known or called as CI in short.


• It is a part of the software development process generally used in DevOps practices where
users/teams can collaborate and seamlessly work together to integrate new code changes
or add new features into the existing codebase using a version control system.
• With Continuous Integration (CI) you or your team members can automate project
workflows and simplify the process of building, testing, and deployment of software to
different stages in the environment. Here environments are nothing but Staging, Dev, Test,
QA, and Prod.
• Continuous Integration (CI) will improve communication, track changes, fix bugs, and
reduce conflicts in the code.
What Continuous Integration (CI) does?
• Continuous Integration (CI) follows the fundamental practices of planning, coding, making
changes or merging, checking results, and pushing.
• To adapt CI to your project, the first thing you do is find the perfect services and DevOps
tools.
• Here are some of best continuous integration tools currently used by many organization:
• Jenkins
• CircleCI
• GitHub Actions
• Azure Pipelines
• GitLab CI/CD
• Bitbucket Pipelines
• With these CI tools, you can manage source code, versioning, build, test and release.
Here is the quick Overview of Continuous Integration Workflow:
User(s)/Team(s) >> Plan >> Code >> Merge changes to Source Branch >> Build Artifact >> Test
the Functionality >> Submit Checks and Report. (repeat the process)
Why is Continuous Integration Needed?
• Adopting Continuous Integration with help to improve code and software quality in a phase
wise manner.
• By automating the CI software developers can spend more time on tasks related to new
code additions and fixing bugs rather than focusing on infrastructure deployment.
• By adopting CI developers or teams can identify and fix bugs before they are merged into
the main codebase and released to production. This will also reduce the time it takes to
release new updates by automating the build and test process.
• With implementation of CI you or your team member can have the complete visibility and
transparency of the development process.
• Anyone who has access on the CI can identify and track the process of build and test.
With that information team users can identify bottlenecks and can find areas for
improvement.
How does Continuous Integration Work?
• Assume that you have CI Repo (Branch as Release). Whenever you or your teammates
commit any changes to the code repository and the CI service automatically fetches the
commit changes done by you or your teams and builds the artifacts and deploys them to
the environment.
Continuous Integration Benefits
Continuous Integration (CI) simplifies the process of automating the tasks. These are some
benefits that you should be aware of.

● Reduce Manual Tasks: CI helps in reducing the manual tasks involved in the software
development process. By reducing the manual activities in the projects save lot of time
and efforts.
● Code Integrations and Improvements: Help to improve code quality by automating
the testing of code changes and by providing developers with feedback on their
changes.
● Collaboration with Team members: If you are in a team working together with your
team members then this CI will help your developers team to share and integrate their
work. This will improve communication and reduce conflicts in the code.
● Visibility and Transparency: CI provides developers with visibility of code change.
This helps developers to quickly identify the changes and to fix problems asap.
● Faster Release: When you set up continuous integration with continuous deployment,
your changes will be live whenever you make changes to your code and push it to the
release branch.
Simultaneous Testing Phases

• Simultaneous Testing is a type of software testing which is basically focused on testing


software, systems and applications that use simultaneous computing.
• Like the other software testing techniques, the main purpose of simultaneous testing is to
discover the behavior and performance of the software, system and application that uses
simultaneous computing.
• Simultaneous testing is a type of testing that is performed to identify the defects in a
software, system, and application when multiple users login to the respective application.
• It helps in identifying and measuring the problems in system parameters such as response
time, throughput, deadlock occurrence or any other issues related simultaneously.
• In simultaneous testing the effect is monitored while multiple users perform the same
action at the same time. Simultaneous Testing is also called multi-user testing.

Objectives of Simultaneous Testing:


The objectives of Simultaneous testing are:

● To identify the effect of accessing the same code in application at the same time by
multi-user.
● To detect the defects in software system or application while multiple users are logged
in.
● To improve the reliability of concurrent programming.
● To improve the robustness of the concurrent programming.

Simultaneous Testing Techniques:


Following are the different techniques used for simultaneous testing:

● Single Time Test Execution: This is considered not the effective technique for
concurrent testing. Especially in non-deterministic systems this technique is ineffective
and is just like testing a non-concurrent program.
● Multi-time Test Execution: It is effective in finding the defects in non-deterministic
systems.
● Deterministic Technique: This technique is used to test the system in a special state so
that code can be executed easily. It is different from above two techniques.
● Reachability Technique: This technique is used to test synchronized combinations of
sequences for a specified input, and it is basically for non-deterministic systems.
● Structured Technique: This is a structural technique for code analysis, and this is
different from above mentioned techniques.
● Multi-user Technique: This technique is used to test the concurrent program by
checking the multiple user login serving different or same tasks simultaneously.

Advantages of Simultaneous Testing:


● It reduces the effort required to test a software system or an application.
● It helps in discovering the behavior of a program.
● It helps in improving the reliability of concurrent programs.
● It helps in improving the robustness of concurrent programs.

Disadvantages of Simultaneous Testing:


● Simultaneous Testing requires more intensive tests.
● In Simultaneous Testing methods do not return the result the values immediately which
makes testing difficult.
● In Simultaneous Testing multiple platforms are needed.

Concurrent Bug fixing

What is a Bug/Defect?
• A defect is an error or bug in an application that is created during the building or designing
of software and due to which software starts to show abnormal behaviors during its use.
• So, it is one of the important responsibilities of the tester to find as much as defect possible
to ensure the quality of the product is not affected and the end product is fulfilling all
requirements perfectly for which it has been designed and provide required services to the
end-user.
• Because as much as defects will be identified and resolved then the software will behave
perfectly as per expectation.
Fixing a bug
• Now when we have our bug spotted, reported, and reproduced we must fix it.
• That's the part when you modify your codebase to remove the unexpected behavior. That
should not be that hard after all!
• After you fixed your code and submitted your code, CI build must pass. If so, the bug is
fixed. But there's one more thing to do.
there's one more thing that most developers tend not to do: writing a postmortem.

• Some bugs are easy and do not require this step, but some bugs cost us a lot of time and
money.
• We should take extra care about them.
• Postmortem is a non-technical story of what had happened that you can show to your
management (and the one they will understand). What should be included in a
postmortem?
• Why did the bug happen? This must be a non-technical summary of all actions that lead
to this problem. And it must contain a link to the original bug report.
• What have we done to fix the bug? Again, keep it simple, do not go deep into technical
details. Just make sure that your commit is linked to this document.
• What impact it had on our product/users/clients? It needs to be calculated or intelligently
guessed.
• What was the timeline? Remember when you saved all links to the logs/monitoring/ etc?
It will be useful to build a timeline. How long we had suffered from this bug? When did it
get solved?
A short guide to fixing bugs in software.
1. Understand the problem.
2. Consider any integration/end-to-end tests.
3. Nail down where the change needs to be made.
4. Unit tests.
5. Make your changes.
6. Consider the impact.
7. Review your changes.
8. Commit and communicate.

9 Steps to Fixing Bugs in Your Code:


1. Have a bug-tracking system. Unless you track bugs, they cannot be resolved.
2. Increase product development visibility. Involve clients early and often to guarantee
product satisfaction.
3. Audit the bug status and progress stage. Keep a record of all changes to maintain the
bug trail.
4. Release planning. Manage bugs that need to be fixed in future product releases.
5. Develop a resource-management template. Monitor task ownership for every
responsible member of the QA Team.
6. Prioritize. Resolve burning issues before minor software mistakes.
7. Create an early detection culture.
8. Collect all detected bugs in a shared space. This promotes transparency and
encourages faster bug fixing.
9. Communicate changes in bug status to team members. Ensure your team is aware of
status changes to increase awareness and responsiveness.

You might also like