Skip to main content

SDLC & STLC

Software Development Life Cycle, or Software Development Process, defines the steps/ stages/ phases in the building of software.
There are various kinds of software development models like:
  • Waterfall model
  • Spiral model
  • Iterative and incremental development (like ‘Unified Process’ and ‘Rational Unified Process’)
  • Agile development (like ‘Extreme Programming’ and ‘Scrum’)
Models are evolving with time and the development life cycle can vary significantly from one model to the other. It is beyond the scope of this particular article to discuss each model. However, each model comprises of all or some of the following phases/ activities/ tasks.
SDLC IN SUMMARY
  • Project Planning
  • Requirements Development
  • Estimation
  • Scheduling
  • Design
  • Coding
  • Test Build/Deployment
  • Unit Testing
  • Integration Testing
  • User Documentation
  • System Testing
  • Acceptance Testing
  • Production Build/Deployment
  • Release
  • Maintenance
SDLC IN DETAIL
  • Project Planning
    • Prepare
    • Review
    • Rework
    • Baseline
  • Requirements Development [Business Requirements and Software/Product Requirements]
    • Develop
    • Review
    • Rework
    • Baseline
  • Estimation [Size / Effort / Cost]
    • <same as the activities/tasks mentioned for Project Planning>
  • Scheduling
    • <same as the activities/tasks mentioned for Project Planning>
  • Designing [ High Level Design and Detail Design]
    • <same as the activities/tasks mentioned for Requirements Development>
  • Coding
    • Code
    • Review
    • Rework
    • Commit
    • Recode [if necessary] >> Review >> Rework >> Commit
  • Test Builds Preparation/Deployment
    • Build/Deployment Plan
      • Prepare
      • Review
      • Rework
      • Baseline
      • Revise [if necessary] >> Review >> Rework >> Baseline
    • Build/Deploy
  • Unit Testing
    • Test Plan
      • Prepare
      • Review
      • Rework
      • Baseline
      • Revise [if necessary] >> Review >> Rework >> Baseline
    • Test Cases/Scripts
      • Prepare
      • Review
      • Rework
      • Baseline
      • Execute
      • Revise [if necessary] >> Review >> Rework >> Baseline >> Execute
  • Integration Testing
    • <same as the activities/tasks mentioned for unit testing>
  • User Documentation
    • Prepare
    • Review
    • Rework
    • Baseline
    • Revise [if necessary] >> Review >> Rework >> Baseline
  • System Testing
    • <same as the activities/tasks mentioned for Unit Testing>
  • Acceptance Testing[ Internal Acceptance Test and External Acceptance Test]
    • <same as the activities/tasks mentioned for Unit Testing>
  • Production Build/Deployment
    • <same as the activities/tasks mentioned for Test Build/Deployment>
  • Release
    • Prepare
    • Review
    • Rework
    • Release
  • Maintenance
    • Recode [Enhance software / Fix bugs]
    • Retest
    • Redeploy
    • Rerelease
Notes:
  • The life cycle mentioned here is NOT set in stone and each phase does not necessarily have to be implemented in the order mentioned.
  • Though SDLC uses the term ‘Development’, it does not focus just on the coding tasks done by developers but incorporates the tasks of all stakeholders, including testers.
There may still be many other activities/ tasks which have not been specifically mentioned above, like Configuration Management. No matter what, it is essential that you clearly understand the software development life cycle your project is following. One issue that is widespread in many projects is that software testers are involved much later in the life cycle, due to which they lack visibility and authority (which ultimately compromises software quality).


Software Testing Life Cycle (STLC) defines the steps/ stages/ phases in testing of software. However, there is no fixed standard STLC in the world and it basically varies as per the following:
  • Software Development Life Cycle
  • Whims of the Management
Nevertheless, Software Testing Life Cycle, in general, comprises of the following phases:


Phase Activity Deliverables Necessity
Requirements/ Design Review You review the software requirements/ design (Well, if they exist.)
  • ‘Review Defect’ Reports
Curiosity
Test Planning Once you have gathered a general idea of what needs to be tested, you ‘plan’ for the tests.
  • Test Plan
  • Test Estimation
  • Test Schedule
Farsightedness
Test Designing You design/ detail your tests on the basis of detailed requirements/design of the software (sometimes, on the basis of your imagination).
  • Test Cases / Test Scripts /Test Data
  • Requirements Traceability Matrix
Creativity
Test Environment Setup You setup the test environment (server/ client/ network, etc) with the goal of replicating the end-users’ environment.
  • Test Environment
Rich company
Test Execution You execute your Test Cases/ Scripts in the Test Environment to see whether they pass.
  • Test Results (Incremental)
  • Defect Reports
Patience
Test Reporting You prepare various reports for various stakeholders.
  • Test Results (Final)
  • Test/ Defect Metrics
  • Test Closure Report
  • Who Worked Late & on Weekends (WWLW) Report [Depending on how fussy your Management is]
Diplomacy
Note that the STLC phases mentioned above do not necessarily have to be in the order listed; some phases can sometimes run in parallel (For instance, Test Designing and Test Execution). And, in extreme cases, the phases might also be reversed (For instance, when there is Cursing prior to Testing).
Interestingly, no matter how well-defined a Software Testing Life Cycle you have in your project or organization, there are chances that you will invariably witness the following widely-popular cycle:
  • Testing
  • Cursing
In this type of STLC, you skip phases like design review, test planning, etc – in the hope that the skipping will save you some time and/or cost [But, it never does].

Comments

Popular posts from this blog

Mobile Application Testing Checklist

1. DEVICE SPECIFIC CHECKS 1.1  Can the app be installed on the device? 1.2 Does the app behave as designed/desired if there is an incoming call? 1.3 Does the app behave as designed/desired if there is an incoming SMS? 1.4 Does the app behave as designed/desired if the charger is connected? 1.5 Does the app behave as designed/desired if the charger is disconnected? 1.6 Does the app behave as designed/desired if the device goes to sleeping mode 1.7 Does the app behave as designed/desired if the device resumes from sleeping mode 1.8  Does the app behave as designed/desired if the device resumes from lock screen? 1.9    Does the app behave as designed/desired if the device is tilted? 1.10  Does the app behave as designed/desired if the device is shaken? 1.11 Does the app behave as designed/desired if a local message is coming from another app (think   of: calendar reminders, to-do task etc.). 1.12 Does the app behave as designed/desired if a push message i...

Introduction to Apache JMeter

Apache JMeter is a great open source application with awesome testing abilities. Web Server is a platform which carries loads of numbers of applications and users, so that it is necessary to know that how does it works or performs means; how effective it is to handle simultaneous users or applications. For example; how the “Gmail” supporting server will perform when numbers of users simultaneous access the Gmail account – basically have to do performance testing using performance testing tools like JMeter, Loadrunner etc. To check the high performance of the application or server, do high performance testing using JMeter for exceptional results. Before understanding Overview of JMeter , let us have a look on three testing approach, Performance Test : This test provides the best possible performance of the system or application under a given configuration of infrastructure. Very fast, it also highlights the change need to be made before application goes into prod...

ERP Domain Knowledge

What is ERP ? ERP is an industry acronym for Enterprise Resource Planning. Broadly speaking, ERP refers to automation and integration of a company's core business to help them focus on effectiveness & simplified success.The Information Technology industry is renowned for its adoption of acronyms, which are often widely used, but not fully understood.  The term 'ERP' itself is not self-explanatory and refers to the business software that has been designed to record and manage your enterprise data. Main Purpose of ERP: The main objective of an ERP domain is to combine information and processes from all divisions of an organization and merge them to create a structured working system. It can either reside on a centrally placed server or on individual servers that are combined on a separate server. Use of ERP: ERP specifically describes software that is used to connect many aspects of a business together. One major use for ERP software is controlling a supply chain. Busine...