Skip to main content

Application testing in different software development models

Software development primarily follows either Agile methodology or the Waterfall model. The model that you follow affects how you test the applications that you build.

The Waterfall model

In the Waterfall model, software development happens in a sequential fashion, through various phases. Testing follows the same pattern, in which different testing activities occur in different phases:

  • Analysis of requirements and the filling of any feature gaps happens in the Requirements Analysis phase.
  • Developing use cases and linking them to requirements occurs in the Design phase.
  • Authoring test cases for different types of testing occurs in the Development phase.
  • Executing test cases for both functional and regression testing happens in the Testing phase

An important aspect of the Waterfall model is that for most projects, a separate team of experts perform the testing. The test team interacts with relevant stakeholders, such as developers and product owners, in the process of performing their tasks.

The majority of testing happens upon completion of development. Therefore, any defects or issues identified in the Testing phase can cause a lot of rework and regression testing. 

 Check your knowledge with the following interaction:

The Agile model

In Agile methodology, software development happens in an iterative and incremental fashion. Unlike the Waterfall model, a piece of working software is produced in every iteration of the application.

The most important aspect to note is that in an Agile process, testing is not a separate phase. Instead, testing occurs simultaneously with development throughout the application development life cycle, and the testers and developers work together. Testing happens with every iteration of the application, and involves the following processes:

  • Test planning
  • Test authoring
  • Functional testing
  • Regression testing
  • Acceptance testing

The key to Agile testing is continuous testing - continuously testing the application being developed in the all phases of the development life cycle and executing automated tests as part of the software delivery pipeline. This continuous testing helps developers obtain early feedback on business risks and issues with the application.

Image depicts the key for agile testing which is Continuous Testing

An important concept in Agile testing is that test cases are authored along with the requirements. In this way, testing drives development. Requirements are converted to test cases and are run before the software is developed. Tests fail since the software is not ready yet. During the Development phase, software is repeatedly tested against the test cases, and development continues till all the test cases pass. This process is called Test-Driven development, which is an effective method to ensure requirements are fully covered.

During each iteration of an application developed incrementally, it is important to perform the following tasks: 

  1. Plan, author, and review the tests needed within the scope of the current iteration. 
  2. Run the tests planned for the new functionality of the current iteration:

    - At the Story level (Unit and integration)
    - At the Sprint level (Integration and end-to-end)
    - At the level of non-functional tests
     
  3. Execute regression test cases to ensure existing functionality works correctly. 
  4. Automate current iteration tests and merge them into a common repository for continuous testing in daily builds (CI/CT). 

 Check your knowledge with the following interaction:


This Topic is available in the following Module:

If you are having problems with your training, please review the Pega Academy Support FAQs.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Academy has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice