Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Unit - 1

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 27

Unit -1

Myths and facts of software testing


Myth 1: Software testers are responsible for quality.
They are the ones who make mistakes and mistakes. So, they take care of the quality of the product,
they make sure the project will be successful. Not really!

Reality: Quality is everyone's job. Testers and developers should work together.

The team does not only consist of examiners, but each of its members should also consider every
detail closely. The best software development teams are like the best football teams.

They work together towards a common goal. If the quality of the final product can be discussed,
don’t blame the QA team for it, everyone should take responsibility.

Myth 2: Bug-free software all time


The legend of bug-free software is beautiful, it’s like a holy grail that everyone wants to build, but no
one can. Some teams want to create something like this. Some people brag that they did it! This is
one of the most famous legends about software testing.

Reality: This is what makes sweet dreams.


Creating error-free software is impossible. There are 15 to 50 errors per 1000 lines of industry
average code, which is far from 0. However, it is better to work in this direction. You will get better
with practice.

One of the reasons for becoming junior-mid-senior developers is that they acquire knowledge and
make fewer mistakes. However, even the most skilled programmers make mistakes, sometimes
changing software because one thing affects another.

Myth 3: It is best to automate all tests. It is more efficient


than manual testing
God, thank you for test automation! Let’s use automation, one reason why it’s so popular! Test
automation not only saves costs but also speeds up a lot of processes. If we use it in the software
development process, we will complete the project ahead of time.

Reality: Some processes are repetitive and should be automated. Manual testing
is best for research tests and it is low-cost.
There are all kinds of tests and work best in each specific case. While some projects may have room
for manual and automated testing, such a combination will bring the most value.
Manual API testing techniques will help the team find bugs that can affect the user experience, and
the team can fix them to improve the overall quality.

Myth 4: Any developer can be a tester


The current epidemic has changed the world. Many people have lost their jobs and want to learn a
new business. Some of them decided to enter IT, as it is one of the most promising industries.

The misconception that it is easy to be a software tester breaks down a business. From the outside,
everything seems simple, but once you get on the API testing facts and myths, you will see that it is
much more than just pressing a button.

Reality: Testers are mostly creative people who see the world from a certain
point of view. They come in the role of user and create different scenarios.
Examiners are among the most creative people in IT. The accurate API testing techniques have a
huge impact on the whole development process because they see what others are not doing. One
thing is not so easy to see from a different point of view.

If you test an app, you cannot follow the “ideal” user journey. They are the ones who create new
landscapes, they are fully committed to providing the highest value to the customer, and they are the
inconsistent heroes of every project.

Myth 5: Testing is very expensive


One of the most well-known API testing myths and facts is the belief that it is an additional expense.
A whole team of professionals can cost a lot, so we’ll save some money if we leave it to the

QA expert. What is saved can be used for later maintenance or marketing. The project will be a big
success.

Reality: Publishing costs more during software development than software


testing
The reality is harsh but true—most projects that reduce costs on quality assurance cost twice (or
more). The API testing tricks during the project gives the team more information, and it is widely
known that data is incredibly important.

Launching a product that is not fully tested can have a huge impact on its popularity. It can crash,
freeze. Some functions may stop working, all kinds of possible problems.

But more importantly, if you find errors after the project is finished, you will need to re-deploy the
developers to correct them.

 Testing expenditure is unnecessary: 


Often people think that too much money expenditure on testing is unworthy but the
reality is that if testing is done in a proper way then there will be a lot more savings on
the further maintenance of the software. Repeatedly software maintenance cost is a lot
more than one-time testing cost. 

 
 Testing takes a lot of time: 

It is often a talk around that testing consumes a lot of time but the fact is that testing
is not a time-consuming process. Although debugging takes more time as fixing the
bugs are complicated. 
 
 Perfect Testing is possible: 
Often a client thinks that if the software application is tested then it a perfect product
but the fact is something else. There might exist some vulnerabilities that can’t be
executed during the testing process and it creates problems once the product is
launched. 
 
 Only completely developed products are tested: 
It is always a consideration that once the software product is fully developed only
then it is tested. But the fact is that after each functionality addition or removal
software product is tested. If testing is carried out only after full development it
might create chaos and may take a lot of effort to fix it. 
 
 Tested software defects less: 
Software can’t be 100% defect less even after thousands of testing processes. Often
the clients and also developers think that if the software is tested in multiple levels
then it has zero bugs but it is only a myth while the fact is a software can’t be 100%
defectless. 
 
 Automation testing consumes less time: 
It is true that automation testing consumes less time but automation testing can’t be
performed at every stage of the software development and also automation testing is
only performed after the manual testing. There are also some testing which is only
performed only in a manual way. 
 
 Software testing is a cakewalk: 
Often people outside the testing team think that testing can be done by a person with
less experience and less knowledge. The reality is that testing is done by testing
experts that are experienced and knowledge full personnel in order to get productive
software. 
 
 Testing is all about finding bugs: 
It is true that finding bugs is one of the prominent objectives of the testing but it is
not the only objective. Besides finding bugs there are several areas that are checked
during the testing process. Software functional and non-functional requirements are
checked during the testing process. 

What is the psychology of software testing?

As testing can be a destructive activity, it is important for software testers to report defects and
failures as objectively and politely as possible to avoid hurting and upsetting other members
related to the project. So as testers, there are many ways to communicate collaboratively with
developers.

Software testing is the process of evaluating and verifying that a software product or
application does what it is supposed to do. The benefits of testing include preventing bugs,
reducing development costs and improving performance.

The Psychology of Testing:


In software testing, psychology plays an extremely important role. It is one of those factors that
stays behind the scene, but has a great impact of the end result. Categorized into three sections,
the psychology of testing enables smooth testing as well as makes the process hassle free. It is
mainly dependent on the mindset of the developers and testers, as well as the quality of
communication between them. Moreover, the psychology of testing improves mutual
understanding among team members and helps them work towards a common goal.

The three sections of psychology of testing are:

 Mindset of Developers and Testers.

 Communication in a Constructive Manner.


 Test Independence.

1. Mindset of Developers and Testers: Software development life cycle is a combination

of various activities, which are performed by different individuals using their expertise

and knowledge. It is not an unknown fact that to accomplish successful development of a

software, people with different skill and mindset are required. From coding to software

implementation, engineers with different skill set are required to perform tasks, in which

they are certified. As testing and analyzing the software is much different than

developing or programming it, it is quite clear that to develop a software with unique

features and superior quality, developers and testers of different mindset are required.

Moreover, the introduction of new development and testing techniques and

methodologies has further made this a necessary requirement.

2. Communication in a Constructive Manner: Any process, whether technical or non-

technical requires constant communication between team members to successfully

achieve their goals and aims. Communication, if done in an polite and courteous manner

can help build a strong and reliable relationship between team members and help them

avoid any misunderstanding. Similarly, during the process of testing also, the requirement

of communication in constructive manner is extremely high. As testers are responsible

for finding bugs and reporting them, it becomes vital for them to communicate it in a

courteous, polite, and suitable way to avoid hurting and disappointing someone. Finding

and reporting defects can be an achievement for the tester but is merely an inconvenience

for programmers, designers, developers, and other stakeholders of the project. As testing

can be a destructive activity, it is important for software testers to report defects and

failures as objectively and politely as possible to avoid hurting and upsetting other

members related to the project.


3. Test Independence: The importance of independent software testing is comparatively

higher than self testing or group testing, as the former helps avoid author bias and often is

more effective in finding and detecting bugs and defects. This type of testing is mainly

performed by individuals who are not related to the project directly or are from different

organization and are hired mainly to test the quality as well as the effectiveness of the

developed product. Test independence, therefore, helps developers and other stakeholders

get more accurate test results, which helps them build a better software product, with

innovative and unique features and functionality.

Types of Software Testing Models

Today’s world of technology is completely dominated by machines, and their behavior is


controlled by the software powering it. Software testing provides the solution to all our worries
about machines behaving the exact way we want them to. This article will provide in-depth
knowledge about the different Software Testing Models in the following sequence:

 Software Testing Models


o Waterfall Model

o V Model

o Agile Model

o Spiral Model

o Iterative Model

Software Testing Models


Software Testing is an integral part of the software development life cycle. There are different
models or approaches you can use in the software development process where each model has its
own advantages and disadvantages. So, You must choose a particular model depending on the
project deliverables and complexity of the project.

The different Software Testing Models are:

Waterfall Model
This is the most basic software development life cycle process which is followed broadly in the
industry. In this model, the developers follow a sequence of processes downwards towards the
ultimate goal. It is like a waterfall where there are various phases involved.

The
different phases in the waterfall model are:

 Requirement Analysis
 Analysis phase

 Software design

 Programmed implementation

 Testing

 Maintenance

Advantages

 It is easy to implement and maintain.


 The initial phase of rigorous scrutiny of requirements and systems helps in saving time later in
the developmental phase.

 The requirement of resources is minimal and testing is done after each phase has been completed.

Disadvantages

 It is not possible to alter or update requirements.


 Once you move into the next phase you cannot make changes.

 You cannot start the next phase until the previous phase is completed.

V Model
The V Model is considered superior to the waterfall model. In this model, the development and
test execution activities are carried out side by side in the downhill and uphill shape. Also,
testing starts at the unit level and spreads towards the integration of the entire system.

Advantages

 It is easy to use since testing activities like planning and test designing are done before coding.
 This model enhances the chances of success and saves time.

 Defects are mostly found at an early stage and downward flow of defects is generally avoided.

Disadvantages

 It is a rigid model.
 The software is developed during the implementation phase so early prototypes of the product are
not available.

 If there are changes in the midway, you need to update the test document.

Agile Model

In the Agile model, requirements and solutions evolve through collaboration between various
cross-functional teams. It is also known as an iterative and incremental model. The agile
software testing model focus on process adaptability and customer satisfaction by rapid delivery
of working software product and by breaking the product into small incremental builds.
 

Advantages

 It ensures customer satisfaction with rapid and continuous development of deliverables.


 The continuous interaction between the customers, developers, and testers makes it a flexible
model.

 You can develop the working software quickly and adapt to changing requirements regularly.

Disadvantages

 It is difficult to assess the effort required at the beginning of the cycle for large and complex
software development cases.
 Due to continuous interaction with the customer, the project can go off track if the customer is
not clear about the goals.

Spiral Model

This software testing model is similar to the Agile model, but with more emphasis on risk
analysis. The different phases of the spiral model include planning, risk analysis, engineering,
and evaluation. In this case, you need to gather the requirements and perform the risk assessment
at the base level and every upper spiral builds on it.

 
 

Advantages

 It is suitable for complex and large systems.


 You can add functionalities depending on the changed circumstances.

 Software is produced early in the cycle.

Disadvantages

 It is a costly model which requires highly specialized expertise in risk analysis


 It does not work well on simpler projects.

Iterative Model

The Iterative model does not need a full list of requirements before beginning the project. The
development process starts with the requirements of the functional part, which can be expanded
later. The process is repetitive and allows new versions of the product for every cycle. Every
iteration includes the development of a separate component of the system which is added to the
functional developed earlier.

 
 

Advantages

 It is easier to control the risks as high-risk tasks are completed first.


 The progress is easily measurable.

 Problems and risks defined within one iteration can be prevented in the next sprints.

Disadvantages

 Iterative model requires more resources than the waterfall model.


 The process is difficult to manage.

 The risks may not be completely determined even at the final stage of the project.

These are the different software testing models involved in the software development life cycle. I
hope you understood how each of these models is used in software testing.

What is effective software testing?


Effective Software Testing is a hands-on guide to creating bug-free software. Written for
developers, it guides you through all the different types of testing, from single units up to entire
components. You'll also learn how to engineer code that facilitates testing and how to write easy-
to-maintain test code.

What is exhaustive software testing?


Exhaustive Testing means testing the application as a whole and covering every possible
thing but it is not possible due to various reasons like: Time-consuming: Sometimes there are a
large number of input values and manually it is not possible to test the application for all input
combinations as it is time-consuming

difference between exhaustive and effective testing?


Exhaustive testing aims at complete testing i.e no scope of further bug detection should be
possible. Effective testing is a smart way of prioritizing and covering all critical test cases that
too with resource constraints

Difference between Effective Testing and Exhausting Testing:

Sr. Effective Testing Exhaustive Testing


No.

Effective testing emphasizes efficient Exhaustive or complete testing means that energy
1 techniques to test the s/w�/� so that statement in the program of every possible path
important features will be tested within the combination with every possible combination of
constrained resources. data must be executed.

2 It is a practical method It is not possible to perform complete testing

3 It is feasible because: a) It checks for s/w It is not feasible because: a) Achieving deadlines
reliability and no Bugs in the final product b) Various possible outputs c) Timing constraints
b) It tests in each phase c) It uses d) No. of possible test environments.
constrained resources

4 It is cost effective It is not cost effective

5 It is less complex and less time consuming It is complex and time consuming
Software Testing Important Terminology
1. SDLC (Software Design Life Cycle)

Software Development Life Cycle is a systematic approach for developing software. It


is a Process followed by Software Developers, and Software Testing is an integral part
of Software Development.

Phases of SDLC are Requirement Gathering, Analysis, Design, Coding, Testing,


Deployment & Maintenance.

2. Test Level

Test Level: A specific instantiation of a test process.

Software testing can be performed at different levels of the software development


process. Performing testing activities at multiple levels help in early identification of
bugs and better quality of software product.

There are mainly four Levels of Testing in software testing, Unit Testing, Integration
Testing, System Testing, and Acceptance Testing.

3. Test Type

A Test type is a group of test activities aimed at testing specific characteristics of a


software system or a part of a system.

Test Type: A Test type is a group of test activities aimed at testing specific
characteristics of a software system or a part of a system.

We have four types of Testing, Functional testing, Non-functional testing, Structural


testing, and Change-related testing.

4. Test Design Technique


A test design technique is used to select a good set of tests from all possible tests for a
given system.

5. STLC (Software Test Life Cycle)

Software Testing Life Cycle (STLC) is a sequence of different activities performed


during the software testing process.

Software testing life cycle contains various phases, which are Requirement Analysis,
Test Planning, Test Case development, Test Environment Setup, Test Execution, and
Test Cycle Closure.

6. Informal Testing

Informal Testing: Ad hoc testing performed without a documented set of objectives or


plans. Informal testing relies on the intuition and skills of the individual performing
the testing. Experienced engineers can be productive in this mode by mentally
performing test cases for the scenarios being exercised.

7. Test Planning

Test planning is a phase in STLC, the main objective of this phase is to prepare a Test
Plan document. It includes three major aspects – Scope of Deliverables, Effort
estimation, and Resource Plan.

8. Test Documentation

Test documentation is documentation of artifacts created before, during, and after the
testing of software.

Test Policy, Test Strategy, RTM, Test Plan, Test Case, Defect Report, Test Metrics
Report, and Test Summary Reports are the important Test Documents.

9. Test Execution Level


We have some levels of Test Execution, Smoke Testing, Sanity Testing,
Comprehensive Testing, and Regression Testing.

10. Test Deliverables

Test Deliverables refer to a list of documents, tools, and other equipment that must be
created, provided, and maintained to support testing activities in a project.

11. Test Closure

Test closure is a set of activities that are performed at the end of the testing process.
These are usually performed after the product is delivered, like generating a test
report, etc.

12. Maintenance Testing

Once a system is deployed it is in service for years and decades. During this time the
system and its operational environment is often corrected, changed or extended.
Testing that is provided during this phase is called Maintenance Testing.

Software Testing Life Cycle (STLC): 


The Software Testing Life Cycle (STLC) is a systematic approach to testing a software
application to ensure that it meets the requirements and is free of defects. It is a process
that follows a series of steps or phases, and each phase has specific objectives and
deliverables. The STLC is used to ensure that the software is of high quality, reliable,
and meets the needs of the end-users.
The main goal of the STLC is to identify and document any defects or issues in the
software application as early as possible in the development process. This allows for
issues to be addressed and resolved before the software is released to the public.
The stages of the STLC include: Test Planning, Test Analysis, Test Design, Test
Environment Setup, Test Execution, Test Closure, and Defect Retesting. Each of these
stages includes specific activities and deliverables that help to ensure that the software
is thoroughly tested and meets the requirements of the end-users.
Overall, the STLC is an important process that helps to ensure the quality of software
applications and provides a systematic approach to testing. It allows organizations to
release high-quality software that meets the needs of their customers, ultimately leading
to customer satisfaction and business success.
 Characteristics of STLC:
 STLC is a fundamental part of Software Development Life Cycle (SDLC)  but
STLC consists of only the testing phases.
 STLC starts as soon as requirements are defined or software requirement
document is shared by stakeholders.
 STLC yields a step-by-step process to ensure quality software.
In the initial stages of STLC, while the software product or the application is being
developed, the testing team analyzes and defines the scope of testing, entry and exit
criteria and also the test cases. It helps to reduce the test cycle time and also enhance
the product quality. As soon as the development phase is over, testing team is ready
with test cases and start the execution. This helps in finding bugs in the early phase. 

Phases of STLC: 

 
                  1. Requirement Analysis:

 Requirement Analysis is the first step of Software Testing Life Cycle


(STLC). In this phase quality assurance team understands the requirements
like what is to be tested. If anything is missing or not understandable then
quality assurance team meets with the stakeholders to better understand the
detail knowledge of requirement.

The activities that take place during the Requirement Analysis stage include:
 Reviewing the software requirements document (SRD) and other related
documents
 Interviewing stakeholders to gather additional information
 Identifying any ambiguities or inconsistencies in the requirements
 Identifying any missing or incomplete requirements
 dentifying any potential risks or issues that may impact the testing process
Creating a requirement traceability matrix (RTM) to map requirements to test cases
At the end of this stage, the testing team should have a clear understanding of the
software requirements and should have identified any potential issues that may impact
the testing process. This will help to ensure that the testing process is focused on the
most important areas of the software and that the testing team is able to deliver high-
quality results.
                  2. Test Planning: 

Test Planning is most efficient phase of software testing life cycle where all
testing plans are defined. In this phase manager of the testing team
calculates estimated effort and cost for the testing work. This phase gets
started once the requirement gathering phase is completed.

The activities that take place during the Test Planning stage include:
 Identifying the testing objectives and scope
 Developing a test strategy: selecting the testing methods and techniques that will
be used
 Identifying the testing environment and resources needed
 Identifying the test cases that will be executed and the test data that will be used
 Estimating the time and cost required for testing
 Identifying the test deliverables and milestones
 Assigning roles and responsibilities to the testing team
 Reviewing and approving the test plan
At the end of this stage, the testing team should have a detailed plan for the testing
activities that will be performed, and a clear understanding of the testing objectives,
scope, and deliverables. This will help to ensure that the testing process is well-
organized and that the testing team is able to deliver high-quality results.
                 3. Test Case Development:  
The test case development phase gets started once the test planning phase is
completed. In this phase testing team note down the detailed test cases.
Testing team also prepare the required test data for the testing. When the
test cases are prepared then they are reviewed by quality assurance team.
The activities that take place during the Test Case Development stage include:
 Identifying the test cases that will be developed
 Writing test cases that are clear, concise, and easy to understand
 Creating test data and test scenarios that will be used in the test cases
 Identifying the expected results for each test case
 Reviewing and validating the test cases
 Updating the requirement traceability matrix (RTM) to map requirements to test
cases
At the end of this stage, the testing team should have a set of comprehensive and
accurate test cases that provide adequate coverage of the software or application. This
will help to ensure that the testing process is thorough and that any potential issues are
identified and addressed before the software is released.
                 4. Test Environment Setup :

 Test environment setup is the vital part of the STLC. Basically test
environment decides the conditions on which software is tested. This is
independent activity and can be started along with test case development. In
this process the testing team is not involved. either the developer or the
customer creates the testing environment.

The activities that take place during the test execution stage of the Software
Testing Life Cycle (STLC) include:
 Test execution: The test cases and scripts created in the test design stage are run
against the software application to identify any defects or issues.
 Defect logging: Any defects or issues that are found during test execution are
logged in a defect tracking system, along with details such as the severity, priority,
and a description of the issue.
 Test data preparation: Test data is prepared and loaded into the system for test
execution
 Test environment setup: The necessary hardware, software, and network
configurations are set up for test execution
 Test execution: The test cases and scripts are run, and the results are collected
and analyzed.
 Test result analysis: The results of the test execution are analyzed to determine
the software’s performance and identify any defects or issues.
 Defect retesting: Any defects that are identified during test execution are
retested to ensure that they have been fixed correctly.
 Test Reporting: Test results are documented and reported to the relevant
stakeholders.
It is important to note that test execution is an iterative process and may need to be
repeated multiple times until all identified defects are fixed and the software is deemed
fit for release.
                5. Test Execution:
 After the test case development and test environment setup test execution
phase gets started. In this phase testing team start executing test cases based
on prepared test cases in the earlier step.

The activities that take place during the test execution stage of the Software
Testing Life Cycle (STLC) include:
 Test execution: The test cases and scripts created in the test design stage are run
against the software application to identify any defects or issues.
 Defect logging: Any defects or issues that are found during test execution are
logged in a defect tracking system, along with details such as the severity, priority,
and a description of the issue.
 Test data preparation: Test data is prepared and loaded into the system for test
execution
 Test environment setup: The necessary hardware, software, and network
configurations are set up for test execution
 Test execution: The test cases and scripts are run, and the results are collected
and analyzed.
 Test result analysis: The results of the test execution are analyzed to determine
the software’s performance and identify any defects or issues.
 Defect retesting: Any defects that are identified during test execution are
retested to ensure that they have been fixed correctly.
 Test Reporting: Test results are documented and reported to the relevant
stakeholders.
It is important to note that test execution is an iterative process and may need to be
repeated multiple times until all identified defects are fixed and the software is deemed
fit for release.
                 6. Test Closure:

Test closure is the final stage of the Software Testing Life Cycle (STLC)
where all testing-related activities are completed and documented. The main
objective of the test closure stage is to ensure that all testing-related activities
have been completed, and that the software is ready for release.

At the end of the test closure stage, the testing team should have a clear understanding
of the software’s quality and reliability, and any defects or issues that were identified
during testing should have been resolved. The test closure stage also includes
documenting the testing process and any lessons learned, so that they can be used to
improve future testing processes
Test closure is the final stage of the Software Testing Life Cycle (STLC) where all
testing-related activities are completed and documented. The main activities that
take place during the test closure stage include:
 Test summary report: A report is created that summarizes the overall testing
process, including the number of test cases executed, the number of defects found,
and the overall pass/fail rate.
 Defect tracking: All defects that were identified during testing are tracked and
managed until they are resolved.
 Test environment clean-up: The test environment is cleaned up, and all test
data and test artifacts are archived.
 Test closure report: A report is created that documents all the testing-related
activities that took place, including the testing objectives, scope, schedule, and
resources used.
 Knowledge transfer: Knowledge about the software and testing process is
shared with the rest of the team and any stakeholders who may need to maintain or
support the software in the future.
 Feedback and improvements : Feedback from the testing process is collected
and used to improve future testing processes
It is important to note that test closure is not just about documenting the testing process,
but also about ensuring that all relevant information is shared and any lessons learned
are captured for future reference. The goal of test closure is to ensure that the software
is ready for release and that the testing process has been conducted in an organized and
efficient manner.

software testing methodology?


Software testing methodologies are the various strategies or approaches used to test an
application to ensure it behaves and looks as expected. These encompass everything from
front to back-end testing, including unit and system testing.

Software Testing Methodologies


Software testing methodologies are the various strategies or approaches used to test an
application to ensure it behaves and looks as expected. These encompass everything from front
to back-end testing, including unit and system testing.

Functional vs. Non-functional Testing


The goal of utilizing numerous testing methodologies in your development process is to make
sure your software can successfully operate in multiple environments and across different
platforms. These can typically be broken down between functional and non-functional testing.
Functional testing involves testing the application against the business requirements. It
incorporates all test types designed to guarantee each part of a piece of software behaves as
expected by using uses cases provided by the design team or business analyst. These testing
methods are usually conducted in order and include:

 Unit testing

 Integration testing

 System testing

 Acceptance testing

Non-functional testing methods incorporate all test types focused on the operational aspects of a
piece of software. These include:

 Performance testing

 Security testing

 Usability testing

 Compatibility testing

Unit Testing
Unit testing is the first level of testing and is often performed by the developers themselves. It is
the process of ensuring individual components of a piece of software at the code level are
functional and work as they were designed to. Developers in a test-driven environment will
typically write and run the tests prior to the software or feature being passed over to the test
team. Unit testing can be conducted manually, but automating the process will speed up delivery
cycles and expand test coverage. Unit testing will also make debugging easier because finding
issues earlier means they take less time to fix than if they were discovered later in the testing
process. TestLeft is a tool that allows advanced testers and developers to shift left with the fastest
test automation tool embedded in any IDE.

Start Shifting Left and Automate now with TestLeft


Start Free Trial 

Integration Testing
After each unit is thoroughly tested, it is integrated with other units to create modules or
components that are designed to perform specific tasks or activities. These are then tested as
group through integration testing to ensure whole segments of an application behave as expected
(i.e, the interactions between units are seamless). These tests are often framed by user scenarios,
such as logging into an application or opening files. Integrated tests can be conducted by either
developers or independent testers and are usually comprised of a combination of automated
functional and manual tests.

System Testing
System testing is a black box testing method used to evaluate the completed and integrated
system, as a whole, to ensure it meets specified requirements. The functionality of the software is
tested from end-to-end and is typically conducted by a separate testing team than the
development team before the product is pushed into production.

Acceptance Testing
Acceptance testing is the last phase of functional testing and is used to assess whether or not the
final piece of software is ready for delivery. It involves ensuring that the product is in
compliance with all of the original business criteria and that it meets the end user’s needs. This
requires the product be tested both internally and externally, meaning you’ll need to get it into
the hands of your end users for beta testing along with those of your QA team. Beta testing is key
to getting real feedback from potential customers and can address any final usability concerns.

Performance Testing
Performance testing is a non-functional testing technique used to determine how an application
will behave under various conditions. The goal is to test its responsiveness and stability in real
user situations. Performance testing can be broken down into four types:

 Load testing is the process of putting increasing amounts of simulated demand on your
software, application, or website to verify whether or not it can handle what it’s designed to
handle.
 Stress testing takes this a step further and is used to gauge how your software will
respond at or beyond its peak load. The goal of stress testing is to overload the application on
purpose until it breaks by applying both realistic and unrealistic load scenarios. With stress
testing, you’ll be able to find the failure point of your piece of software.
 Endurance testing, also known as soak testing, is used to analyze the behavior of an
application under a specific amount of simulated load over longer amounts of time. The goal
is to understand how your system will behave under sustained use, making it a longer process
than load or stress testing (which are designed to end after a few hours). A critical piece of
endurance testing is that it helps uncover memory leaks.
 Spike testing is a type of load test used to determine how your software will respond to
substantially larger bursts of concurrent user or system activity over varying amounts of time.
Ideally, this will help you understand what will happen when the load is suddenly and
drastically increased.

Security Testing
With the rise of cloud-based testing platforms and cyber attacks, there is a growing concern and
need for the security of data being used and stored in software. Security testing is a non-
functional software testing technique used to determine if the information and data in a system is
protected. The goal is to purposefully find loopholes and security risks in the system that could
result in unauthorized access to or the loss of information by probing the application for
weaknesses. There are multiple types of this testing method, each of which aimed at verifying six
basic principles of security:

1. Integrity
2. Confidentiality
3. Authentication
4. Authorization
5. Availability
6. Non-repudiation

Usability Testing
Usability testing is a testing method that measures an application’s ease-of-use from the end-user
perspective and is often performed during the system or acceptance testing stages. The goal is to
determine whether or not the visible design and aesthetics of an application meet the intended
workflow for various processes, such as logging into an application. Usability testing is a great
way for teams to review separate functions, or the system as a whole, is intuitive to use.

Compatibility Testing
Compatibility testing is used to gauge how an application or piece of software will work in
different environments. It is used to check that your product is compatible with multiple
operating systems, platforms, browsers, or resolution configurations. The goal is to ensure that
your software’s functionality is consistently supported across any environment you expect your
end users to be using.

difference between static and dynamic testing?

Static testing is about the prevention of defects whereas Dynamic testing is about finding
and fixing the defects. Static testing does the verification process while Dynamic testing does
the validation process. Static testing is performed before compilation whereas Dynamic testing is
performed after compilation.
Static Testing is a type of software testing in which software application is tested
without code execution. Manual or automated reviews of code, requirement
documents and document design are done in order to find the errors. The main
objective of static testing is to improve the quality of software applications by finding
errors in early stages of software development process.
Static testing involves manual or automated reviews of the documents. This review is
done during an initial phase of testing to catch Defect early in STLC. It examines
work documents and provides review comments. It is also called Non-execution
testing or verification testing.

Static Testing Techniques


 Informal Reviews: This is one of the type of review which doesn’t follow any
process to find errors in the document. Under this technique, you just review
the document and give informal comments on it.
 Technical Reviews: A team consisting of your peers, review the technical
specification of the software product and checks whether it is suitable for the
project. They try to find any discrepancies in the specifications and standards
followed. This review concentrates mainly on the technical documentation
related to the software such as Test Strategy, Test Plan and requirement
specification documents.
 Walkthrough: The author of the work product explains the product to his
team. Participants can ask questions if any. A meeting is led by the author.
Scribe makes note of review comments
 Inspection: The main purpose is to find defects and meeting is led by a trained
moderator. This review is a formal type of review where it follows a strict
process to find the defects. Reviewers have a checklist to review the work
products. They record the defect and inform the participants to rectify those
errors.
 Static code Review: This is a systematic review of the software source code
without executing the code. It checks the syntax of the code, coding standards,
code optimization, etc. This is also termed as white box testing. This review
can be done at any point during development.

 Dynamic Testing?
Under Dynamic Testing, a code is executed. It checks for functional behavior of
software system, memory/cpu usage and overall performance of the system. Hence
the name “Dynamic”

The main objective of this testing is to confirm that the software product works in
conformance with the business requirements. This testing is also called an Execution
technique or validation testing.

Dynamic testing executes the software and validates the output with the expected
outcome. Dynamic testing is performed at all levels of testing and it can be either
black or white box testing.

Dynamic Testing Techniques


 Unit Testing: Under Unit Testing, individual units or modules are tested by the
developers. It involves testing of source code by developers.
 Integration Testing: Individual modules are grouped together and tested by
the developers. The purpose is to determine what modules are working as
expected once they are integrated.
 System Testing: System Testing is performed on the whole system by
checking whether the system or application meets the requirement specification
document.

Differences between Verification and Validation

Verification is the process of checking that a software achieves its goal without any
bugs. It is the process to ensure whether the product that is developed is right or not. It
verifies whether the developed product fulfills the requirements that we have.
Verification is static testing. 
Verification means Are we building the product right? 
Validation is the process of checking whether the software product is up to the mark or
in other words product has high level requirements. It is the process of checking the
validation of product i.e. it checks what we are developing is the right product. it is
validation of actual and expected product. Validation is the dynamic testing. 
Validation means Are we building the right product? 

Verification Validation

It includes checking documents, design, It includes testing and validating the actual
codes and programs. product.
Verification Validation

Verification is the static testing. Validation is the dynamic testing.

It does not include the execution of the


code. It includes the execution of the code.

Methods used in verification are reviews, Methods used in validation are Black Box
walkthroughs, inspections and desk- Testing, White Box Testing and non-
checking. functional testing.

It checks whether the software meets the


It checks whether the software conforms to requirements and expectations of a customer
specifications or not. or not.

It can find the bugs in the early stage of the It can only find the bugs that could not be
development. found by the verification process.

The goal of verification is application and


software architecture and specification. The goal of validation is an actual product.

Validation is executed on software code with


Quality assurance team does verification. the help of testing team.

It comes before validation. It comes after verification.

It consists of checking of documents/files It consists of execution of program and is


and is performed by human. performed by computer.

You might also like