testing. sdlc vs agile software quality assurance software quality assurance (sqa) all those planned...

31
Testing

Upload: silvester-roberts

Post on 27-Dec-2015

227 views

Category:

Documents


5 download

TRANSCRIPT

Testing

SDLC Vs Agile

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

V-Model

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