Tik-76.115 Testaussuunnitelma
Stegano
http://
Viimeksi päivitetty
.
Sisällysluettelo
1. Johdanto
2. Testauksen kohde ja tavoitteet
3. Testausympäristö
4. Testauksen organisointi ja raportointi
5. Toimintojen testitapaukset ja hyväksymiskriteerit
6. Ei-toiminnallisten ominaisuuksien testaaminen
Tämä dokumentti
Luvussa 1 "Johdanto"
määritellään termit sekä luetellaan lähteet.
Luvussa 2 "Testauksen kohde ja tavoitteet"
kerrotaan mitä testataan ja mitä testauksella pyritään saavuttamaan.
Luvussa 3 "Testausympäristö"
kuvataan tarvittavat laitteet ja ohjelmistot.
Luvussa 4 "Testauksen organisointi ja raportointi"
kerrotaan kuka testaa mitäkin ja milloin sekä miten tuloksen raportoidaan.
Luvussa 5 "Toimintojen testitapaukset ja hyväksymiskriteerit"
kerrotaan miten toimintoja testataan ja mikä on toimintojen oikea lopputulos.
Luvussa 6 "Ei-toiminnallisten ominaisuuksien testaaminen"
kerrotaan mitä ja miten ohjelmiston ei-toiminnallisia ominaisuuksia testataan.
Määritelmät ja termit
- Kätkentäbitti (hiding bit)
Sellainen peitetiedoston kohinainen bitti, johon salainen viesti
kätketään. Kaikki kohinaiset bitit eivät ole välttämättä
kätkentäbittejä.
- Peitetiedosto (cover file)
Tiedosto, johon salainen viesti kätketään. Tiedoston täytyy
sisältää kohinaa, johon salainen viesti kätketään.
- Kätköviesti (stego message)
Peitetiedosto kätkennän jälkeen, eli viesti, joka kuljettaa
kätkettyä salaista viestiä.
Lähdeluettelo
- Bruce Schneier. Applied Cryptography. John Wiley & Sons, Inc. 1996.
- Tuomas Aura. Practical invisibility in digital communication, Workshop on Information Hiding, University of Cambridge, May 1995.
- Maxwell T. Sandford II, Jonathan N Bradley, and Theodore G. Handel. The data embedding method. In Proceeding of the SPIE Photonics East Conference, Philadelphia, September 1995.
- Michael Luby and Charles Rackoff. How to construct pseudorandom permutations from pseudorandom functions. SIAM Journal on Computing, 17(2):373-386, April 1988.
- Steffen Möller, Andreas Pfizmann, and Ingo Stierand. Rechnergstutzte Steganographie: Wie sie funktioniert und warum folglich jede Reglementierung von Verschlusselung unsinnig ist. Dateschultz und Datensicherung, (6):318-326, June 1994.
- gif89a.doc
- bmp.doc
- pbm.html
- jpeg
- Crypto++ 2.1
2. Testauksen kohde ja tavoitteet
Ohjelmistosta testataan käyttöliittymien sekä ohjelmakirjaston toimintaa.
Käyttöliittymät tehdään kahteen käyttöjärjestelmäympäristöön jotka
molemmat testataan. Käyttäjän syötteiden (komentoriviargumentit
UNIX-ympäristössä tai hiirellä tehtävät valinnat Windows-ympäristössä)
on toimittava toiminnallisessa määrittelyssä
kuvatulla tavalla, eikä
ohjelma saa kaatua virheellisiin syötteisiin. Odottamattomista
virhetilanteista (esim. tiedoston avaus ei onnistu) on osattava
toipua oikein.
Myös algoritmien toimivuus on luonnollisesti testattava. Purettaessa
oikealla avaimella piilotettu sanoma, on sanoman oltava täsmälleen
sama kuin mitä se oli ennen piilotusta. Piilotettava tiedosto voi
olla esim. binääri-tiedosto joka ei välttämättä toimi jos yksikin
bitti on muuttunut.
Testauksen tavoitteena on saada aikaan toimiva ja stabiili ohjelmisto.
Koska projektissa toteutetaan käyttöliittymät kahteen eri
käyttöjärjestelmäympäristöön, on testaus myös suoritettava
molemmissa käyttöjärjestelmäympäristössä (Unix ja Windows95).
Unix-käyttöjärjestelmän testaukseen käytetään pääasiassa korkeakoulun
alpha-tietokoneita joissa on Digital Unix käyttöjärjestelmä.
Siirrettävyyden testaamiseksi ohjelmistoa testataan myös
mahdollisimman monessa muussa Unix-käyttöjärjestelmässä (HP-UX, Aix, Linux
jne).
Windows-käyttöliittymä testataan windows95-
käyttöjärjestelmän sisältävässä tietokoneessa.
Kirjastoja testataan kaikissa edellämainituissa
käyttöjärjestelmäympäristöissä käyttöliittymien testauksen
ohessa.
4. Testauksen organisointi ja raportointi
Testaus on jaettu ryhmän kesken seuraavasti:
Käyttöliittymien testauksen suorittaa pääasiassa ryhmän
algoritmisuunnittelija (Tommi Junttila).
Käyttöliittymäsuunnittelija (Vesa Peltola) keskittyy lähinnä
algoritmien toimivuuteen liittyvään testaukseen kun taas
kuvatiedostoformaattiasiantuntija (Lasse Huovinen) keskittyy
kirjaston siirrettävyyden testaukseen. Projektipäällikkö
(Tommi Liittokivi) testaa koko ohjelmistokokonaisuutta
(käyttöliittymät+ohjelmakirjasto).
Testialueet ovat osittain päällekkäin mikä parantaa virheiden
löytämistodennäköisyyttä. Aihe-alueet on jaettu siten että
ryhmän jäsenet testaavat itse tekemäänsä koodia mahdollisimman
vähän.
Ensimmäiset testit suoritetaan prototyyppi 1-vaiheessa. Siinä ja
kaikissa seuraavissa vaiheissa pyritään testataan kaikkia
edellämainittuja osa-alueita.
Testaus suoritetaan aina vaiheen lopussa kun vaiheen muut tavoitteet
on saatu tehtyä. Kussakin vaiheessa palautetaan testiraportti jossa luetellaan
tarkasti testatut asiat, löydetyt virheet ja niiden syyt (jos tiedossa).
5. Toimintojen testitapaukset ja hyväksymiskriteerit
5.1 Käyttöliittymät
UNIX-käyttöliittymää testataan kokeilemalla lukuisia erilaisia
syötteitä (toimivia ja virheellisiä). Koska käyttäjällä on mahdollisuus
antaa ohjelmalle mielivaltaisia argumentteja, käyttöliittymän
tulee ilmoittaa käyttäjälle virheellisistä syötteistä.
Ohjelmiston tulee myös ilmoittaa käyttäjälle jos tämä yrittää
käyttää peitetiedostolle sopimattomia algoritmeja.
Windows-käyttöliittymässä ei käyttäjän pitäisi pystyä valitsemaan
vääriä algoritmeja vaan käyttöliittymä antaa valita vain sallittuja
algoritmeja peitetiedostoformaatin valinnan jälkeen. Testauksessa
keskitytään käyttöliittymän toiminnallisuuden testaukseen, ohjelman
jokaisen tilan on toimittava
toiminnallisessa määrittelyssä
kuvatulla tavalla.
5.2 Kirjastot
Algoritmien toimivuuden testaus on hankalaa, algoritmit ovat
luonteeltaan sellaisia, että niitä on jopa mahdoton testata
ennen kuin ne toimivat kokonaan.
Testaus suoritetaan kätkemällä ja avaamalla eripituisia tiedostoja
eri peitetiedostoformaatteihin ja vertaamalla saatua sanomaa
alkuperäisteen sanomaan. Kätkemisessä käytetään kaikkia
mahdollisia valittavissa olevia algoritmi-kombinaatioita.
Kirjastosta testataan myös miten se reagoi erilaisiin virhetilanteisiin,
esim. yrittämällä kätkeä liian isoa tiedostoa peitetiedostoon.
Tuotetun kuvatiedoston formaattia verrataan alkuperäiseen (vertailu
suoritetaan useille eri ohjelmistoilla tuotetuille kuville). Näin
vakuututaan siitä, että tuotettu kuvaformaatti ei eroa alkuperäisestä.
5.3 Ohjelmiston testaus UNIX-ympäristössä
DEBUG-moodia ei testata, sillä se ei tule luovutettavaan ohjelmistoon.
Väärien optioiden testaus
- Tavoite:
Ohjelman tulee hyväksyä vain oikeita optioita.
- Testaustapahtuma: Annetaan ohjelmalle useita erilaisia vääriä optioita.
Sekä niin että kaikki optiot ovat vääriä sekä niin että joukossa
on vain yksi väärä optio. Ohjelmiston tulisi palauttaa
kaikissa tilanteissa virheilmoitus.
Kätkentävaiheen testaus
Kaikkien näiden testien onnistuneet tulokset eli kätkötiedostot talletetaan
eri nimillä purkuvaihe- ja yhteensopivuustestejä varten.
Seuraavat testit suoritetaan kaikille ohjelmistoon toteutetuille
peitetiedostoformaateille.
- Verbose-moodin testaus
Tavoite: Ohjelmiston tulee tulostaa standard output:iin tietoa
suorittamistaan toimenpiteistä vain käytettäessä -v optiota.
Testitapahtuma: Suoritetaan seuraavat testit sekä ilman -v optiota että
sen kanssa. Tarkastetaan että tavoite toteutuu.
- Syöttövuon valinnan testaus
Tavoite: Ohjelmiston tulee lukea kätkettävä tieto standard
input:sta joss -f optiolla ei ole toisin määrätty.
Jos -f optio on annettu, tulee ohjelmiston lukea kätkettävä
tieto annetusta tiedostosta joss ko. tiedosto on olemassa.
Jos ko. tiedosto ei ole, tulee ohjelmiston antaa virheilmoitus.
Testitapahtuma: Suoritetaan seuraavat testit sekä ilman -f
optiota että sen kanssa sekä olemassaolevilla että olemattomilla
tiedostonimillä. Tarkastetaan että tavoite toteutuu.
- Kätkentäbittien valinnan testaus
Tavoite: Ohjelmiston tulee toimia -r optiolla annettujen
kulloisellekin peitetiedostoformaatille toteutettujen
kätkentäbittienvalinta-algoritmien kanssa.
Jos algoritmi on väärä, tulee ohjelmiston antaa
virheilmoitus.
Ohjelmistoa on voitava käyttää myös ilman -r optiota,
jolloin sen tulee käyttää ko. peitetiedostoformaatin
oletusalgoritmiä.
Testaustapahtuma: Suoritetaan seuraavat testit sekä ilman
-r optiota että sen kanssa sekä kaikilla oikeilla että
väärällä algoritmivalinnoilla.
Tarkastetaan että tavoite toteutuu.
- Viestin salausalgoritmien testaus
Tavoite: Ohjelmiston tulee sallia -s optiolla
annettujen kulloisellekin
peitetiedostoformaatille toteutettujen
viestin salausalgoritmien kanssa.
Jos algoritmi on väärä, tulee ohjelmiston antaa
virheilmoitus.
Ohjelmistoa on voitava käyttää myös ilman -s
optiota, jolloin sen tulee käyttää ko.
peitetiedostoformaatin oletusalgoritmiä.
Testaustapahtuma: Suoritetaan seuraavat testit
sekä ilman -s optiota että sen kanssa sekä
kaikilla oikeilla että väärällä
algoritmivalinnoilla. Tarkastetaan että tavoite
toteutuu.
- Viestin kompressioalgoritmien testaus
Tavoite: Ohjelmiston tulee sallia -c
optiolla annettujen kulloisellekin
peitetiedostoformaatille toteutettujen
viestin kompressioalgoritmien kanssa.
Jos algoritmi on väärä, tulee ohjelmiston
antaa virheilmoitus.
Ohjelmistoa on voitava käyttää myös ilman -c
optiota, jolloin sen tulee käyttää ko.
peitetiedostoformaatin oletusalgoritmiä.
Testaustapahtuma: Suoritetaan seuraavat
testit sekä ilman -c optiota että sen
kanssa sekä oikeilla että väärillä
algoritmivalinnoilla.
Tarkastetaan että tavoite toteutuu.
- Viestin pituuden testaus
Tavoite: Ohjelmiston tulee antaa
virheilmoitus jos kätkettävä
viesti on liian pitkä eikä
mahdu peitetiedostoon.
Testaustapahtuma: Suoritetaan
seuraavat testit sekä sopivan
mittaisilla että liian pitkillä
viesteillä
Tarkastetaan että tavoite toteutuu.
- Kätkötiedoston kirjoituksen testaus
Tavoite: Ohjelmiston tulee antaa virheilmoitus jos
se ei voi kirjoittaa kätkötiedostoa (
outputfile).
Testaustapahtuma: Yritetään
kätkeä tietoa sekä lailliseen
tiedostoon että sellaiseen,
johon kirjoitus ei onnistu.
Tarkastetaan että tavoite
toteutuu.
Purkuvaiheen testaus
Tässä vaiheessa käytetään kätkentävaiheen onnistuneita tuloksia eli
kätkötiedostoja.
Seuraavat testit suoritetaan kaikille ohjelmistoon toteutetuille
peitetiedostoformaateille.
- Verbose-moodin testaus
Tavoite: Ohjelmiston tulee tulostaa standard output:iin tietoa
suorittamistaan toimenpiteistä vain käytettäessä -v optiota.
Testitapahtuma: Suoritetaan seuraavat testit sekä ilman -v optiota että
sen kanssa. Tarkastetaan että tavoite toteutuu.
- Kätkentäbittien valinnan testaus
Tavoite: Ohjelmiston tulee toimia oikein -r optiolla annettujen
kulloisellekin peitetiedostoformaatille toteutettujen
kätkentäbittienvalinta-algoritmien kanssa.
Jos algoritmi on väärä, tulee ohjelmiston antaa
virheilmoitus.
Ohjelmistoa on voitava käyttää myös ilman -r optiota,
jolloin sen tulee käyttää ko. peitetiedostoformaatin
oletusalgoritmiä.
Ohjelmiston tulee löytää kätketty tieto jos valinta-algoritmi
on sama kuin kätkentävaiheessa käytetty, muutoin ohjelmiston
tulee palautta virheilmoitus.
Testaustapahtuma: Suoritetaan seuraavat testit sekä ilman
-r optiota että sen kanssa sekä oikeilla että väärillä
algoritmivalinnoilla.
Testit suoritetaan sekä samoilla että eri algoritmeillä kuin
kätkentävaiheessa on käytetty.
Tarkastetaan että tavoite toteutuu.
- Viestin salausalgoritmien testaus
Tavoite: Ohjelmiston tulee sallia -s optiolla
annettujen kulloisellekin
peitetiedostoformaatille toteutettujen
viestin salausalgoritmien kanssa.
Jos algoritmi on väärä, tulee ohjelmiston antaa
virheilmoitus.
Ohjelmistoa on voitava käyttää myös ilman -s
optiota, jolloin sen tulee käyttää ko.
peitetiedostoformaatin oletusalgoritmiä.
Ohjelmiston tulee löytää kätketty tieto jos
salausalgoritmi on sama kuin kätkentävaiheessa käytetty,
muutoin ohjelmiston tulee palautta virheilmoitus.
Testaustapahtuma: Suoritetaan seuraavat testit
sekä ilman -s optiota että sen kanssa sekä
oikeilla että väärillä algoritmivalinnoilla.
Testit suoritetaan sekä samoilla että eri algoritmeillä
kuin kätkentävaiheessa on käytetty.
Tarkastetaan että tavoite toteutuu.
- Kätkötiedoston lukemisen testaus
Tavoite: Ohjelmiston tulee antaa virheilmoitus jos
se ei voi lukea kätkötiedostoa
(inputfile).
Testaustapahtuma: Suoritetaan seuraavat testit
sekä olemassa olevilla että olemattomilla
kätkötiedostoilla.
- Puretun viestin oikeellisuuden testaus
Tavoite: Ohjelman tulee oikeilla palauttaa
valinnoilla palauttaa kätketty tieto
bitilleen samanlaisena kuin se oli
kätkettäessä annettu.
Testaustapahtuma: Puretaan kätkentävaiheen
testauksessa syntyneitä kätkötiedostoja.
Tarkastetaan että tavoite toteutuu.
5.4 Ohjelmiston testaus Windows-ympäristössä
- Peitetiedoston nimen oikeellisuuden testaus
Tavoite: Ohjelma ei saa hyväksyä käyttäjän syöttämänä virheellistä
peitetiedoston nimeä.
Testitapahtuma 1: Käyttäjä valitsee viestin piilotus -toiminnon, ja
kirjoittaa peitetiedoston valintaikkunassa tiedoston nimen paikalle
virheellisen tiedoston nimen. Tarkistetaan, että tavoite toteutuu.
Testitapahtuma 2: Vastaava kuin testitapahtuma 1, mutta tehdään viestin
purku -toiminnossa.
- Kirjoituksen testaus
Tavoite: Jos käyttäjän valitsemaa kohdetiedostossa ei voida kirjoittaa,
niin järjestelmän tulee toipua virheestä ja antaa ilmoitus asiasta
käyttäjälle.
Testitapahtuma 1: Käyttäjä valitsee viestin piilotus -toiminnon, ja
valitsee kohdetiedostoksi viallisen nimen (esim "\\" tai "").
Tarkistetaan, että tavoite toteutuu.
- Viestitiedoston oikeellisuuden testaus
Tavoite: Ohjelma ei saa hyväksyä virheellistä viestitiedoston nimeä.
Testitapahtuma 1: Käyttäjä valitsee viestin piilotus -toiminnossa
käyttävänsä viestitiedostoa ja kirjoittaa tiedoston nimen kohdalle
virheellisen tiedostonimen. Tarkistetaan, että tavoite toteutuu.
Testitapahtuma 2: Käyttäjä valitsee viestitiedoston nimen "browse"
-aputoiminnon avulla, ja kirjoittaa tiedoston nimen kohdalle virheellisen
tiedostonimen. Tarkistetaan, että tavoite toteutuu.
5.5 Tallennusformaattien visuaalinen testaus
- Tavoite:
Ohjelman tulee tallentaa kätkötiedostot kätkennän jälkeen samanlaisessa
formaatissa kuin kätkötiedosto oli ennen kätkemistä.
Esimerkiksi kaikkien kätkötiedostoformaatissa mahdollisesti olevien
kommenttien on säilyttävä kätkennän aikana eikä tallennusformaattiin
saa tulla esim. ylimääräisiä välilyöntejä/rivinvaihtoja
ascii-muotoisissa kätköformaateissa.
- Testaustapahtuma: Kätketään viestejä useisiin kunkin
eri formaatin kätkötiedostoihin ja tarkastetaan visuaalisesti että
tavoitteet toteutuvat.
5.6 Yhteensopivuustestit
Suoritetaan purkuvaiheen testaukset eri laiteympäristöistä saatujen
kätkentävaiheen testausten kätkötiedostoilla.
6. Ei-toiminnallisten ominaisuuksien testaaminen
Projektin ensisijaisena tavoitteena on luoda ohjelmakirjasto, jonka tulee
olla mahdollisimman siirrettävä eli käytön laitteistoympäristöstä riippumaton.
Käyttöliittymä toteutetaankin kahteen eri ympäristöön juuri siksi että
kirjaston yleiskäyttöisyys ja siirrettävyys tulee todettua.
Lisäksi ohjelmistoa yritetään testata useissa eri Unix-käyttöjärjestelmissä.
Testausraporttiin kirjataan miten kirjaston siirrettävyys käytännössä
on toteutunut.