Skip to content

Latest commit

 

History

History
135 lines (81 loc) · 7.19 KB

acceptancetesting.md

File metadata and controls

135 lines (81 loc) · 7.19 KB

🎯 4. Acceptance Testing

Acceptance Testing Badge

Acceptance Testing is the final phase of software testing, performed to determine whether a system meets the acceptance criteria and is ready for deployment. This testing is usually conducted in a real-world environment by the end-users or stakeholders to ensure that the software fulfills their requirements and is fit for use.

📝 Example Scenario:

For an e-commerce platform, acceptance testing might involve real customers using the website to complete various transactions, such as searching for products, adding items to the cart, and making a payment. Their feedback will help determine if the application is ready for launch.


Phases of Acceptance Testing

  1. 🛠️ Alpha Testing

    • Definition: Alpha testing is an internal testing phase conducted by developers and QA teams in a controlled environment. It aims to identify bugs before releasing the software to external users.
    • Example: After developing a new feature in a mobile app, the development team tests it to ensure functionality, usability, and overall performance. They might fix issues before the app is shared with a limited group of users.
  2. 🔬 Beta Testing

    • Definition: Beta testing is the phase where the product is released to a limited external audience to gather feedback and identify any remaining issues. This helps simulate real-world usage.
    • Example: A software company releases a beta version of its application to a selected group of users who provide feedback on usability, performance, and any bugs they encounter. This helps the team make final adjustments before the official launch.

Non-Functional Testing Areas

Acceptance testing also includes various non-functional testing areas to ensure that the software meets performance and usability standards.

  • 🚦 Load Testing

    • Definition: Evaluates how the system behaves under expected user loads.
    • Example: Testing an online booking system during peak hours to see if it can handle thousands of simultaneous users without crashing.
  • 💥 Stress Testing

    • Definition: Tests the system's robustness by pushing it beyond its operational limits to see how it reacts under extreme conditions.
    • Example: Intentionally overloading a web server to determine its breaking point and assess recovery capabilities.
  • 🕐 Soak Testing

    • Definition: Determines if the system can handle a significant load over an extended period.
    • Example: Running a web application with continuous traffic for 72 hours to check for memory leaks or degradation in performance.
  • 🌐 Accessibility Testing

    • Definition: Ensures that the software is usable by people with disabilities.
    • Example: Verifying that a website is navigable using a screen reader for visually impaired users.
  • 📈 Scalability Testing

    • Definition: Tests the system's ability to scale up or down according to user load.
    • Example: Evaluating an e-commerce site to see how it handles increasing traffic during a sales event and whether it can quickly adapt to sudden spikes.

Usable Tools for Acceptance Testing

Selenium

  • Selenium: For automated functional testing.

JMeter

  • JMeter: For load and performance testing.

Postman

  • Postman: For API testing.

Axe

  • Axe: For accessibility testing.

Apache Bench

  • Apache Bench: For basic load testing.

Additional focus areas

🛡️ Additional Focus Areas

🔐 Security Testing

Security Testing Badge

Security testing is a process to identify vulnerabilities, threats, and risks in a software application and ensure that the data and resources of the application are protected from potential intruders. Below are the specific areas of focus within security testing.


🔑 Authentication

Authentication Badge

  • Definition: Authentication verifies whether a user is who they claim to be by validating their credentials (e.g., username and password).
  • Example: When a user logs into a banking app, their entered username and password are verified against the database to grant access.

📝 Authorization/Permission

Authorization Badge

  • Definition: Authorization determines what an authenticated user is allowed to do within the application, specifying permissions based on user roles.
  • Example: In a project management tool, a standard user can only view tasks, while an admin can create, edit, or delete tasks.

🍪 Cookies Testing

Cookies Testing Badge

  • Definition: Testing how cookies are set, managed, and secured to ensure that sensitive information is not exposed.
  • Example: A web application stores user session data in cookies. Testing ensures that cookies are marked as secure and HttpOnly, preventing access via JavaScript.

🔐 Session Testing

Session Testing Badge

  • Definition: Session testing checks how session management is handled, including session timeouts and session ID security.
  • Example: Testing a web application to ensure that after 30 minutes of inactivity, the session automatically logs out the user to prevent unauthorized access.

🔑 Encryption/Decryption

Encryption Badge

  • Definition: Testing the encryption mechanisms used to protect sensitive data both in transit and at rest.
  • Example: Verifying that user passwords are hashed and salted before being stored in the database to ensure they cannot be easily retrieved if compromised.

🛡️ Penetration (Pen) Testing

Penetration Testing Badge

  • Definition: Penetration testing simulates cyberattacks on the application to identify vulnerabilities that an attacker could exploit.
  • Example: A security team performs a simulated attack on a web application, attempting to exploit known vulnerabilities such as SQL injection or cross-site scripting (XSS) to assess the security posture of the application.

Summary

Each focus area in security testing plays a critical role in ensuring the integrity, confidentiality, and availability of the software. Implementing comprehensive security measures will help protect the application and its users from potential threats.