Testing in SDLC? No problem, but what is the SDLC exactly?
SDLC is nothing other than the Software Development Lifecycle.
The SDLC describes the types of activities related to another logically and chronologically and includes the test levels and test types.
Why is that important in Software Testing?
Tester plays an important role in SDLC and should be familiar with that, because:
- Every testing activity relates to every development activity
- Each test level has the test objectives specific to this level
- Test analysis and design for a given test level begin during the corresponding development activity
- Testers takes place in discussions to define and improve requirements and design, and are involved in reviewing work products
Great, but what does it mean in practice?
Let’s take a look for an example below,
Let’s imagine the situation in a big company, the team is working on some software. After the team gets the stakeholder’s requirements, the development team starts to work on the code. In the meantime, our tester X has to start to analyze and design the tests.
Moreover, he knows that every test level has the test objectives to this level, so he is focused to plan and do his tasks. After some time, the team needs to make a review to make sure, the software is working correctly. After this time they can continue the work with some changes or without them (if the software is working properly, and any defects weren’t detected).
Thanks to it, the software can be created easier for all the team.
Test activities ought to start in the early stages of the lifecycle (adhering to the testing principle of shift left), no matter which SDLC model is chosen.
ISTQB Foundation level syllabus classifies common software development lifecycle models as follows:
- Sequential development models
- Iterative and incremental development models
The sequential development model assumes making specific development activities as linear, sequential flow activities. The consequence of adopting this model is the specific phase cannot start before the previous phase will finish. In theory, there is no overlap of phases, but in practice, it is beneficial to have early feedback from the following phase.
Sequential development models deliver software that contains the complete set of features, but typically require months or years for delivery to stakeholders and users.
Incremental development includes establishing requirements, designing, building, and testing a system in pieces. That means, that the software’s features grow incrementally. The size of these feature increments varies, with some methods having larger pieces and some smaller pieces. The feature increments can be really small.
For example, a single change to a user interface screen or a new query option.
Iterative development occurs while groups of features are specified, designed, built, and tested together in a series of cycles, often of a fixed duration. Iteration may include changes to features developed in earlier iterations, along with changes in the project scope.
Every iteration delivers the working software which is a growing subset of the overall set of features until the final software is delivered or the development process is stopped.
Let’s look on the story as an example.
The developer’s team works on the huge feature of the airline website, which allows the user to log into the account and manage the flight information. It’s the one feature, but includes a lot of groups of small features, like login, edit the information, save the information, get the email confirmation, log out, etc.
So as we can see, the group of these small features will release in the incremental model, but the whole big feature in the iterative model.
Let’s talk about the most important sequential, and iterative, and incremental development models.
Let’s start from the sequential development models.
The Waterfall model shows, the development activities, for example, requirements analysis, design, coding, testing, are completed one after one. In this model, test activities only happen after all other development activities have been completed.
The other model from this category, unlike the Waterfall model, is the V-model, which integrates the test process throughout the development process, implementing the principle of early testing. Further, the V-model includes test levels associated with each corresponding development phase, which supports the early testing. In this model, the test execution associated with each test level proceed sequentially, but in some cases, overlapping can take place.
Alright, we know now, how the sequential development models work.
So it’s time to take a look at the iterative and incremental development models.
The first model, which we ought to talk about is the RUP (Rational Unified Process) Model, which describes that each iteration tends to be relatively long (e.g., two to three months). The feature increments are large, such as two or three groups of related features.
The next model, which is really important is Scrum.
It shows that each iteration tends to be relatively short (e.g., hours, days, or a few weeks). The feature increments are small, such as a few improvements and/or two or three new features.
The example of Scrum using can be exploratory testing or the pressure on automation, especially on the regression tests, in which the number usually grows up with each subsequent iteration.
We cannot forget about the Kanban model.
It is implementing with or without fixed-length iterations. It can deliver either a single reinforcement or feature upon competition or can group features to deploy at once.
For example, we can use Kanban in the automotive industry where the products are serially produced.
The last model is the Spiral model, which involves creating experimental increments. Some of which may be heavily reworked or even abandoned in subsequent development work.
For example, components or systems, which use the above models very often include overlapped and repeated test levels in SDLC. In an ideal case, every feature is tested on many levels, getting closer to the final release. In some cases, teams use the CD (Continous Delivery), which uses automation on many testing levels as part of software delivery.
As we can see, it’s really important to have a knowledge of what is the SDLC, why the tester plays important role in SDLC, and what kind of models the SDLC includes.
I hope you enjoyed the reading and saw something interesting in this article.
I’ll write about the SDLC models in context in the next post 🙂
The part content of this post was based on ISTQB FL Syllabus (v. 2018).