Skip to content

Instantly share code, notes, and snippets.

@muslemomar
Created May 6, 2024 13:16
Show Gist options
  • Save muslemomar/81153f6e17ea28554adfbb3493bfb1e1 to your computer and use it in GitHub Desktop.
Save muslemomar/81153f6e17ea28554adfbb3493bfb1e1 to your computer and use it in GitHub Desktop.
  1. List four types of tests commonly used in software development.
  2. Explain the difference between unit tests, integration tests, and end-to-end tests.
  3. Explain the concept of TDD and discuss its advantages and disadvantages.
  4. Why is testing considered crucial in software development.
  5. What's the difference between manual testing and automated testing.
  6. Why is integrating testing into CI/CD beneficial for software development?
  7. What are some common types of non-functional tests? How do these tests contribute to the overall quality and reliability of a software system?
@r0deo
Copy link

r0deo commented May 6, 2024

zhin, Amal, Koshyar, Ali, Barham

  1. here we have : unit test, functional testing, Integration tests, Regression Testing
  2. unit tests is like a function that test a specific task and operation in the project, and integration It tests the interactions between various components to ensure they integrate correctly, and end to end tests checks if the user login is successfully performed
  3. Test-Driven Development (TDD) is a software development approach where tests are written before the actual code implementation.
    Advantages: 1.Faster Feedback Loop 2. Improved Code Quality 3.Documentation
    disadvantages: 1.Upfront Investment 2. Learning Curve 3.Maintenance Overhead
    4.Testing is crucial in software development because it helps identify and prevent bugs, ensures that the software meets requirements, improves code quality, and boosts user confidence in the product's reliability and performance. Essentially, it helps catch issues early, reduces the risk of defects in production, and ultimately contributes to a better user experience.

5.Manual testing involves humans executing test cases by hand, while automated testing involves using software tools to execute test cases automatically. Manual testing is more flexible but time-consuming and prone to human error, while automated testing is faster, repeatable, and scalable but requires upfront investment in tools and scripts.

6.Early Issue Detection: Finds problems early.
Quick Feedback: Provides rapid notifications.
Better Code Quality: Maintains high standards.
Confident Releases: Increases trust in deployments.
Smooth Deployment: Reduces chances of deployment failures.
Continuous Improvement: Helps refine both code and processes.
Shift-Left Testing: Encourages testing early in development.

7.For example, using performance testing is a type of non-functional testing that lets you check the performance of an application under heavy traffic or user load. Also, it helps ensure that your application is stable and can handle heavy loads.
common types: 1. Compatibility Testing 2. Performance Testing 3. Security Testing

@Mohammed-Nazar
Copy link

Mohammed Nazar, Zainab Al-Najjar, Didam Goran, Payam R.
1.
a. Unit Tests
b. Integration Tests
c. Regression Tests
d. Acceptance Tests

a. Unit Tests: These check if small parts of the code (like functions or classes) work correctly on their own.
b. Integration Tests: They ensure that different parts of the code work well together as a whole system.
c. End-to-End Tests: These test the entire application from start to finish, just like how a real user would use it.

Test-Driven Development (TDD) means writing tests before writing the actual code.

Advantages:
Better Code Quality: Helps in writing cleaner and more maintainable code.
Faster Feedback: Catches bugs early, saving time and effort in the long run.
Disadvantages:
Initial Time Investment: Requires extra time upfront to write tests first.
Complex for Existing Code: Harder to implement in projects with existing code.

  1. Testing is crucial in software development because it helps find and fix mistakes early, ensuring that the software works well, performs efficiently, and satisfies users. It saves time and money, builds trust, and makes it easier to make improvements in the future.

  2. Manual Testing:
    Done by humans.
    Testers click around and check if everything works as expected.
    Slower, more subjective, and prone to human error.

Automated Testing:
Done by machines.
Tests are written in code to automatically check the software.
Faster, more reliable, and good for repetitive tasks.

  1. Integrating testing into CI/CD is beneficial because it catches bugs early, provides quick feedback to developers, ensures code quality before deployment, streamlines the deployment process, helps in continuous improvement, and increases development efficiency.

  2. Common non-functional tests include:
    Performance: Checks how fast the software is and how well it handles heavy use.
    Security: Makes sure the software is safe from unauthorized access and data breaches.
    Usability: Tests how easy and intuitive the software is to use.
    Reliability: Ensures the software works consistently over time without crashing.
    Compatibility: Checks if the software works on different devices and systems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment