Module 1
Module 1
This module lays the groundwork for understanding the core concepts of software testing.
1. What is Software?
• Key Characteristics:
o Does Not Wear Out: Unlike physical products, software doesn't degrade over time
due to use. However, it can become obsolete or require updates due to changing
technology or requirements.
• Examples: Operating systems (Windows, macOS, Linux), applications (Microsoft Office, web
browsers, games), embedded software (in cars, appliances), and mobile apps.
• Definition: Software testing is a process of evaluating and verifying that a software product
or application does what it is supposed to do. It involves executing software components to
identify software Bugs/Errors/Defects.
o Identify Defects: The primary goal is to find errors, bugs, or flaws in the software
before it is released to end-users.
o Ensure Quality: Testing helps to ensure that the software meets specified
requirements and quality standards.
o Verify Functionality: It confirms that the software performs its intended functions
correctly.
o Validate Requirements: Testing checks if the software meets the actual needs and
expectations of the users and stakeholders.
o Reduce Costs: Identifying and fixing defects early in the development lifecycle is
significantly cheaper than addressing them after release.
3. Why is Testing Required?
• Software is Prone to Errors: Humans make mistakes, and software development is a complex
process with many opportunities for errors in design, coding, and implementation.
• Impact of Software Failures: Software failures can have significant consequences, ranging
from minor inconveniences to major financial losses, safety hazards, and reputational
damage. Examples include:
• Legal and Regulatory Compliance: In some industries (e.g., healthcare, finance), software
must comply with specific regulations and standards. Testing helps verify this compliance.
• Cost-Effectiveness: As mentioned earlier, early defect detection through testing is far more
cost-effective than fixing issues in production.
4. Types of Testing
Software testing can be categorized in various ways based on different criteria. Some common types
include:
o System Testing: Testing the entire integrated system as a whole to evaluate its
compliance with specified requirements.
o Manual Testing: Testing performed by human testers without the aid of automated
tools.
• Based on Focus:
o Functional Testing: Testing the functionality of the software against the specified
requirements. This includes black-box testing techniques.
o Non-Functional Testing: Testing aspects of the software that are not related to its
functionality, such as performance, security, usability, reliability, and compatibility.
▪ Usability Testing: Assessing how easy and intuitive the software is to use for
end-users.
o Regression Testing: Re-testing previously tested parts of the software after changes
have been made (e.g., bug fixes, new features) to ensure that the changes have not
introduced new defects or negatively impacted existing functionality.
• Skills Required:
• Salary: Salaries in software testing vary based on experience, skills, location, and the type of
company. Generally, with increasing experience and specialized skills (e.g., automation,
security testing), salaries tend to increase significantly.
• Growth Opportunities: The software testing field offers various career growth paths:
o Progression in Technical Roles: Test Engineer -> Senior Test Engineer -> Test Lead ->
Test Manager -> QA Manager -> Director of Quality Assurance.
o Specialization: Focusing on specific areas like performance testing, security testing,
automation testing, or mobile testing.
o Leadership and Management: Leading and managing testing teams and defining
testing strategies.
• Project vs Product:
o Product-Based Companies: These companies develop and sell their own software
products. Their focus is on creating, marketing, and supporting their products.
Software testers in these companies typically work on the company's in-house
products, contributing to their quality and ongoing development. Examples include
software vendors, SaaS providers, and companies that develop and sell their own
applications.