Programų testuojamumas

Slides:



Advertisements
Similar presentations
System Integration Verification and Validation
Advertisements

SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Software Testing Techniques. December Introduction Many aspects to achieving software quality –Formal reviews (of both the software process and.
SOFTWARE PROJECT MANAGEMENT Project Quality Management Dr. Ahmet TÜMAY, PMP.
Software Testing Prasad G.
1 CMPT 275 Software Engineering Requirements Analysis Process Janice Regan,
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Software Project Management Fifth Edition
Extreme Programming Software Development Written by Sanjay Kumar.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
TESTING.
System Analysis and Design
Objectives Understand the basic concepts and definitions relating to testing, like error, fault, failure, test case, test suite, test harness. Explore.
Software Testing Life Cycle
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Component Technology and Component Tracing CSC532 Presentation Developed & Presented by Feifei Xu.
Other Quality Attributes Other Important Quality attributes Variability: a special form of modifiability. The ability of a system and its supporting artifacts.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Today’s Agenda  HW #1  Finish Introduction  Input Space Partitioning Software Testing and Maintenance 1.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Software Engineering Lecture 14: Testing Techniques and Strategies.
Software Testing Process By: M. Muzaffar Hameed.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Software testing techniques Software testing techniques Software Testability Presentation on the seminar Kaunas University of Technology.
Hussein Alhashimi. “If you can’t measure it, you can’t manage it” Tom DeMarco,
CS223: Software Engineering Lecture 4: Software Development Models.
TESTING FUNDAMENTALS BY K.KARTHIKEYAN.
Software Quality Assurance and Testing Fazal Rehman Shamil.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS 5150 Software Engineering Lecture 22 Reliability 3.
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Test Automation Steffen Goerlitz Barry Lange Mitchell Meerman Harry Schultz Trevor Spees.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Development.
Mantas Radzevičius ifm-2/2
TOTAL QUALITY MANAGEMENT
Methodologies and Algorithms
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Neringa Sipavičienė IFM-2/4
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Software Engineering (CSI 321)
Testing Tutorial 7.
Software Testing.
Software Verification and Validation
Software Engineering (CSI 321)
Software testing
Software Development methodologies
Software Testing An Introduction.
Introduction SOFTWARE ENGINEERING.
Software engineering – 1
Business Should Adopt Agile Testing. Test Driven Development is an essential software development way that is made by an automated test program which.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Engineering Processes
Strategies For Software Test Documentation
Introduction to Software Testing
Test Planning Mike O’Dell (some edits by Vassilis Athitsos)
Software System Integration
Software life cycle models
Baisc Of Software Testing
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Software Development Chapter 1.
Testing, Inspection, Walkthrough
Software Testing.
Software Testing Strategies
Unit IV – Chapter 2 V-Test Model.
Presentation transcript:

Programų testuojamumas Stanislavas Guk

Testuojamumo apibrėžimas “Software testability is the degree to which software artifact (i.e. a software system, software module, requirements or design document) supports testing in a given test context” © Wikipedia; “Attributes of software that bear on the effort needed to validate the software product” © ISO. „The quality of a software design that allows for automated testing in a cost- effective manner. The end goal of testability is to create rapid feedback cycles in your development process in order to find and eliminate flaws in your code.“© Microsoft Kas yra programų testuojamumas?

Why Testability Matters? Economics: Sooner is better. Higher testability > More better tests. Lower testability > Fewer weaker tests.

Testuojamumo kriterijai Controllability Observability Operability Simplicity Stability Understandability Decomposability Kokie yra testuojamumo kriterijai?

Controllability The better the software is controlled, the more the testing can be automated and optimised. All possible outputs can be generated through some combination of input in Software Testing All code is executable through some combination of input in Software Testing Software and hardware states can be controlled directly by testing Input and output formats are consistent and structured in Software Testing Tests can be conveniently specified, automated, and reproduced. Kas yra Controllability (kontroliavimas) kriterijus?

Observability Kas yra Observability (stebėjimo sistema) kriterijus? 1. What is seen is what is tested 2. Distinct output is generated for each input 3. System states and variables are visible or queriable during execution 4. Past system states and variables are visible or queriable (eg., transaction logs) 5. All factors affecting the output are visible 6. Incorrect output is easily identified 7. Incorrect input is easily identified 8. Internal errors are automatically detected through self-testing mechanism 9. Internally errors are automatically reported 10. Source code is accessible Kas yra Observability (stebėjimo sistema) kriterijus?

Operability 1. The better the software works, the more efficiently it can be tested. 2. The system has few bugs (bugs add analysis and reporting overhead to the test process) 3. No bugs block the execution of tests. 4. The product evolves in functional stages (allows simultaneous development & testing) Kas yra Operability (veikimo) kriterijus?

Simplicity 1. The less there is to test, the more quickly it can be tested in Software Testing 2. Functional simplicity 3. Structural simplicity 4. Code simplicity Kas yra Simplicity (paprastumo) kriterijus?

Stability 1. The fewer the changes, the fewer the disruptions to testing 2. Changes to the software are infrequent 3. Changes to the software are controlled in Software Testing 4. Changes to the software do not invalidate existing tests in Software Testing 5. The software recovers well from failures in Software Testing Kas yra Stability (stabilumo) kriterijus?

Understandability 1. The more information we have, the smarter we will test 2. The design is well understood in Software Testing 3. Dependencies between internal external and shared components are well understood. 4. Changes to the design are communicated. 5. Technical documentation is instantly accessible 6. Technical documentation is well organized in Software Testing 7. Technical documentation is specific and detailed 8. Technical documentation is accurate Kas yra Understandability (supratimo) kriterijus?

Decomposability 1. By controlling the scope of testing, problems can be isolated quickly, and smarter testing can be performed. 2. The software system is built from independent modules 3. Software modules can be tested independently in Software Testing Kas yra Decomposability kriterijus?

Testability of Requirements Testable requirements are essential for the testing process, not only because test engineers must predict the expected outcome of their tests, but also tester must verify the results of each test. These activities cannot be done with pre-specified test requirements. It must be measurable and observable. Measurable means that the test engineers can qualitatively or quantitatively verify the test results against the test requirement's expected result. What does measurable mean in testable requirements?

Why Is It Important to Have Testable Requirements? It is very important to have testable requirements in software projects. The reason is it helps to reduce development time by avoiding expensive software bugs in later stages of the software development life cycle.

The Price to Correct a Software Bug The price of correcting a software defect is lowest in the requirements stage. The reason is there are not so much deliverables at the start of a project to fix if a defect is detected. As soon as the project moves into posterior stages of the development of software product, the price of correcting a bug increases extremely, since there are more deliverables influenced by the fixing of every bug, such as a design document or the code itself. Kokia yra „bugų“ ištaisymo kaina?

The Price to Correct a Software Bug Stage Cost Ratio Requirements 1-3 Design 3-6 Coding 10-12 Unit Testing 15-40 Acceptance 30-60 Testing 45-10000 Production >10000

Testability of Requirements Requirements need to fulfill the following criteria in order to be testable: consistent complete unambiguous quantitative (a requirement like "fast response time" can not be verification/verified) verification/verifiable in practice (a test is feasible not only in theory but also in practice with limited resources) Kokius kriterijus turi atitikti testuojamumo reikalavimai?

How improve software testability ? Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards. https://www.youtube.com/watch?v=uGaNkTahrIw

Test-driven development (TDD)

Test-driven development (TDD)

Test-driven development (TDD)

Mocking Best Practices Fake objects come in many different flavors. Most of the examples in this column use stubs—simple objects that provide pre-canned answers and return values. Another type of fake is a "mock" object that is used to record or validate the interaction between classes. Mocks are one of the most valuable—but confusing and misused—concepts in automated testing.  Kaip veikia fiktyvūs objektai?