Lecture Notes on Test Environments

Jul 25, 2024

Notes on Environments for Testing

Overview

  • Focus on test environments in the context of CI/CD process.
  • CI/CD: Continuous Integration and Continuous Delivery, allowing for constant changes and deliveries to end users.
  • Understanding environments is crucial in the CI/CD process.

What is an Environment?

  • Set of software and hardware to run and deploy applications.
  • Deployment: Running code in an environment, e.g., on local or remote servers.

Types of Environments

1. Local Environment

  • Deployed locally (e.g., on a developer's computer).
  • Primarily used for unit testing or component testing.
  • Tools: Docker commonly used for local deployment.
  • Process for Deployment:
    • Clone code from remote GitHub repository.
    • Use Docker to deploy locally.
  • Testing: Possible to conduct functionality testing locally without internet.

2. Development (Dev) Environment

  • A sandbox for developers to test working functionality.
  • Can be tested by testers if budget constraints exist.
  • Tools: Utilizes Jenkins for automation of deployment.
  • Process: Automate by entering parameters and running builds.
  • Connection: Typically accessed with dev prefix in the URL.

3. QA Environment

  • Main environment for conducting tests.
  • Tests are conducted after developers confirm functionality.
  • Process: Conduct smoke testing, functional testing, critical passes.
  • Communication: Separate chats for testers to manage availability of QA stands.

4. Stage Environment

  • Conduct regression testing to ensure stability and that bug fixes do not affect other functionalities.
  • Process: No code changes except for fixing critical bugs.
  • Accessibility: Accessed with stage.test.com URL.

5. UAT (User Acceptance Testing)

  • Not universally implemented, but can be separate from production.
  • Groups of users can test the application functionality before release.

6. Production Environment

  • The live environment where the end user interacts with the application.
  • Minimal testing should occur here (smoke tests, checks for new functionalities).
  • Best Practices: Avoid repeating the full testing cycle in production.

Importance of Understanding Environments

  • Knowledge of test environments is essential for success in testing roles.
  • Helps in communicating effectively within teams and understanding deployment processes.
  • Provides the ability to adapt and troubleshoot as needed in different environments.

Conclusion

  • Understanding environments is critical in testing processes and for working in CI/CD.
  • Future videos planned for deeper dives into CI/CD processes and self-deployment configuration.