Software Testing and Quality Assurance Software Quality Assurance 1.
Testing. SDLC Vs Agile Software Quality Assurance Software quality assurance (SQA) All those planned...
-
Upload
silvester-roberts -
Category
Documents
-
view
227 -
download
5
Transcript of Testing. SDLC Vs Agile Software Quality Assurance Software quality assurance (SQA) All those planned...
Software Quality Assurance
Software quality assurance (SQA) All those planned or systematic actions
necessary to provide adequate confidence that a product or service is of the type and quality needed and expected by the customer.
consists of a means of monitoring the software engineering processes and methods used to ensure quality. It does this by means of audits of the quality management system under which the software system is created. These audits are backed by one or more standards, usually ISO 9000 or CMMI.
Software Quality Assurance Verification Verification is preventing mechanism to
detect possible failures before the testing begin. It involves reviews, meetings, evaluating documents, plans, code, inspections, specifications etc.
Validation Validation occurs after verification and it's
the actual testing to find defects against the functionality or the specifications.
Software testing Is the process used to help identify the
correctness, completeness, security, and quality of developed computer software
Software testing is oriented to "detection". It's examining a system or an application under controlled conditions. It's intentionally making things go wrong when they should not and things happen when they should not.
V-Model The V-model is a software development process which can be
presumed to be the extension of the waterfall mode V Model is also called test based development There are two phases in the V model development. They are
1. Verification Requirements analysis System Design Architecture Design Module Design 2. Validation. Unit Testing Integration Testing System Testing User Acceptance Testing
Requirements analysis In this phase, the requirements of the
proposed system are collected by analyzing the needs of the user(s).
This phase is concerned about establishing what the ideal system has to perform
However, it does not determine how the software will be designed or built.
The user acceptance tests(UAT) are designed in this phase.
System Design
System engineers analyze and understand the business of the proposed system by studying the user requirements document.
They figure out possibilities and techniques by which the user requirements can be implemented.
If any of the requirements is not feasible, the user is informed of the issue.
The software specification document which serves as a blueprint for the development phase is generated
The documents for system testing is prepared in this phase.
Architecture Design This phase can also be called as high-level design
(HLD). The baseline in selecting the architecture is that it
should realize all the requirements within the given time, cost and resources.
The output of this phase is the high-level design document which typically consists of the list of modules, brief functionality of each module, their interface relationships, dependencies, database tables, architecture diagrams, technology details etc
The integration testing design is carried out in this phase.
Module Design
This phase can also be called as low-level design (LLD).
The designed system is broken up in to smaller units or modules and each of them is explained so that the programmer can start coding directly.
The unit test design is developed in this stage.
Coding It is the process of writing, testing,
and maintaining the source code of computer programs. The source code is written in a programming language.
Validation Phases Unit Testing In the V-model of software development, unit
testing implies the first stage of dynamic testing process.
Testing of individual components It involves analysis of the written code with
the intention of eliminating errors. It also verifies that the codes are efficient
and adheres to the adopted coding standards.
Testing is usually white box.
Integration Testing Objectives:
To expose problems arising from the combination To quickly obtain a working solution from
components. In integration testing the separate
modules will be tested together expose faults in the interfaces and in the interaction between integrated components.
Testing is usually black box as the code is not directly checked for errors.
System Testing System testing will compare the
system specifications against the actual system.
The system test design derived from the system design documents and is used in this phase.
Sometimes system testing is automated using testing tools.
System Testing Objective: Assess whether the app does what it is
supposed to do Functional testing: coverage
Event-based coverage Data-based
Performance testing Performance seen by
users: delay, throughput System owner: memory, CPU, comm
Performance Explicitly specified or expected to do well Unspecified find the limit
Usability testing Human element in system operation
GUI, messages, reports, …
User Acceptance Testing Acceptance Testing checks the
system against the requirements of the user.
It uses black box testing using real data, real people and real documents to ensure ease of use and functionality of systems.
Purpose: ensure that end users are satisfied
Regression Testing Retesting a previously tested program
following modification to ensure that faults have not been introduced or uncovered as a result of the changes made
Whenever a system is modified (fixing a bug, adding functionality, etc.), the entire test suite needs to be rerun
Make sure that features that already worked are not affected by the change
Automatic re-testing before checking in changes into a code repository
Incremental testing strategies for big systems
Performance Testing Testing conducted to evaluate the
compliance of a system or component with specified performance requirements.
Often this is performed using an automated test tool to simulate large number of users. Also know as "Load Testing".
These tests are also performed on different platforms
Test Plan A document describing the scope,
approach, resources, and schedule of intended testing activities.
It identifies test items, the features to be tested, the testing tasks, who will do each task, and any risks requiring contingency planning.
Tests Plans Test plan need to be as early as possible, we are
trying to identify the mechanism to be used to ensure that the customer receives a quality, test product.
Scope of testing(summarising functional, performance, and internal design characteristics to be tested, plus schedule constraints, completion criteria, etc)
Test plan (provides the overall strategy for test integration)
Test phases and builds Schedule Overhead softwareEnvironment and resources
Test procedures Order of integration (purpose, and modules to be tested ) Unit tests - description of tests and expected results – Test environment - special tools, techniques Test case data Expected results
Test-Cases - Basics
Test Case is a commonly used term for a specific test. This is usually the smallest unit of testing. A Test Case will consist of information such as requirements testing, test steps, verification steps, prerequisites, outputs, test environment, etc.
A set of inputs, execution preconditions, and expected outcomes developed for a particular objective, such as to exercise a particular program path or to verify compliance with a specific requirement.
test-cases are derived during all phases of the development cycle
determine expected results before running a test-case look for errors where you found errors before
Defect testing and debugging are distinct processes
Defect testing is concerned with confirming the presence of errors
Debugging is concerned with locating and repairing these errors
Debugging involves formulating a hypothesis about program behaviour then testing these hypotheses to find the system error
Testing and debugging
©Ian Sommerville 1995
Debugging Activities
©Ian Sommerville 1995
Locate error& fault
Design faultrepair
Repair fault
Re-testprogram
Testing ActivitiesIdentify
Design
Build
Execute
Compare
Test conditions (“What”): an item or event to be verified.
How the “what” can be tested: realization
Build test cases (imp. scripts, data)
Run the system
Test case outcome withexpected outcome
Test result
Test tools Computer programs used in the testing of a system, a
component of the system, or its documentation. Various Automated Testing Tools have been developed
and are used to evaluate usability from different perspectives.
Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes,
The setting up of test preconditions, and other test control and test reporting functions
Commonly, test automation involves automating a manual process already in place that uses a formalized testing process.
Test tools Code-driven testing A growing trend in software development is to use
testing frameworks such as the xUnit frameworks (for example, JUnit and NUnit) which allow the code to conduct unit tests to determine whether various sections of the code are acting as expected under various circumstances.
Code driven test automation is a key feature of Agile software development
It is considered more reliable because the code coverage is better, and because it is run constantly during development rather than once at the end of a waterfall development cycle.
Test tools Graphical User Interface (GUI) testing Many test automation tools provide record and
playback features that allow users to record interactively user actions and replay it back any number of times, comparing actual results to those expected.
Many test automation tools provide record and playback features that allow users to record interactively user actions and replay it back any number of times, comparing actual results to those expected.
A variation on this type of tool is for testing of web sites. Here, the "interface" is the web page.
Test tools JUnit A regression testing framework used by developers
who implement unit tests in Java. (freeware) Platforms running Java. Software Description
• JUnit is a regression testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java.
C++Test A C/C++ unit testing tool that automatically tests
any C/C++ class, function, or component.
Test tools Test Mentor - Java Edition Java component, unit and function test automation Software Description
• A functional test and test modeling tool for Java developers & QA Engineers to use as they develop their Java classes, clusters, subsystems, frameworks, and other components, either deployed on the client or the server during unit and integration testing.
Check A unit test framework for C (freeware) Software Description
• Check features a simple interface for defining unit tests, putting little in the way of the developer. Tests are run in a separate address space, so Check can catch both assertion failures and code errors that cause segmentation faults or other signals. The output from unit tests can be used within source code editors and IDEs.
Test tools HtmlUnit Java unit testing framework for web applications
(freeware) Software Description HtmlUnit is a java unit testing framework for testing
web based applications. It is similar in concept to httpunit but is very different in implementation
HttpUnit models the http protocol so you deal with request and response objects. HtmlUnit on the other hand, models the returned document so that you deal with pages and form and tables.
http://www.testingfaqs.org/t-unit.html#C++Test