Testing in The Software Life Cycle - Lesson 2
Testing in The Software Life Cycle - Lesson 2
Development
Lifecycle
Software Development Models
Software Development Models are different processes or methodologies that are used for developing
software projects. These models specify the different stages of the development process and the
order in which they are carried out. The selection of the model has a high impact on the testing that is
carried out, as it will define the what, where, and when of the planned testing, influence regression
testing, and largely determine which test techniques to use.
The choice of which model to use will depend on the specific needs and requirements of the project,
as well as the preferences and expertise of the development team
(SDLC) approaches
1. Waterfall Model: This is a linear and sequential approach where each phase of the SDLC
(requirements, design, implementation, testing, deployment, and maintenance) is completed before
moving on to the next phase. It is often used for projects with well-defined requirements and stable
environments.
2. Agile Model: Agile methodologies, such as Scrum and Kanban, emphasize iterative and
incremental development. The project is divided into small iterations called sprints, with frequent
feedback and adaptation. Agile approaches prioritize flexibility, collaboration, and responsiveness to
change.
3. V-Model: The V-Model is an extension of the waterfall model, where each phase of the
development process is associated with a corresponding testing phase. It emphasizes the importance
of early test planning and verification. The V-Model ensures that each development phase has a
corresponding test phase, which helps in maintaining quality.
Software Development Models
Waterfall model
Through all development stages (analysis, design, coding, testing, deployment), the process moves
in a cascade mode. Each stage has concrete deliverables and is strictly documented. The next stage
cannot start before the previous one is fully completed. Thus, for example, software requirements
cannot be re-evaluated further in development. There is also no ability to see and try software until
the last development stage is finished, which results in high project risks and unpredictable project
results. Testing is often rushed, and errors are costly to fix.
Use cases:
● Simple small or mid-sized projects with clearly defined and unchanging requirements (small
company website development).
● Projects with the need for stricter control, predictable budget and timelines (e.g., governmental
projects).
● Projects that must adhere to multiple rules and regulations (healthcare projects).
● Projects where a well-known technology stack and tools are used.
Software Development Models
Agile model
The rest of the SDLC models we’ve chosen fall under the umbrella of Agile. Nowadays, more than
70% of organizations employ this or that Agile approach in their IT projects. In general, at the heart of
Agile are iterative development, intensive communication, and early customer feedback.
Each Agile iteration usually takes several weeks and delivers a complete working software version.
The models of this group put more focus on delivering a functioning part of the application quickly.
They pay less attention to detailed software documentation (detailed requirement specification,
detailed architecture description), and more to software testing activities. This fosters quick
development but considerably prolongs software transfer to the support team as well as makes its
maintenance more complicated as more time is spent to find the problem when there's no detailed
software description.
Agile is about working in close collaboration both across the team and with the customers. At the end
of each iteration, stakeholders review the development progress and re-evaluate the priority of tasks
for the future iteration to increase the return on investment (ROI) and ensure alignment with user
needs and business goals.
Software Development Models
Agile model
Accordingly, frequent releases are characteristic to the Agile models. They also allow for continuous
software improvement with easy fixes and changes, quick updates, and feature addition, and help to
deliver applications that satisfy users’ needs better. However, the lack of detailed planning and openness
to changes make it difficult to accurately estimate budget, time and people required for the project.
https://agilemanifesto.org/
Use cases:
● Practically any startup initiatives, when end users’ early feedback is required.
● Most of mid-sized projects in custom software development where business requirements cannot
be confidently translated to detailed software requirements.
● Large projects that are easy to divide into small functional parts and can be developed
incrementally over each iteration.
● Agile comes in different flavors. Today, its most common subtypes are Scrum, Extreme
Programming, and Kanban
Software Development Models
Agile model - Scrum
The V-model is a software development model that follows a sequential design process, similar to the waterfall model. It has
a testing phase parallel to each development phase, which makes it known as the Validation or Verification Model. The V-
model contains Verification phases on one side of the Validation phases on the other side. It should be used for small to
medium-sized projects where requirements are clearly defined and fixed. It works well for small projects where requirements
are easily understood.
The V-model has different phases of Verification Phase and Validation Phase. Verification phase has various stages,
including business requirement analysis, system design, architecture design, module design, and coding phase. Validation
phase has stages like unit testing, integration testing, system testing, and acceptance testing. Testing starts in early stages of
product development, which avoids downward flow of defects and helps to find the defects in the early stages.
The V-model has advantages over the waterfall model, which include proactive defect tracking, and testing methods like
planning, test designing happens well before coding. This saves a lot of time, hence a higher chance of success over the
waterfall model.
Applying the V-model’s clearly defined steps to small increments of software development allows for testing earlier in the
process. Catching bugs or errors as early as possible increases the speed of the development effort, cuts costs, and
improves overall quality. The approach dovetails well with the continuous integration and continuous deployment
methodology.
The V-model is a style of software development that splits the process into three parts: design, implementation, and
integration and qualification testing. The letter V is a symbolic representation of the development flow. In designing software
for complex systems, developers look for flexibility, speed, and the ability to make improvements to the code.
Software Development Models
Test Levels
Unit testing:
A Unit is a smallest testable portion of system or application which can be compiled, liked,
loaded, and executed. This kind of testing helps to test each module separately.
The aim is to test each part of the software by separating it. It checks that component are
fulfilling functionalities or not. This kind of testing is performed by developers.
Integration testing:
Integration means combining. For Example, In this testing phase, different software modules are
combined and tested as a group to make sure that integrated system is ready for system testing.
Integrating testing checks the data flow from one module to other modules. This kind of testing is
performed by testers.
Software Development Models
Test Levels
System Testing
System testing most often the final test to verify that the system meets the specification. It
evaluates both functional and non-functional need for the testing.
Acceptance testing:
Software Testing Type is a classification of different testing activities into categories, each
having, a defined test objective, test strategy, and test deliverables. The goal of having a
testing type is to validate the Application Under Test (AUT) for the defined Test Objective.
For instance, the goal of Accessibility testing is to validate the AUT to be accessible by
disabled people. So, if your Software solution must be disabled friendly, you check it against
Accessibility Test Cases.