The ABCs of Software Development: Your Beginner’s Guide to SDLC and Testing Principles

Ecemozsert
Orion Innovation techClub
5 min readMay 2, 2024

In this article, I want to talk about SDLC and Testing Principles. Now sit comfortably and fasten your seat belts, I will take you on a beautiful journey. Imagine you’re building a LEGO masterpiece. You’ve got all the colorful bricks laid out, a picture in your intellect of the castle or spaceship you’re around to form. But hold on a moment! Before you start stacking those blocks. Wouldn’t it be better to have a plan before doing anything before you start? This is where the Software Development Life Cycle (SDLC) comes into play. I will talk about Testing Principles after presenting you with a brief introduction to SDLC.

What is SDLC?

The Software Development Life Cycle (SDLC) is utilized by the software industry to design, develop, and test the quality of projects. It primarily aims to present a high-quality model project to customers within the allocated budget and time frame. Both time and budget are crucial considerations for the lifecycle as we intend to deliver projects per customer expectations. This approach helps mitigate potential risks for the customer. Let's talk about the phases of the SLDC.

Figure 1

In SDLC, there are six consecutive phases.[1]

1- Planning and Requirements Analysis

The Planning and Requirements Analysis phase is the initial and most crucial step in the Software Development Life Cycle (SDLC). During this phase, we meticulously plan time and budget, estimate resources, schedule the tasks, and facilitate discussions between users and the project team to determine requirements, including user-end needs. In this step, requirements analysis is the most fundamental stage of SDLC. It requires skills and experience in software engineering to recognize incomplete. [2]

2- Design

During the Design phase, The Design Documentation Specification (DDS) undergoes review by stakeholders, considering factors such as risks, time, budget, and design modularity. Among these categories, the best architectural approach is selected and documented in the Design Documentation Specification (DDS).[3]

3-Development

During the Development phase, developers begin writing the code using the programming language utilized within their organization. This step represents the actual implementation of the software product.

4- Testing

During the Testing phase, the software product is deployed in multiple test environments to check the functionality of it. The testing team may find errors or bugs, and then relay those to the development team for fixes.

5- Deployment

During the Deployment phase, any bugs and errors identified in the previous testing phase are fixed. Then, a tested copy is taken and used like a user in the final control phase. This step enables us to view the software from the user’s perspective. It’s time to deploy the software.

6-Maintenance

After the completion of all previous inspection stages, now is the time to package the product and present it to the customer during the Maintenance phase.

Testing Principles

We utilize test principles when doing software tests. It’s facilitated to ease bug finding, testability, repeatability, cost, and time-saving.

Figure 2 [4]

Test principles are examined under 7 subheadings.[4]

1- Testing shows the presence of defects

Testing reveals the presence of defects. In this step, you can identify errors that exist in the project, not their absence. It’s helpful to see errors or bugs.

2-Exhaustive testing is impossible

Exhaustive testing is impossible. You cannot test all possible scenarios. For example, with an extensive project, some issues might get overlooked, making it challenging to ensure complete test coverage.

3-Early testing

Early testing is beneficial because finding errors at the beginning of the project can save time and costs. Problem identification and fixing issues early in the development cycle ease the management of the product and minimize risks, resulting in a more stable and reliable product.

4-Defects clustering

Clustering errors at this stage will make our job easier. We can think like this: When we look at it from a big window, there will be a lot of errors, but when we divide it into rooms, we can deal with all of them one by one and find a solution more easily. For example, the Pareto Principle, also known as the 80/20 rule, can be applied here. This principle suggests that roughly 80% of the effects come from 20% of the causes, enabling us to prioritize the most critical errors first, making the testing process more efficient and effective.

5-Pesticide paradox

At this stage, we run the tests multiple times. This repetition is essential because tests affecting each other may lead to errors. For example, if an error does not occur in five trials but occurs in the sixth one, we must increase the number of tests to detect the error. This redundancy makes it more difficult for errors to remain undetected.

For example, consider the ‘Pesticide Paradox.’ Insects might invade every single part of your house. When you decide to spray the house with pesticides to get rid of them, do you only spray the areas you see the bugs or do you treat the entire house with pesticide multiple times? Similarly, by repeating tests, we ensure that all parts of the system are thoroughly examined, reducing the risk of undetected errors.

6-Testing is context-dependent

At this stage, each test has its unique data structure and software, indicating that each test is context-dependent and has its structure. For example, an e-commerce website may require different types of testing and approaches compared to an API application or a database reporting application.[5]

7-Absence of errors fallacy

Until we reach this stage in testing principles, our tests work smoothly 99 percent of the time, but we cannot claim error absence, as users may encounter test scenarios that cause issues we cannot predict.

Thank you for reading this far, I hope the information was useful. If you have any questions or would like to connect further, please feel free to reach out to me on LinkedIn.

Best wishes.

Ecem

References

[1] AWS, What is SDLC? — Software Development Lifecycle Explained — AWS (amazon.com)

[2] https://productcoalition.com/a-comprehensive-guide-to-the-software-development-life-cycle-sdlc-15b7892e1d44?source

[3] Software Development Life Cycle (SDLC) Phases & Models (guru99.com)

[4] Software Testing Principles - javatpoint

[5] https://www.boxuk.com/insight/the-seven-principles-of-testing/

--

--