Title: Programu testavimo metodai
1Programu testavimo metodai
2IVADAS
3 Tikslai
- Apibudinti SWEBOK projekta
- Apibrežti modulio vieta mokymo plane
- Aprašyti modulio žiniu struktura
- Apibudinti praktines užduotis
4SWEBOK
- Software Configuration Management
- Software Construction (Version 0.5)
- Software Design
- Software Engineering Infrastructure
- Software Engineering Management
- Software Engineering Process
- Software Evolution and Maintenance
- Software Quality Analysis
- Software Requirements Analysis
- Software Testing
5 Mokymo programa (Curricula ) Programu sistemu
inžinerijos magistras (Master in Software
Engineering)
2000 09 12
6Bendros knygos
- Pressmann Software Engineering Theory and
Practice, 6 laida - J. Sommerville, I. Software Engineering 8 laida
- http//www.elen.ktu.lt/rsei/PT/index.htm
7Testavimo knygos
- http//www.softwareqatest.com/
8Programavimo krize
- Programines irangos klaidos yra geriau žinomos
negu sekmes atvejai - Programavimo krize prognozuota prieš 30 metu taip
niekada ir neivyko ir programuotojams pavyko
sumažinti nesekmiu kieki bei darbuotoju poreiki - Problemos, kurios kamuoja programuotojus
pagrindinai susietos su tinkamu programines
irangos kurimu ir jos palaikymu negu kad su
gavimu programines irangos, kuri funkcionuoja
korektiškai
9Teisybe
- Matematikui, fizikui ir inžinieriui buvo pasakyta
Visi nelyginiai skaiciai yra pirminiai - Matematikas pasakys nesamone, 9 yra nelyginis
skaicius bet ne pirminis - Fizikas pasakys pažiurekim, trys yra pirminis,
penki yra pirminis, septyni yra pirminis, atrodo,
kad teisybe - Inžinierius pasakys pažiurekim, trys yra
pirminis, penki yra pirminis, septyni yra
pirminis, devyni yra pirminis, vienuolika yra
pirminis, atrodo, kad teisybe
10Programu testavimas
- Istoriškai nepopuliarus tarp
- vadybininku
- programuotoju
- studentu
- Testavimas ir daugelis programavimo inovaciju
išaugo iš programavimo krizes
11Testavimas Musu patyrimas
12Kada sustoti?
Test Case Generation
Verification
Test Coverage
Yes
13Testavimo pavyzdys
14Automatinis testavimas
Test Case Generation
Verification
Test Coverage
Yes
15Automatinis testavimas
16Kas tai yra programu testavimas?
- The process of executing computer software in
order to determine whether the results it
produces are correct, Glass 79 - The process of executing a program with the
intent of finding errors, Myers 79 - Program testing can be used to show the presence
of bugs, but never their absence, Dijkstra 72
17Kas tai yra programu testavimas?
- The aim is not to discover errors but to provide
convincing evidence that there are none, or to
show that particular classes of faults are not
present, Hennell 84 - Testing is the measure of software quality,
Hetzel 85
Kas vadinama programu testavimu?
18Kas tai yra programu testavimas?
- The process of operating a system or component
under specified conditions, observing or
recording the results, and making an evaluation
of some aspect of the system or component. - IEEE/ANSI, 1990
19Testavimas priklauso nuo požiurio
- If our goal is to show the absence of errors, we
will find very few of them - If our goal is to show the presence of errors,
we will discover a large number of them
Myers, 1979
20Testavimo laikas
- 50 Brooks/Myers, 1970s
- 80 Arthur Andersons Director of testing in
North America, 1990s
21Testuotoju ir programuotoju santykis
- 15-10 Mainframes
- i.e.,1 tester for every 5 to 10 developers
- 23 Microsoft, 1992
- 21 Lotus (for 1-2-3 Windows)
- 12 Average of 4 major companies,1992 Microsoft,
Borland, WordPerfect, Novell
Koks testuotoju ir programuotoju santykis?
22Programu testavimo problemos
- poorly expressed requirements
- informal design techniques
- nothing executable until coding stage
- Huge input set consider testing software that
categorises an exam grade 101 inputs - consider testing software that categorises two
exam grades 101101 inputs!
Kokios programu testavimo problemos?
23Kas tai yra programu testavimas?
- Exhaustive software testing is intractable
(sunkiai suvaldomas) - Even if all possible inputs could be identified,
the problem of identifying expected results is
undecidable (neišsprendžiama) - Weyuker (1979) has shown that there is no
algorithm that can determine if a given
statement, branch or path will be exercised!
24Programu testavimo apibrežimas
- Software testing consists of the dynamic
verification of the behavior of a program on a
finite set of test cases, suitably selected from
the usually infinite executions domain, against
the specified expected behavior.
Kaip apibrežiamas programu testavimas?
25Dinaminis
- This term means testing always implies executing
the program on valued inputs. Static analysis
techniques, such as peer review and inspection
(that sometimes are improperly referred to as
"static testing"), are not considered as part of
this KA nor is program execution on symbolic
inputs, or symbolic evaluation
26Baigtinis
- Clearly the tests are not selected literally from
an infinite set of possible tests, but a very
large finite one (the set of all bit strings
shorter than some length). Nonetheless, for even
simple programs, so many test cases are
theoretically possible that exhaustive testing
could require even years to execute. This is why
in practice the number of tests can generally be
considered infinite. However, the number of
executions which can realistically be observed in
testing must obviously be finite, and -more than
this- it must be manageable. Indeed, testing
always implies a trade-off between limited
resources and schedules, and inherently unlimited
test requirements this conflict points to well
known problems of testing, both technical in
nature (criteria for deciding test adequacy) and
managerial in nature (estimating the effort to
put in testing)
Kokia itaka turi testo ilgis?
27Išrinktu
- The many proposed test techniques essentially
differ in how they select the (finite) test set,
and testers must be aware that different
selection criteria may yield largely different
effectiveness. The problem of identifying the
most suitable selection criterion under given
conditions is still under research.
28Laukiami rezultatai
- It must be possible to decide whether the
observed outcomes of program execution are
acceptable or not, otherwise the testing effort
would be useless. The observed behavior may be
checked against user's expectations (commonly
referred to as testing for validation) or against
a functional specification (testing for
verification). The test pass/fail decision is
referred to as the oracle problem, which can be
addressed with different approaches.
Kas tai yra orakulo problema?
29Statiniai metodai
- Software testing is a means for quality
evaluation. In the SQA chapter of the SWEBOK,
activities and techniques for quality analysis
are categorized into static techniques (no code
execution), and dynamic techniques (code
execution). Both categories are useful. Although
this chapter focuses on testing, that is dynamic,
we would like to emphasize that static techniques
are equally important for the purpose of building
quality in a software product. Static techniques
are covered into the SQA KA description
Kas tai yra statiniai testavimo metodai?
30Testavimo veikla
- In the years, the view of software testing has
evolved towards a more constructive attitude.
Testing is no longer seen as an activity that
starts only after the coding phase is complete,
with the limited purpose of finding mistakes.
Software testing is nowadays seen as an activity
that encompasses the whole development process,
and is an important part itself of the actual
construction. Indeed, planning for testing starts
since the early stages of requirement analysis,
and test plans and procedures are systematically
and continuously refined as the development
proceeds. These activities of planning and
designing tests constitute themselves a useful
input to designers for highlighting potential
weaknesses.
Ka apima testavimo veikla?
31Klaidu vengimas
- As more extensively discussed in the SQA chapter,
the right attitude towards quality is one of
prevention it is better to avoid problems,
rather than repairing them. Testing must be seen
as a means primarily for demonstrating that the
prevention has been effective, but also for
identifying anomalies in those cases in which,
for some reason, it has been not. Finally, it is
worth recognizing that even after a good testing,
the system could still contain mistakes. The
remedy to system failures after delivery is
provided by (corrective) maintenance actions. The
maintenance issues of software engineering are
covered into the Software Evolution and
Maintenance chapter of the SWEBOK
Kuo remiasi klaidu vengimo strategija?
32Temos
- A.Testing Basic Concepts and Definitions
- B.Test Levels
- C.Test Techniques
- D.Test-related Measures
- E.Managing the Test Process
- F.Test Tools.
33A.Bazines testavimo koncepcijos ir apibrežimai
- When the outcome of a test execution diverges
from the expected, a failure is observed, whose
cause is a fault. These and other basic
definitions within software testing area, as well
as an introduction to the terminology, will be
provided in Part A Testing Basic Concepts and
Definitions. In the same section, the scope of
the KA will be laid down, also in relation with
other activities.
34B.Testavimo lygiai
- Software testing is usually performed at
different levels along the development process.
That is to say, the object of the test can vary
a whole program, part of it (functionally or
structurally related), a single module. The
latter subject is expanded in Part B Test Levels.
This consists of two (orthogonal) subsections
B.1 lists the phases in which the testing of
large software systems is traditionally
subdivided. In B.2 testing for specific
conditions or properties is instead considered,
and is referred to as "Objectives of testing".
Clearly not all listed types of testing apply to
every system, nor has every possible type been
listed, but those most generally applied.
35Testavimo paskirtis
- Testing is conducted in view of a specific
purpose (test objective), which is stated more or
less explicitly, and with varying degrees of
precision. Stating the objective in precise,
quantitative terms allows for establishing
control over the test process.
Kokia testavimo paskirtis?
36Testavimo tikslas
- One of testing aims is to expose failures (as
many as possible), and many popular test
techniques have been developed for this
objective. These techniques variously attempt to
"break" the program, by running identified
classes of (deemed equivalent) executions the
leading principle underlying such techniques is
being as much systematic as possible in
identifying a representative set of program
behaviors (generally in the form of subclasses of
the input domain). However, a comprehensive view
of the KA of testing as a means for quality must
include other as important objectives for
testing, e.g., reliability measurement, usability
evaluation, contractors acceptance, for which
different approaches would be taken. Note that
the test objective varies with the test object,
i.e., in general different purposes are addressed
at the different levels of testing.
Koks testavimo tikslas?
37Testavimo kriterijai
- The test objective determines how the test set is
identified, both with regard to its consistency
-how much testing is enough for achieving the
stated objective?- and its composition -which
test cases should be selected for achieving the
stated objective?-, although usually the "for
achieving the stated objective" part is left
implicit and only the first part of the two
italicized questions above is posed. Criteria for
addressing the first question are referred to as
test adequacy criteria, while for the second as
test selection criteria
Kas tai yra testavimo kriterijai?
38C.Testavimo metodai
- As already said, several Test Techniques have
been developed in the last two decades according
to various criteria, and new ones are still
proposed. "Generally accepted" techniques will be
described in Part C.
Kas tai yra testavimo metodai?
39D.Testavimo matavimai
- Sometimes, it can happen that confusion is made
between test objectives and techniques. For
instance, branch coverage is a popular test
technique. Achieving a specified branch coverage
measure should not be considered per se as the
objective of testing it is a means to improve
the chances of finding failures (by
systematically exercising every program branch
out of a decision point). To avoid such
misunderstandings, a clear distinction should be
made between test measures which evaluate the
test set, like measures of coverage, and those
which instead provide an evaluation of the
program under test, based on the observed test
outputs, like reliability
Kam reiklaingi testavimo matavimai?
40E. Testavimo proceso valdymas
- Testing concepts, strategies, techniques and
metrics need to be integrated into a defined and
controlled process, which is run by people. The
test process should support testing activities
and testing teams, from test planning to test
outputs evaluation, in such a way as to provide
justified assurance that the test objectives are
met cost-effectively. Issues relative to Managing
the Test Process are expanded in Part E.
Kokia testavimo proceso paskirtis?
41F. Testavimo priemones
- Software testing is a very expensive and
labor-intensive part of development. For this
reason, tools are instrumental to support test
activities. Moreover, in order to enhance
cost-effectiveness ratio, a key issue has always
been pushing test automation as much as possible.
Existing tools and concepts related to automating
the constituent parts of test process are
addressed in Part F Test Tools
Kam skirtos testavimo priemones?
42Bendra Užduotis
- 1. Suformuoti darbo grupe iš 4 asmenu
- 2. Parinkti darbo grupes pavadinima
- 3 Nusiusti laiška destytojui adresu
vak_at_soften.ktu.lt - Susirašineti su destytoju tik šiuo adresu. Laiške
kaip subject nurodyti darbo grupes varda ir per
brukšneli laiško numeri. Grupei, kurios vardas
Namas pirmam laiške nurodyti subject Namas-1.
Pirmam laiške nurodyti grupes varda, grupes
studentu varda, pavarde, grupe ir paprašyti
atsiusti projekto užduoti. Atsakymas bus
siunciamas su Reply.
43Bendra Užduotis
- 4. Duotam algoritmui sudaryti programa
nurodytomis priemonemis. Detaliai aprašyti
užduoti ir algoritma, pateikti strukturograma.
Programa turi tureti ne mažiau kaip penkis
atskirai testuojamus vienetus. Sudaryti programos
testavimo plana. Bent vienas vienetas turi buti
automatiškai ištestuotas ivairiais kriterijais.
Parengti testavimo dokumentacija. Programa
pateikiama kompaktiniam diske ir pristatymo metu
suinstaliuojama i nurodyta kompiuteri, o po
pristatymo išinstaliuojama arba pateikiama
serveryje. Pristatymo metu pateikti viena lapa,
kuriame nurodoma grupes vardas, sudetis,
pagrindiniai atliktos užduoties privalumai
44Programavimo budas
- 5. Gali buti trys programavimo budai
- A Programuojama Java kalba, programa
paleidžiama su naršykle ir ja vykdo vartotojo
kompiuteris - B - Programuojama C arba C ir php, programa
paleidžiama su naršykle ir vykdoma serveryje - C- Programuojama C arba C, instaliacine
programa nuskaitoma iš serverio i vartotojo
kompiuteri, programa suinstaliuojama ir vykdoma
vartotojo kompiuteryje
45Funkciju sasaja
- 1. Funkcijos sasaja ( char iejimo-vektorius,
char išejimo-vektorius, int iejimu-skaicius,
int išejimu-skaicius, int sekmes-požymis) - Sekmes-požymis 1 sekmingai paskaiciuota, 0 -
nepaskaiciuota -
46Vertinimo Taisykles
- Galutinis pažymys G skaiciuojamas pagal formule
- G ((A E)/2)0,5 S0,2 P 0,3
- A Apklausa iš pakartojimo
- E- Egzaminas
- S- pasisakymas paskirta tema
- P- projektine užduotis
- ir apvalinamas pagal matematines taisykles iki
sveikaskaitinio skaiciaus.