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?
@ibrahimmuhaned
Copy link

Aland rebwar || Mawj M.Basheer || vinos sarhad || ibrahim muhaned

1-List four types of tests commonly used in software development.?

a-Unit Tests: These test individual components or units of code in isolation, typically at the function or method level.
b-Integration Tests: These test how different units of code work together as a group. They ensure that integrated units function
correctly as a whole.
c-End-to-End Tests: These test the entire software application from start to finish, simulating real user scenarios. They validate the
system's behavior and interactions with external dependencies.
d-Regression Tests**: These ensure that previously developed and tested software still performs correctly after changes or updates.


2-Explain the difference between unit tests, integration tests, and end-to-end tests.?

a-Unit Tests: Focus on testing individual components in isolation. They're typically fast to execute and help identify bugs early in the
development process.
b-Integration Tests: Verify interactions between integrated components or modules. They ensure that the integrated units work together
correctly.
c-End-to-End Tests: Test the entire application flow, simulating real user scenarios. They validate the behavior of the system as a whole, including its interactions with external dependencies like databases or APIs.


3-Explain the concept of TDD and discuss its advantages and disadvantages.?

*Advantages:
- Improved Code Quality: TDD encourages writing modular and testable code.
-Fewer Bugs: Since tests are written upfront, the likelihood of introducing bugs decreases.
-Design Clarity: TDD promotes clearer code design and better understanding of requirements.
*Disadvantages:
-Time-consuming: Initially, it may seem slower because developers need to write tests upfront.
-Over-testing: There's a risk of writing too many tests, leading to maintenance overhead.


4-Why is testing considered crucial in software development.?

-Testing is crucial because it:
a-Identifies Bugs Early: Detecting and fixing bugs early reduces the cost of development.
b-Ensures Reliability: Testing ensures that the software behaves as expected and meets the user's requirements.
c-Maintains Quality: Testing helps maintain the quality and stability of the software product over time.


5-What's the difference between manual testing and automated testing.?

-Manual Testing: Involves human testers executing test cases manually without automation tools. It's subjective, time-consuming, and
error-prone.

-Automated Testing: Involves using automation tools to execute test cases. It's faster, repeatable, and less error-prone.


6-Why is integrating testing into CI/CD beneficial for software development?

-Integrating testing into Continuous Integration/Continuous Deployment (CI/CD) pipelines offers several benefits:
a-Early Detection of Issues: Automated tests run with each code change, catching issues early in the development cycle.
b-Faster Feedback Loop: Developers receive immediate feedback on the impact of their changes.
c-Improved Code Quality: Continuous testing helps maintain code quality and stability across releases.


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?

-Non-functional testing : is a software testing type that tests the non-functional aspects of an application, such as usability, performance, scalability, reliability, security, compatibility, and more. In contrast, functional testing focuses on testing its functional behavior.

-Non functional testing is of crucial importance in the software development and testing process. While functional testing ensures that the software meets its intended functionality, non-functional testing validates other critical aspects of the system.

Non functional requirements were not given proper importance in the initial test cycles, but now it has changed for good.

Non functional testing is crucial to identify all the performance and security-related issues. It focuses on the non-functional aspects of the application. 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.


@HalwestEast
Copy link

HalwestEast commented May 6, 2024

  1. Unit testing.
    Integration testing.
    System testing.
    Acceptance testing.

  2. Unit testing is a software testing process for testing specific units, components, or software elements. integration testing, which is when different software components and modules are combined and tested as a group to make sure everything is ready for the next level. End-to-end testing is a software testing technique that verifies the functionality and performance of an entire software application from start to finish by simulating real-world user scenarios and replicating live data.

  3. It is a software development approach which is about typing the test function before the real code. it helps to improve code quality and it helps with refactorization. it can take too much time.

  4. It ensures that the app is works the way intended and avoids bugs. It confirms that software meets specified requirements and user expectations.

  5. Manual testing involves humans testing and interacting with a software application or product to identify issues, while automated testing uses computer programs, applications, or scripts to write pre-defined tests and run them programmatically

  6. Because you will have faster information about how your code is running making it easier and faster to spot the bugs and fix them, which make integrating of new feature much easier and reliable

  7. Non-Functional Testing is defined as a type of Software testing to check non-functional aspects (performance, usability, reliability) of a software application. It is designed to test the readiness of a system as per nonfunctional parameters which are never addressed by functional testing

Halwest, Dawood, Hanan Isalm, SHvan, Zainab Mirza

@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