Introduction to Software and Software Testing

1. Software Overview:
  • A software is a collection of computer programs designed to perform specific tasks or functions.
2. Types of Software:
  • System Software:
    • Examples: Device drivers, Operating Systems, Servers, Utilities, etc.
    • Primarily manages computer hardware and provides a platform for other software to run.
  • Programming Software:
    • Examples: Compilers, Debuggers, Interpreters, etc.
    • Aids developers in creating, testing, and debugging software applications.
  • Application Software:
    • Examples: Web Applications, Mobile Apps, Desktop Applications, etc.
    • Directly serves the end-users by performing specific tasks or providing services.
3. X Bank Software Development:
  • X Bank (company) collaborates with an IT company for software development.
  • Development phases: Develop, Test, Deliver.
  • The goal is to deliver a fully functional software product tailored to X Bank's needs.
4. Software Testing:
  • Definition:
    • Part of the software development process.
    • Activity to detect and identify defects in the software.
    • Objective: Release a quality product to the client.
  • Software Quality:
    • Quality is defined as justification of all the requirements of a customer in a product. 
    • Quality is not defined in the product. It is defined in the customer`s mind.
      • Characteristics:
        • Bug-free.
        • Delivered on time.
        • Within budget.
        • Meets requirements and/or expectations.
        • Maintainable.
5. Project vs. Product:
  • Project:
    • Developed for a specific customer based on their requirements.
  • Product:
    • Developed for multiple customers based on market requirements.
6. Error, Bug/Defect, and Failure:
  • Error:
    • Human action that produces an incorrect result.
  • Bug/Defect:
    • Flaw in the software that causes it to behave unexpectedly.
  • Failure:
    • Occurs when the software does not perform as expected in a specific environment or situation.
7. Reasons for Software Bugs:
  • Miscommunication or no communication.
  • Software complexity.
  • Programming errors.
  • Changing requirements.
  • Lack of skilled testers.
8. Why do we need testing?
  • Ensure that software is bug free.
  • Ensure that system meets customer requirements and software specifications.
  • Ensure that system meets end user expectations.
  • Fixing the bugs identified after release is more expensive.