0% found this document useful (0 votes)
12 views25 pages

SEP Insights

The document discusses several factors to consider when determining how much testing is appropriate for a software project, including: - Running only critical test plans that address key business needs, rather than all test plans, can help ensure proper testing without over-testing. - Both under-testing and over-testing can be problematic - under-testing may lead to more defects while over-testing increases costs without significantly reducing defects. - The document then provides more details on different types of software defects and responsibilities of a software tester.

Uploaded by

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

SEP Insights

The document discusses several factors to consider when determining how much testing is appropriate for a software project, including: - Running only critical test plans that address key business needs, rather than all test plans, can help ensure proper testing without over-testing. - Both under-testing and over-testing can be problematic - under-testing may lead to more defects while over-testing increases costs without significantly reducing defects. - The document then provides more details on different types of software defects and responsibilities of a software tester.

Uploaded by

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

SEP

Does Increase in testing always mean good to the project?

No increase in testing does not mean always good for the product, company or the project. In real test
scenarios from 100% test plans only 20% test plans are critical from business angle. Running those
critical test plans will assure that the testing is proper rather than running the full 100% test plans
again and again. If you under test a system your
number of defect will increase, but on the contrary if you over test a system your cost of testing will
increase. Even if your defects come down your cost of testing has shooted up.

Factors to consider before deciding a software development model


Selecting the right methodology for your software project is a crucial task and needs a proper
understanding of every aspect.
Before you choose a methodology for your software development, there are a lot of factors you need
to consider. Some of these include:

The requirements for the project: Each software development project consists of requirements that
must be met before it’s implemented. So, you have to evaluate these requirements and compare them
to what you have in place in your company, before choosing a methodology. That way, you’ll be able
to arrive at the best methodology to use at all times and choose a system that will give you the best
results for the resources and time spent.

The expected end product of the project: Before starting a software development project, you need
to have an end product in mind. This is the result that you hope to achieve after completing the
project. You must envision this and sketch it out in the software design phase before the first line of
code is written. You must have an idea about the expectations of your clients regarding the project.
Be clear about your goals and how you want to achieve it and decide which method will lead you
correctly; towards the successful creation of the project.

The past experience of the project team with the methodology: The experience of the software
development team in your company matters too. This should be considered when deciding on the
software development methodology you want to use. Some team members may not feel comfortable
working with certain systems if they don’t have any prior experience with them, while others might
find it difficult getting used to working with new team members. It’s important to keep team
capabilities and team dynamics in mind.

Feedback on the work done: Feedback is a crucial aspect of software development. It helps you
formulate outcomes for future projects. As a matter of fact, if you don’t know exactly how you arrived
at previous results, you won’t be able to replicate them. While doing this, you need to consider how
efficient your team is in providing feedback. This depends largely on the applications, methodologies,
and the size of the project.

Project size: Before picking a software development methodology to use, you need to consider the
size of the project you’re embarking on. While larger projects may not fit perfectly for the waterfall,
some apps will require longer testing times owing to their size and requirements.
Project size should also be considered while selecting the right software development methodology.
Some models work the best on small-scaled projects while the others go well with large-scaled ones.
Select the methodology that suits the number of team members you have within the project.

Consider Development Team’s Location


The location of your team members also plays a huge role in selecting the perfect methodology. If
your development team disperses into different locations, then you must select the methodology like
Agile. Working remotely in teams becomes difficult if you haven’t selected the right methodology
that doesn’t support remote working. Working from different locations needs secure communication
and collaboration among the team members. It needs greater coordination, accountability, and
coherence.
Categories of Software Defect

Software Defect is some kind of error, flaw or some kind of mistake from the development team
which prevent the software from the smooth working.
Defects are defined as the deviation of the actual and expected result of system or software
application. Defects can also be defined as any deviation or irregularity from the specifications
mentioned in the product functional specification document. Defects are caused by the developer in
development phase of software. When a developer or programmer during the development phase
makes some mistake then that turns into bugs that are called defects. It is basically caused by the
developers’ mistakes.

Defect in a software product represents the inability and inefficiency of the software to meet the
specified requirements and criteria and subsequently prevent the software application to perform the
expected and desired working.
Defects can be prevented by peer reviewing and code analysis.

Types of Defects:
Following are the common types of defects that occur during development:

Arithmetic Defects:
It includes the defects made by the developer in some arithmetic expression or mistake in finding
solution of such arithmetic expression. This type of defects are basically made by the programmer due
to access work or less knowledge. Code congestion may also lead to the arithmetic defects as
programmer is unable to properly watch the written code.

Logical Defects:
Logical defects are mistakes done regarding the implementation of the code. When the programmer
doesn’t understand the problem clearly or thinks in a wrong way then such types of defects happen.
Also while implementing the code if the programmer doesn’t take care of the corner cases then logical
defects happen. It is basically related to the core of the software. Logic errors are flaws that lead
software to provide false results.

Syntax Defects:
Syntax defects means mistake in the writing style of the code. It also focuses on the small mistake
made by developer while writing the code. Often the developers do the syntax defects as there might
be some small symbols escaped. For example, while writing a code in C++ there is possibility that a
semicolon (;) is escaped.

Multithreading Defects:
Multithreading means running or executing the multiple tasks at the same time. Hence in
multithreading process there is possibility of the complex debugging. In multithreading processes
sometimes there is condition of the deadlock and the starvation is created that may lead to system’s
failure.
Interface Defects:
Interface defects means the defects in the interaction of the software and the users. The system may
suffer different kinds of the interface testing in the forms of the complicated interface, unclear
interface or the platform based interface.
Performance Defects:
Performance defects are the defects when the system or the software application is unable to meet the
desired and the expected results. When the system or the software application doesn’t fulfill the user’s
requirements then that is the performance defects. It also includes the response of the system with the
varying load on the system.

Security defects

Software bugs of the security variety, if not fixed, might have serious repercussions. These flaws
could provide hostile individuals access to delicate information or systems, or even give them control
of the impacted software. Because of this, security-level issues must receive top-priority treatment and
be resolved as soon as feasible.
Compatibility defects

When an application is incompatible with the hardware it is operating on or with other software it has
to interface with, it develops compatibility flaws.

Software and hardware incompatibilities can lead to crashes, data loss, and other undesirable
behavior.
Defects can also be categorized as low priority, medium priority and high priority defects.

Explain the job responsibilities of the software tester?


SOLUTION
A software tester is an individual that tests software for bugs, errors, defects or any problem that can
affect the performance of computer software or an application.

Software testers are part of a software development team and perform functional and non-functional
testing of software using manual and automated software testing techniques.
A software tester has different sets of responsibilities and these include.

1. Bug reporting: Software testers are responsible for writing bug reports and forwarding to the
development team.
2. Understanding requirements: He may have to interact with the clients to better understand the
product requirements or in case the design requires any kind of modifications.

3. Perform all levels of testing (including System, Integration, and Regression testing)

4. Detect and track software defects and inconsistencies: He is responsible for mitigating software
risks by detecting and troubleshooting defects.

5. Adherence to standards: Ensure that all tested related work is carried out as per the defined
standards and procedures.
6. Preparation of the test plan: The software contributes in the test plan preparation.

7. Creation of test designs, test processes, test cases and test data and also modification test cases if
required.
8. Design and develop automation scripts when needed
9. Software testers analyse software and systems to avert risk and prevent issues

10. Software testers are also responsible for implementing, designing and building testing strategies
effectively.

11. Discuss bug fixes with developers including re-testing the fixed bugs.

12. Software Testers analyze users stories and/use cases/requirements for validity and feasibility

13. Maintain the test documentation: They write documents and perform document analysis, for
example; updating the Traceability matrix document.

14. Communicate findings to technical and non-technical colleagues including providing objective
feedback to software development project teams

What is test management?


When it comes to the software development lifecycle (SDLC), test management is one of the most
important disciplines to include within a robust evaluation process.
Test management is the practice of closely managing and monitoring application testing to ensure that
resources are being focused on high-risk or important areas of the software.
Test management is important because it ensures an organization is delivering a high-quality, bug-free
software application that meets the customer’s requirements or demands.

Test Management Process

The Test Management process can be divided into two main parts, including:

Planning
This is the first phase, where the developers and testers plan the entire test cycle.
During the planning phase of the test management process, a test manager will establish a
comprehensive plan of the test life cycle. Planning is further divided into the following sub-processes:

Risk Analysis
Risks can adversely affect the software quality and the company’s reputation if they occur. A risk
analysis is conducted before the start of the project to determine any risk factors and come up with
possible solutions.

Test Estimation
This allows the test manager to estimate the amount of required resources (e.g., equipment, facilities,
funding, etc.), human skill needed, project timeline, and the overall cost to complete the test. It’s
considered one of the most crucial tasks during the test management process.

Test planning
This defines the test scope, strategy, objectives, exit criteria, resource planning, test deliverables, time
scheduling, etc. A project might fail in the absence of a proper test plan. Effective test planning is
specifically significant in the development of large software systems.

Test Organization
During this phase, a test manager will organize a skilled testing team and define their individual roles
and/or activities in the testing process.
You must create an efficient team and delegate tasks carefully for effective test execution.

Execution

The second part of the test management process is the actual execution of the test. Execution is the
phase in which the actual software testing is executed to determine the results. This includes:

Test Monitoring and Control


The first stage of test execution is test monitoring and control. This includes software performance
testing, as well as evaluating and sharing feedback on the current test metrics, proceedings, and
budget to ensure that all specific test objectives are met. During this stage, the test manager will
compare the status of current test-related activities against the test estimation and planning
documents, allowing them to analyse, record, and report whether the process is meeting the correct
benchmarks.

Issue Management
During this stage, each issue found must be reported on time, prioritized, and logged, as well as
appointed to the appropriate team member with the right set of skills to resolve the issue. This stage
works to ensure that the project doesn’t go past its original deadline, that the budget is not exceeded,
and that the organization retains customer trust.

Test Report and Evaluation


Once the project is completed, the test manager compiles a test report that includes an in-depth
evaluation of the testing process. This report helps identify the developed software quality, test
coverage, and required improvements or modifications.

The Advantages of Testing

Here are the top reasons why software testing


is important:

Ÿ Product quality - Products always serve users, so it's very important that they deliver the values
they promise. Hence, they should work properly to ensure a great customer experience. Following
product requirements is imperative because it helps you get the wanted results.

Ÿ Security - Testing will ensure that the user gets a trustworthy product, keep the user's personal
information and data safe, and provide vulnerability-free products.

Ÿ Customer satisfaction - the first impression is really important, and if you fail at it, users are going to
find another product that will accomplish all their requirements. One reason why apps should be
tested is to provide the best user experience possible. Being the best product in the market will help
you gain trust-worthy clients, which will have great long-term effects.

Ÿ Cost effectiveness - including testing in your project can save money in the long run. Software
development consists of many stages, and if bugs are caught in the earlier phases, it costs much less to
fix them. That is why it is important to start with testing as soon as possible.
What is software Testing?
Software testing is the process of evaluating and verifying that a software product or application does
what it is supposed to do.
Software testing is an integral part of software engineering, it validates the proposed software and
verify its working according to the software requirement specification(SRS).

SRS describes the specifications of the software, how it is expected to work, and its needs during
development. This concept of software testing also ensures the quality of the software being
developed.

Without Software Testing, desired results cannot be met.


/Software Testing is a process of evaluating the functionality of a software application to find any
software bugs. It checks whether the developed software met the specified requirements and
identifies any defect in the software in order to produce a quality product. It is basically executing a
system in order to identify any gaps, errors, or missing requirements in contrary to the actual
requirements.

It is also stated as the process of verifying and validating a software product. It checks whether the
software product:

Ÿ Meets the business and technical requirements that guided its design and development

Ÿ Works as per the requirement

Ÿ Can be implemented with the same characteristics

The benefits of testing include preventing bugs, reducing development costs and improving
performance.

Types of software testing

There are many different types of software tests, each with specific objectives and strategies:

Ÿ Acceptance testing: Verifying whether the whole system works as intended.

Ÿ Integration testing: Ensuring that software components or functions operate together.

Ÿ Unit testing: Validating that each software unit performs as expected. A unit is the smallest testable
component of an application.

Ÿ Functional testing: Checking functions by emulating business scenarios, based on functional


requirements. Black-box testing is a common way to verify functions.

Ÿ Performance testing: Testing how the software performs under different workloads. Load testing, for
example, is used to evaluate performance under real-life load conditions.

Ÿ Regression testing: Checking whether new features break or degrade functionality. Sanity testing can
be used to verify menus, functions and commands at the surface level, when there is no time for a full
regression test.
Ÿ Stress testing: Testing how much strain the system can take before it fails. Considered to be a type of
non-functional testing.

Ÿ Usability testing: Validating how well a customer can use a system or web application to complete a
task.

why software testing is needed:

Ÿ It detects the weak architectural structure of the software beforehand.

Ÿ It ensures that the to-be-published software is built following the proposed SRS document.

Ÿ Software testing is a component of software engineering, a branch of computer science where


software is created in an organized manner by software engineers.

Ÿ Testing helps to check how efficient the software is, and how much optimization is needed to get the
desired results.

Ÿ It is also capable of detecting security voids present in the code of the proposed software.

Ÿ It ensures the reliability and high performance of the delivered software.


Ÿ Software testing can help in detecting bugs: Testing any software or project can help in revealing a
few or some defects that may or may not be detected by developers. However, testing of software
alone cannot confirm that your developed project or software is error free. Hence, it’s essential to
devise test cases and find out as many defects as possible.

Why do we need Software Testing?

The software application’s success rate controls the growth of our business. It plays an important role
for the development of software applications and products.

We need software testing for the following reasons:

Ÿ Cost Effective – Testing has many benefits and one of the most important ones is cost-effectiveness.
Testing our project on time can save money in the long run. Software development consists of many
stages and if bugs are caught in the earlier stages it costs much less to fix them.

Ÿ Security – This is the most sensitive and vulnerable part of software testing. Users are always looking
for trusted products that they can rely on. It helps in removing problems and risks beforehand.

Ÿ Product Quality – In order to make your product


vision come to life, it has to work as planned. It is important to follow the product requirements
because it helps you get the required end results.

Ÿ Customer Satisfaction – The ultimate goal for a product owner is to give the best customer
satisfaction. Software should be tested in order to bring the best user experience possible. Being the
best product in this saturated market will help you gain trustworthy clients which will have great long-
term effects.

Software Testing techniques


Ÿ Black Box Testing:

Ÿ In this type of approach, the testers don’t have any knowledge about the internal working of the
proposed software.

Ÿ They just interact with the developed software and document the tested results.

Ÿ Testers here act like end users and check for the behavior of the application. Both functional and non-
functional behaviors are tested.

Ÿ It is also known as closed-box testing.

Ÿ White Box Testing:

Ÿ Here the testers know the internal working of the application which includes the actual code and
structure of the application.

Ÿ In this type of testing, particular functions are tested namely data flow, control flow, path flow,
conditional flow, etc.

Ÿ White box testing is also known as transparent testing.

Test Management :
Test Management is a process where testing activities are managed to ensure high-quality and high-
end testing of software applications. This method consists of tracking, organization, controlling
process, checks the visibility of the testing process in order to deliver a high-quality software
application. It makes sure the software testing process run as expected.

Why is Test Management Important?

Test management helps ensure that high-quality software applications are delivered that meet the
customers’ demands. It helps develop the software application within stringent deadlines, facilitating
collaboration between the testers and the developers.
In a nutshell, test management helps with the following:

Ÿ On-time product delivery

Ÿ More consistent and smoother projects

Ÿ Customer satisfaction

Ÿ Test report and evolution

Benefits of Test Management:

Ÿ Enhances the software quality

Ÿ Helps in the development and maintenance of product metrics

Ÿ Identify areas of weakness


Ÿ It empowers the developers to ascertain that fewer coding or design errors are included in the code.

Ÿ Checks if the software system is ‘fit for purpose and performs as it is expected to

Challenges in Test Management:

Ÿ Lack of adequate testing resources

Ÿ Insufficient testing time

Ÿ Schedule and budget constraints

Ÿ Complex requirements associated with testing and validating

Ÿ Absence of testing documents.

Why is Test Management Important?

Test management is important because it ensures an organization is delivering a high-quality, bug-free


software application that meets the customer’s requirements or demands. In addition,

Difference between System Testing and Acceptance Testing


The system and acceptance testing both are methods of dynamic testing used to verify all the built-in
requirements in the software or the application.

System Testing:
System Testing is done to check whether the software or product meets the specified requirements or
not. It is done by both testers and developers.
In system testing, we test and validate the fully integrated hardware and software system. We verify
whether the system as a whole meets the specified requirements. The main goal of a system test is to
test the end-to-end system specifications.
It contains the Testings: System testing, Integration Testing, functionality testing, performance
testing, scalability testing, usability, security, etc. It is done through more positive and negative test
cases.

User Acceptance Testing:


In the acceptance testing phase, we test a system for its acceptability from the user’s perspective. The
main goal of acceptance testing is to evaluate the system’s compliance with the business
requirements.
Acceptance Testing is done after the system testing.
UAT testing is executed on the customer's unique environment.
User acceptance testing is used to evaluate whether the application works as per the specified business
requirements or real-time scenarios. It includes only Functional Testing and it contain two
testing Alpha Testing and Beta Testing.

System testing UAT


This is performed by testers and developers. This is performed by end users and clients.
Integration of the sub units/units is checked The whole design is checked here.
here. The interfaces are to be tested.
The individual units are integrated and tested The system is tested as a whole for the main
such that the system works as per the functionality of the product as desired by the
requirements. user.
It is done based on the requirements by the It is done based on the user perspective as to
testers how the product has to be used by end user.
It is performed as soon as the system is UAT is performed finally just prior to the
assembled. product release.
System testing is primarily performed to test the User acceptance testing is implemented to
needs of a system. validate the system performance through an
end-user
System testing is generally done after
development and before delivery of the product. Acceptance testing is done after System testing
and delivery of the product.

S.NoSystem TestingAcceptance Testing1.System testing is done to check whether the software or


product meets the specified requirements or not.Acceptance testing is the type of testing which is used
to check whether the software meets the customer requirements or not.2.System testing is used by
developers as well as testers.Acceptance testing is used by testers, stakeholders as well as
clients.3.System Testing is both functional and non-functional testing.Acceptance testing is only
functional testing.4.System Testing is the constitute of System and integration testing.Acceptance
testing is the constitute of alpha and beta testing.5.System testing is done before the Acceptance
testing.Acceptance testing is done after the System testing.6.System testing is the constitute of
positive as well as negative test cases.Acceptance Testing is the constitute of positive
test cases.7.In system testing, system is checked for dummy inputs.In acceptance testing, system is
checked for random inputs.

Difference between System Testing and Acceptance Testing

Testing is a major step for the successful delivery of any application.

User Acceptance Testing

The end-user performs user acceptance testing to ensure that the product serves its purpose and meets
the business requirements. The users pick up specific and frequently used requirements and then test
those. We usually call this end-user testing. Here, the term “user” means the end-user or stakeholder
to whom the product is intended.

Common Challenges Software Automation

Software automation is one of the hottest quality


assurance trends nowadays.
Not Knowing Which Test Automation Framework to Use

The market offers a plethora of test automation frameworks to choose from, and the decision
isn’t always easy.

Selecting a Proper Testing


Approach
Automation tests not simply require a right
tool to create scripts but also need a correct
testing approach. This is one of the biggest
challenges for test automation engineers.

High Upfront Investment Cost


Actually, just due to budget constraints, many
people tend to give up test automation even
though they agree with an executable goal and
high ROI.
Problems with data reliance
One of the most challenging aspects of test
automation is data management. When the test
script is executed, the data must be in a specific
state; otherwise, it can cause serious issues in
several scenarios.
High initial investment
Automation needs a high initial investment in
terms of tools, skilled resources, infrastructure,
etc.
Effective communication &
collaboration in team
Lack of communication and collaboration among
the team is one of the key challenges in
automation testing.
Lack of Automated Testing Infrastructure

Another common challenge that organizations face when moving to automated testing is a
lack of infrastructure for executing their tests.

Deciding Which Tasks to Automate

Not all taskts should be automated, Prioritizing High value and business critical tasks that
ensure your app keeps running smoothly and uninterrupted is highly recommended.
Lack of Automated Testing Expertise
If your QA engineers were previously accustomed to performing testing by hand, they likely
lack experience in writing automated test scripts
Using Wrong Tools

If you are using the right tools, test automation will work effectively. With so many testing
solutions available on the market, it becomes very easy to get fooled. Choosing the wrong
tool could result in scalability problems on top of never meeting your initial test automation
goals.

Waterfall

The waterfall methodology empahsizes a linear progression of development. It’s merely a step-
by-step process of creating software from planning requirements to deployment. However, the
integrity of this model is also its downfall. Professional developers rarely use this model because it
does not adapt well to customer input, changing requirement, or unforeseen circumstances.
Difference between static and dynamic testing
Static Testing
Static Testing is a type of software testing in which software application is tested without code
execution.
Static testing is a software testing method that examines a program -- along with any associated
documents -- but does not require the program to be executed.
Some examples of what's tested include the following: requirement specifications, design documents,
and user documents, etc.
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 may include walk-throughs, reviews, inspections and data flow analysis. It mainly
involves syntax checking of code and manually reviewing algorithms as well as documents to find
any errors.
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.

Dynamic Testing

Dynamic Testing is a software testing method used to test the dynamic behaviour of software code.
Under Dynamic Testing, a code is executed. It checks for functional behavior of software system,
memory/cpu usage and overall performance of the system.
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 is a type of software testing that involves executing the software and evaluating its
behavior during runtime. It is also known as functional testing, as it focuses on testing the software’s
functionality and how it behaves under different inputs and conditions.

Dynamic testing is an important part of the software development process, as it helps to ensure that
the software is working as intended and meets the requirements of the end users.

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.

Also, Non-functional testing like performance, Security Testing fall under the category of dynamic
testing.

Advantages of Dynamic Testing

Ÿ Dynamic Testing can reveal the uncovered defects that are considered to be too difficult or
complicated and which cannot be covered through static Analysis
Ÿ In Dynamic Testing, we execute the software, end to end, ensuring error free software which in turn
increases the quality of a product and project.

Ÿ Dynamic Testing becomes an essential Tool for detecting any security Threats

Disadvantages of Dynamic Testing

Ÿ Dynamic Testing is Time Consuming because it executes the application/software or code which
requires huge amount of Resources

Ÿ Dynamic Testing increases the cost of project/product because it does not start early in the software
lifecycle and hence any issues fixed in later stages can result in an increase of cost.
Difference Between Static and Dynamic Testing
Ÿ Static testing is done without executing the program whereas Dynamic testing is done by executing
the program.

Ÿ Static testing checks the code, requirement documents, and design documents to find errors whereas
Dynamic testing checks the functional behavior of software system, memory/CPU usage and overall
performance of the system.

Ÿ 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 techniques are structural and statement coverage while Dynamic testing techniques are
Boundary Value Analysis & Equivalence Partitioning.

Static testing is a software testing method that examines a program -- along with any associated
documents -- but does not require the program to be executed. Dynamic testing, the other
main category of software testing, requires testers to interact with the program while it runs.

Methods of Dynamic Testing


Black-box testing and white-box testing are two main types of dynamic testing, although gray-box
testing, which aims to get the best of both worlds, is quite popular.
Black-box Testing
Black-box testing verifies the system from an end-user perspective without giving any consideration
to implementation details. Black-box testing can be further classified into:
Functional Testing Functional testing confirms whether the software works in line with end-user
expectations. Some types of functional testing are:
Unit Testing
Smoke Testing
Integration Testing
Regression Testing
Sanity Testing
System Testing
Acceptance Testing
Non-functional Testing-Non-functional testing tests the non-functional aspects of the system that are
important to end-users. Some types of non-functional testing are:
Baseline testing.
Compliance testing.
Documentation testing.
Reliability testing.
Load testing.
Localization testing and Internationalization testing.
Performance testing.
Recovery testing.

Black-box testing
The black-box testing is a testing technique
where the test engineer selects a module and
gives an input value to observe its functionality
and analysis of whether the function is giving
the expected output or not. If the function
produced the correct output, then the particular
function will be marked as pass.

To perform black-box testing, the test engineer


should have specific knowledge about the
software's requirement rather than programming
knowledge of the software.
And then, they can develop the test cases to
check the correctness of the software's
functionality.

Black-box testing is further classified into two


types, which are as follows:

Ÿ Functional testing

Ÿ Non-function testing

Functional testing
Functional testing is one of the most important
parts of black-box testing. It mainly focuses on
application specification rather than the actual
code, and the test engineer will test the program
rather than the system.

The functional testing is used to validate the


software application's functionality, whether the
function is working as per the requirement
specification.

In functional testing, each module has been


tested by giving the value, determining the
output, and verifying the actual output with the
expected value.
The functional testing is classified into four
different type of testing, which are as follows:
Ÿ Unit testing

Ÿ Integration testing

Ÿ System testing

Ÿ User acceptance testing

Unit testing
White-box Testing
White-box testing tests a software's internal structures or workings instead of its functionality.
The word white box is used to describe the core perspective of the system. The developers will
perform the white box testing, where they will test every line of the program's code.
The white-box testing is further divided into data flow/control testing.
Data flow Testing
The data flow testing is used to identify the program's test paths as per the settings of descriptions and
uses of variables in the program. And it does not relate to data flow diagrams.

Test Completion Criteria -


Significance:
Ÿ If Exit criterion has not met, the test cannot be
stopped.

Ÿ The Exit criterion has to be revamped or the


time should be extended for testing based on
the quality of the product.
Ÿ Any changes to the test completion criterion
must be documented and signed off by the
stakeholders.

Ÿ The testware can be released upon successful


completion of exit criteria.

When to Stop Testing


Testing should be stopped when it meets the
completion criteria. Now how to find the
completion criteria? Completion criteria can be
derived from test plan and test strategy
document. Also, re-check your test coverage.
Completion criteria should be based on Risks.
The following aspects are to be considered for
stopping the testing process −Testing should be
stopped when –

Ÿ Test cases completed with certain percentage


passed and test coverage is achieved.

Ÿ There are no known critical bugs


Ÿ Coverage of code, functionality, or requirements
reaches a specified point;

Ÿ Bug rate falls below a certain level, now testers


are not getting any priority 1, 2, or 3 bugs.

Ÿ Testing Deadlines

Ÿ Completion of test case execution

Ÿ Completion of functional and code coverage to a


Ÿ certain point

Ÿ Bug rate falls below a certain level and no high-


priority bugs are identified

Ÿ Management decision
Ÿ Deadlines (release deadlines, testing
deadlines.)

Ÿ Test cases completed with certain percentages


passed

Ÿ Test budget depleted

Ÿ Coverage of code/functionality/requirements
reaches

Ÿ A specified point

Ÿ The rate at which bugs can be found is too small

Ÿ Beta or Alpha Testing period ends

Ÿ The risk in the project is under an acceptable


limit
What is Testing?
Testing is the process of evaluating a system or
its component(s) with the intent to find whether it
satisfies the specified requirements or not.

You might also like