Lecture 1 Introduction
Lecture 1 Introduction
This is not the expected behaviour of the program as the task says:
Student ID numbers should have 8 digits starting with the digit 3.
Example: Student Program
Is this program
• suitable to the task for which it is being developed?
• free of defects?
Validation is performed after the verification and inspects the whole system.
Testing goals. Verification and Validation.
According to International Standard ISO/IEC/ IEEE 29119-1:
• Verification is confirmation, through the provision of objective
evidence, that specified requirements have been fulfilled in a given
work item.
• Validation demonstrates that the work item can be used by the
users for their specific tasks.
Major testing types
• Functional Testing is a type of software testing that validates the
software system against the functional requirements/specifications.
• The purpose of Functional tests is to test each function of the software
application, by providing appropriate input and verifying the output against
the Functional requirements.
• Functional testing mainly involves black box testing, and it is not concerned
about the source code of the application.
• Non-functional testing checks the performance, reliability, scalability
and other non-functional aspects of the software system. It should be
performed after functional testing.
Testing Methods
• Black Box Testing – the tester doesn’t have access to the source code.
• Usually is performed during integration, system and acceptance testing levels.
• White Box Testing – the tester has full access to the source code.
• Usually is performed during unit, integration and system testing levels.
• Grey Box Testing – is a mixture of both.
Testing Levels
Unit testing – basic units of software are tested. The goal of this is to
verify every unit of the product after the test.
Integration testing – units need to combine and test as a single
cluster. The main idea is to expose the faults while integrating units
of the project.
System testing – the whole project is tested. The idea is to assess the
system's conformity with its intended requirements.
Acceptance testing – a system is tested for adequacy. This test is
purposefully done for evaluating the compliance of the system with
business requirements.
Finally
• Alpha testing is final testing at the end of the development process
before the software is released and it is done at the developers site. It
includes testing in an environment that is similar to the intended use.
• Beta testing is done at the customer's site. It is done just before the
launch of the product, and it is designed to see if users can install the
software and use it under real-world working conditions.
• Beta testing can be considered “pre-release” testing.
The international software testing standards
ISO/IEC/IEEE 29119 is intended for software testing acts as an
internationally approved collection of standards in software testing
suitable for any Software Development Life Cycle model. Currently, it
has five standards:
• ISO/IEC 29119-1: Deals with concepts and definitions of software.
• ISO/IEC 29119-2: Deals with test processes in a product.
• ISO/IEC 29119-3: Deals with test documentation of the product.
• ISO/IEC 29119-4: Deals with testing techniques and strategies.
• ISO/IEC 29119-5: Deals with keyword-based software testing.
Basic Terminology
According to the glossary of International Software Testing Qualification Board
(ISTQB) (http://www.istqb.org):
Defect – An imperfection or deficiency in a work product where it does not meet its
requirements or specifications. Synonyms bug, fault.
Failure – an event in which a component or system does not perform a required
function within specified limits.
Test case – A set of preconditions, inputs, actions (where applicable), expected
results and postconditions, developed based on test conditions.
Test – A set of one or more test cases.
Examples of Defects and Errors
Defects in the Interface specification
• Mismatch between what the client needs and what the server offers.
• Mismatch between requirements and implementation.
Algorithmic Defects
• Missing initialization
• Branching errors (too soon, too late)
• Missing test for nil
Mechanical Defects (very hard to find)
• Documentation does not match actual conditions or operating procedures
Errors
• Stress or overload errors
• Capacity or boundary errors
• Timing errors
• Throughput or performance errors
Testing Approaches
Level 0: There’s no difference between testing and debugging.