Design and Implementation of An Hybrid Software Testing Model
Design and Implementation of An Hybrid Software Testing Model
MODEL.
CHAPTER 1
INTRODUCTION
1.0 INTRODUCTION
Software testing is an essential process in software development that helps ensure that
software products are reliable, effective, and efficient. A Hybrid software testing model
combines elements from different testing models to create a unique testing approach that best
suits the software development project. However, a combination of an Automated and
Manual software testing model will be considered in this article. Manual testing involves
human testers who manually execute test cases and record the results. Automated testing uses
software tools to execute test cases and compare the actual results to the expected results.
Both methods have their advantages and disadvantages. Manual testing is more flexible and
can identify certain types of defects that automated testing cannot, while automated testing is
more efficient and can test large amounts of code quickly. The combination of automated and
manual software testing can provide several benefits to software development teams,
including increased testing coverage and more efficient use of resources. However, to
effectively implement a combination of automated and manual testing, it is important to
consider the design and implementation of the testing model. This module will discuss the
key design and implementation considerations for a combination of automated and manual
testing system.
Manual testing, on the other hand, can provide a more nuanced and exploratory
approach to testing, enabling testers to uncover unexpected bugs and usability issues.
However, manual testing can be time-consuming, labor-intensive, and prone to human
error.
The challenge, therefore, is to find the optimal combination of both testing models that can
effectively detect defects and improve the quality of the software, while minimizing costs and
time to market. This requires a well-planned and coordinated testing strategy, as well as the
use of appropriate testing tools and techniques.
1.2 OBJECTIVES
1. To design a hybrid software testing model that combines the strengths of automated
and manual testing system testing models to improve software quality assurance.
2. To implement the hybrid software testing model in a real-world software development
project to evaluate its effectiveness.
3. To discuss the challenges and limitations of implementing a hybrid testing approach
in software development projects.
4. To provide recommendations for software development teams looking to adopt a
hybrid testing approach.
LITERATURE REVIEW
Testing refers to the process of determining whether or not a given system meets its intended
requirements. It primarily consists of a validation and verification process to determine
whether the developed system meets the user's requirements. Therefore, this activity results
in a difference between actual and expected result. Software Testing is a method to check
whether the actual software product matches expected requirements and to ensure that
software product is defect free. It involves execution of software/system components using
manual or automated tools to evaluate one or more properties of interest. The purpose of
software testing is to identify errors, gaps or missing requirements in contrast to actual
requirements.
Software Testing can also be considered as a risk-based activity. The important thing during
testing process, the software testers must understand how to minimise a large number of tests
into manageable tests set, and make wise decisions about the risks that are important to test or
what are not [1]. Figure 1 shows the testing cost and errors found a relationship.
The Figure 1 clearly shows that cost goes up dramatically in testing both types i.e. functional
and nonfunctional. The decision making for what to test or reduce tests then it can cause to
miss many bugs. The effective testing goal is to do that optimal number of tests so that extra
testing effort can be minimised [1].
A. TESTING
The testing process involves planning, test case creation, execution of the test, validation, and
debugging. A strong test strategy that focuses on testing new functionality in a dedicated
testing environment is required for a successful test [3]. After cycles of revision are made on
the software application, regression testing is done to ensure that the new functionalities and
modifications have not adversely affected the previously existing code. The software is tested
with both good and bad test cases to observe the reaction and stability of the software.
Generating test cases and expected outcomes for every possibility of execution is labor-
intensive and time-consuming. Testing should continue for as long as the costs of finding and
correcting defects are lower than the potential cost of a software failure after release to the
end-user.
Manual software testing is a process of testing where a tester tests the software/application
manually. This kind of testing does not involve any coding or programs instead testing is
done based on the test cases written. End-to-end testing can be achieved by this method. All
the scenarios that cannot be automated have to be tested manually. Although manual testing
is time consuming it is still practiced in almost every software companies for its reliability.
Manual testing is the most primitive of all testing types and helps find defects in the software
system. A person doing manual testing should be patient, have good observing skills,
knowledge about the product/software they are testing. Each bug is tested manually in the
software by a manual software tester to assure the quality of the software. The process
involved in manual software testing is explained in next section.
Automation software testing is type of testing which involves scripts and codes to run a
particular test. An automation tester writes the code for a test case or scenario to reduce the
amount of time taken for manually testing the same scenario again and again. Even though to
run the automation script and testing a scenario takes very less time, the development of the
script is time consuming. When there is an urgent requirement to test and deliver the software
it is better to choose manual testing procedure. Automation testing is also used to test the
application from load, performance, and stress point of view. It increases the test coverage,
improves accuracy, and saves time and money in comparison to manual testing. Automation
tools like selenium, eclipse, maven, git etc. are used in companies according to their needs.
1. High setup costs: Automated testing requires significant upfront investment in tools,
infrastructure, and resources, making it expensive to implement.
2. Limited test coverage: Automated testing may not cover all possible test scenarios,
requiring manual testing to supplement test coverage.
3. Maintenance costs: Automated testing requires ongoing maintenance and updates,
adding to the cost and time required to maintain the test suite [7].
4. False sense of security: Automated testing may create a false sense of security,
leading to the belief that all critical tests have been covered when there may be gaps
in test coverage.
5. Lack of human judgment: Automated testing cannot replace human judgment, which
is required to identify issues that may be missed by automated tests.
Figure 2 includes the main parts of the systems development processes and the sequence
mechanics of these parts or phases in a logical arrangement, which insures the suitability of
this model to different phases of development systems, either small, medium or large. The
primary shape of the Hybrid model includes the following processes:
1. Planning: Contains the planning of necessary tasks to define the resources and
timelines, and making plans for the system development process and other
information that is related to the project. [8]
3. Design: A Process that has many steps. It contains four important parts:
Data structuring.
Software building.
Data representation.
Processes details (algorithms).
The requirements for the design process are transformed into a representation for the
software which can be evaluated for good quality, before starting the following phase, i.e,
"Implementation". Through this phase, the design is documented to become a part of the
software collection. [11]
4. Implementation: This transforms the design into formula which computers can read.
Also, it structures the system components by using one of the programming languages
according to its planning. [12]
6. Deployment: This means sending the system after complete to the customer for use
and work in order to show the problems based on its use for the first time. [1]
7. Testing: The testing process starts with the first phase of any system, namely
"planning'.' It includes the planning test, requirements collection test, design,
representation and integration. [14]
8. Maintenance: Software undergoes some modifications after handing it over to the
customer. These modifications occur because of the difficulties faced. Other reasons
may be the necessity of adjusting to the changes in the external environment or to the
customer's requests to make improvements in performance or function. [9]
9. Risk Analysis: This phase includes all development phases starting with planning
processes and finishing at maintenance processes. It lists all expected risks and
suggests all the necessary activities to reduce such risks. [15]
It is known that the process of developing medium and large systems starts with the
planning phase. In this phase, system requirements, like human cadre, time, materials and
costs are determined. Small projects, on the other hand, usually start with the designing or
programming phase, in which the plan is tested to find out whether it is appropriate to apply it
to the project. Moreover, this phase is used to assess project risks that are related to
programming, human and material factors. This phase is followed by the requirements of
collection and analysis. Through this phase, the requirements are gathered by contacting
customers, then analyzed based on customers' decisions whether such requirements fulfill the
system objectives or not (taking into account the existing risks). The designing phase comes
after the requirement phase. Here, the system is primarily designed in papers with algorithms
and diagrams showing system progress. In this phase, the design is also tested to make sure of
its appropriateness to the requirements. The system representation phase follows all the
previous phases. This phase is an implementation for the design of computer devices
according to certain specifications shown in the plan. In addition, the implemented
programming parts are tested for the purpose of assuring their appropriate application. The
integration phase immediately follows the system representation phase. This phase is
important, as all implemented programming parts are integrated and tested for two purposes.
The first one is to ensure that they are free of any faults and the second is to decide whether
they fulfill all system requirements. This phase should be completely implemented before
loading the system for customers. The last phase is spreading and loading the system on
customer's devices. This phase is one of the most critical and important phases and should be
considered according to plan and risks analysis. [12][9]
The hybrid model is characterized by its appropriateness to all small, medium and large
systems and its flexibility in this model, one can start with any phase, whether planning,
requirements collection and analysis, designing, or programming representation in
accordance with the system type and complexity.
Fig. 2 Best practices for combining automated and manual testing
There are several factors that can influence the effectiveness of combining automated and
manual testing. Here are some of the most commonly cited factors:
1. Test case selection: The effectiveness of combining automated and manual testing
depends on selecting the right test cases for automation and manual testing based on
their complexity, importance, and business criticality. [16]
8. Test feedback loop: The effectiveness of combining automated and manual testing
depends on establishing a feedback loop between automation and manual testing to
ensure that the testing results are shared and acted upon. [20]
CHAPTER 3
METHODOLOGY
The methodology outlines the procedures and methods that was used to design and
implement a hybrid software testing model. The research design considered for this study is a
mixed-method approach that incorporates both quantitative and qualitative research methods.
Fifteen (15) respondents were interviewed using Google Hangout, WhatsApp, Stack and
Trello via chat while ten (10) were engaged in a face-to-face interview using an open-ended
questionnaire.
REFERENCES: