Unit 8 Software Eng.
Unit 8 Software Eng.
Functionality:
Most Software Testing professionals view this attribute as the most important one as an application fails on the most
basic level if it doesn’t function as expected.
Performance:
Performance is important software quality attributes as it is a very important trait for every software to have in this
fast-paced world. From a testing point of view, it implies that QA testers must check whether the system responds to
various events within defined time limits.
Interoperability:
Interoperability is the ability of the system to interact with other systems to exchange the required information via
certain interfaces. So, Software Quality assurance engineers must examine the interoperability of a system in terms
of both syntactic and semantic interoperability.
Security:
The number of cyber-attacks has been on the rise and users have started prioritizing a product’s safety. So the
security attribute measures the ability of a system to protect and block unauthorized actions that could negatively
impact the user or destroy the system.
Flexibility:
Flexibility is another attribute of good software products that can easily adapt to future changes. To be more
specific, we say that the application is flexible when it can run smoothly on any device, platform, or operating
system.
QUALITY FACTORS
A software quality factor is a non-functional requirement for a software program which is not called up by the
customer's contract, but nevertheless is a desirable requirement which enhances the quality of the software program.
Product operation factors includes five software requirements. These requirements directly affect to the software
operations such as operational performance, ease of usage and etc. These 5 factors help to provide a better user
experience to users.
• Correctness – extent to which a program satisfies its specification and fulfills the client’s objective.
• Reliability – extent to which a program is supposed to perform its function with the required precision.
• Efficiency – amount of computing and code required by a program to perform its function.
• Integrity – extent to which access to software and data is denied to unauthorized users.
• Usability– labor required to understand, operate, prepare input and interpret output of a program
Product revision factors includes three software quality factors. These are Maintainability, Flexibility and
Testability. These requirements are required for testing and maintenance of the software. They provide ease of
maintenance, flexibility and testing effort to support the software to be functional according to the needs and
requirements of the user in the future.
Product transition factors includes three software quality factors. There are Portability, Reusability and
Interoperability. That allows the software to adapt to the change of environments in the new platform or technology
from the used platform or technology.
• Portability– effort required to run the program from one platform to other or to different hardware.
• Reusability– extent to which the program or it’s parts can be used as building blocks or as prototypes for other
programs.
• Software quality assurance is a systematic plan of all actions necessary to provide adequate confidence that
an item or product conforms to establish technical requirements.
SQA Encompasses
SQA Activities
• Prepares an SQA plan for a project: The program is developed during project planning and is reviewed by
all stakeholders.
• Participates in the development of the project's software process description: The software team selects a
process for the work to be performed.
• Reviews software engineering activities to verify compliance with the defined software process: The SQA
group identifies, reports, and tracks deviations from the process and verifies that
corrections have been made.
• Records any noncompliance and reports to senior management: Non- compliance items are
tracked until they are resolved.
Verification and Validation:
Verification: Are we building the product right?
Verification
Verification is the process of checking that a software achieves its goal without any bugs. It is the process
to ensure whether the product that is developed is right or not. It verifies whether the developed product
fulfills the requirements that we have. Verification is Static Testing.
• Inspections
• Reviews
• Walkthroughs
• Desk-checking
Validation
Validation is the process of checking whether the software product is up to the mark or in other words
product has high level requirements. It is the process of checking the validation of product i.e. it checks
what we are developing is the right product. It is validation of actual and expected product. Validation is
the Dynamic Testing.
Testing is a process to check if a software application is working properly or not. The primary goal of testing is to
find the errors and bugs in an application. The person who performs the testing is known as a "tester".
Features of Testing
1. Identification
2. Validation.
3. Documentation
4. Quality Assurance
5. Risk Management
6. Performance check
What is Debugging?
Debugging is performed by the developers of the application to fix the bugs and errors found in the
system/application. The primary goal of debugging is to address the exact root cause at code level to fix the errors
and bugs found during the testing.
Features of Debugging
1. Error Detection.
2. Code Study
3. Testing
4. Performance Optimization
5. Documentation
The following are the important differences between Testing and Debugging −
Software testing is the process of evaluating and verifying that a software product or application does what it is
supposed to do. The benefits of testing include preventing bugs, reducing development costs and improving
performance.
• Requirements Analysis and Planning: Understand project requirements, define testing objectives, and plan
testing strategies and resources.
• Test Case Design: Create test cases with input data, expected outcomes, and steps for various scenarios.
• Unit Testing: Developers test individual code components for correctness and integration issues.
• Integration Testing: Test interactions between components to ensure they work together as intended.
• Functional Testing: Validate software functionality against requirements and user expectations.
• Performance Testing: Evaluate responsiveness, speed, and scalability under different conditions.
• Security Testing: Identify vulnerabilities and ensure the software's security mechanisms.
• Regression Testing: Re-test modified code to prevent new changes from breaking existing functionality.
• User Acceptance Testing (UAT): End-users verify the software's alignment with real-world needs.
UNIT TESTING
Unit Testing is a type of software testing where individual units or components of a software are tested.
The purpose is to validate that each unit of the software code performs as expected. Unit Testing is
done during the development (coding phase) of an application by the developers. Unit Tests isolate a
section of code and verify its correctness. A unit may be an individual function, method, procedure,
module, or object. Unit tests help to fix bugs early in the development cycle and save costs. It helps the
developers to understand the testing code base and enables them to make changes quickly .
INTEGRATION TESTING
Integration Testing is defined as a type of testing where software modules are integrated logically and tested as a
group. A typical software project consists of multiple software modules, coded by different programmers. The
purpose of this level of testing is to expose defects in the interaction between these software modules when they are
integrated . Integration Testing focuses on checking data communication amongst these modules. Hence it is also
termed as ‘I & T’ (Integration and Testing), ‘String Testing’ and sometimes ‘Thread Testing’.
SYSTEM TESTING
System Testing is a level of testing that validates the complete and fully integrated software
product. The purpose of a system test is to evaluate the end-to-end system specifications. Usually,
the software is only one element of a larger computer-based system. Ultimately, the software is
interfaced with other software/hardware systems. System Testing is defined as a series of different
tests whose sole purpose is to exercise the full computer-based system.
REGRESSION TESTING
Regression Testing is defined as a type of software testing to confirm that a recent program or code change has not
adversely affected existing features. Regression Testing is nothing but a full or partial selection of already executed
test cases that are re-executed to ensure existing functionalities work fine. This testing is done to ensure that new
code changes do not have side effects on the existing functionalities. It ensures that the old code still works once the
latest code changes are done.