% .tex-tiedosto projektin dokumenttien latomiseksi.

% Kirjoitelmaluokka, tässä käytetään projektien projdoc-luokkaa.
%\documentclass[twoside]{projdoc}
\documentclass[report]{projdoc}

\usepackage{paralist} % siistimmät lista-alkiot

\usepackage{afterpage}  % Tyhjän sivun lisäämiseen

\newcommand\blankpage{%
    \null
    \thispagestyle{empty}%
    \addtocounter{page}{-1}%
    \newpage}


% Projektin nimi
\def \pname {Groundhog} % käytä \pname projektin nimenä
\newcommand{\lpname}{\MakeLowercase{\pname}} % projektin nimi pienellä
\project{\pname}

% Luottamuksellisuus: käytä termiä 'Luottamuksellinen' tai 'Julkinen'
\publicity{Julkinen}

% Versionumero: numerointikäytäntö on projektikohtainen
\version{1.0.0}

% Päivämäärä: ylikirjoittaa automaattisen päiväyksen
% \date{9.2.2021}

% Dokumentin nimi
\title{Järjestelmätestauksen testauskerran suunnitelma}

\def \jobname {testaussuunnitelma} % tämän tiedoston nimi ilman .tex

% Tekijät: huomaa aakkosjärjestys sukunimen mukaan
\author{Iiro Iivanainen} {Harri Linna}{Jere Pakkanen}{Riikka Vilavaara}
% Puhelinnumerot: tekijöitä vastaava järjestys!
\authorphones{}{}{}{}
% Sähköpostiosoitteet: tekijöitä vastaava järestys!
\authoremails{iiro.h.iivanainen@student.jyu.fi}{harri.s.linna@student.jyu.fi}{jejopakk@student.jyu.fi}{riikka.k.vilavaara@student.jyu.fi}
% Etu- ja sukunimen alkukirjaimet: tekijöitä vastaava järjestys!
\authorinitials{II}{HL}{JP}{RV}

% Tiivistelmä dokumentista: tämä ei siis ole tiivistelmä projektista,
% vaan tämän ko. dokumentin tarkoituksesta. 
\docabstract{Dokumentti määrittelee Groundhog-projektissa kehitetyn ohjelmiston manuaalisen järjestelmätestauksen testauskäytänteet ja testausympäristön. Testauskerralta vaaditusta raportista     esitetään testauskerran yksilöinti- ja yhteenvetotiedot sekä kustakin havainnosta kirjattavat tiedot. Lisäksi esitetään kunkin testijoukon suoritusohjeet, lähtötila, testiskenaariot ja testidata.}


% Tiivistelmä projektista
\projectabstract{{\pname}-projekti suunnittelee ja toteuttaa Geologian tutkimuskeskukselle (GTK) multimodaalisen tutkimusdatan hallintaohjelmiston kevätlukukaudella 2021.}

% Avainsanat: dokumentin sisältöön liittyviä olennaisia asiasanoja: aakkosjärjestys, ensimmäinen sana isolla alkukirjaimella ja piste loppuun.
\keywords{järjestelmätestaus, 
manuaalinen testaus, raportointiohjeet, sovellusprojekti, suunnitelma, testaaminen, testauskäytänteet, testausohje.}

% juoksevan numeroinnin asetukset
\newcounter{vaatimuslaskuri}
\setcounter{vaatimuslaskuri}{0}
\newcommand{\laskuri}{\arabic{vaatimuslaskuri}.\stepcounter{vaatimuslaskuri}}

% Varsinainen tulosteessa näkyvä ladonta alkaa
\begin{document}

% Tämä latoo versiohistorialle ympäristön, sen alapuolelle ladotaan
% versiohistoriataulukko. Esimerkin vuoksi tehty. 
\versionhistory

%\begin{tabular}{|c|r|p{7cm}|p{3.5cm}|}
\begin{tabular}{|c|l|p{10.5cm}|c|}
\hline
\textbf{Versio} & \textbf{Päivämäärä} & \textbf{Muutokset} & \textbf{Tekijät} \\
\hline
0.0.1 & 31.5.2021  & Tehtiin alustava versio kategorisoiduilla testijoukoilla ja valmiiksi kirjoitetuilla testiskenaarioilla karttakuvan avaamiseen liittyen. & II\\
\hline
0.2.0 & 10.6.2021 & Korjattiin palautteen mukaan sekä kirjoitettu testiskenaariot puhtaaaksi. & II\\
\hline
0.3.0 & 18.6.2021 & Korjattiin muodolliset ja sisällölliset puuttet ohjaajan ja tilaajan palautteen pohjalta. Testiskenaariot ja testidatat päivitetty. & II\\
\hline
0.3.1 & 21.6.2021 & Suoritettiin testiskenaariot 1.1-2.13 ja muokattiin kyseiset tekstiosiot. & HL, II\\
\hline
0.3.2 & 22.6.2021 & Suoritettiin testiskenaariot 2.13-4.3 ja muokattiin kyseiset tekstiosiot. & HL, II\\
\hline
0.4.0 & 23.6.2021 & Suoritettiin testiskenaariot 4.3-6.5 ja muokattiin kyseiset tekstiosiot. & HL, II\\
\hline
0.5.0 & 29.6.2021 & Korjattiin muodolliset puutteet ohjaajan palautteen pohjalta. & II\\
\hline
0.5.1 & 6.7.2021 & Asemoitiin kansilehti uudelleen. & HL\\
\hline
0.5.2 & 7.7.2021 & Siirrettiin tietoa projektista dokumenttiluokkaan ja päivitettiin termilistaa. & HL\\
\hline
1.0.0 & 7.7.2021 & Hyväksytty versio julkistettiin. & HL\\
\hline
\end{tabular}

% \projectinfo latoo ympäristön projektin tiivistelmälle, joka on 
% projektikohtainen.
% Projektin tiivistelmä ja tekijöiden tiedot ladotaan automaattisesti sivun
% alkuun. Eli lisättävä projektiorganisaation tiedot muiden kuin tekijäiden
% osalta sekä tarvittavat yhteystiedot. Alla tämä on tehty esimerkin vuoksi.
\projectinfo

\afterpage{\blankpage}


%----------------------------------------------------------------------------
% \mainmatter latoo automaattisesti sisällysluettelon ym. alkusivut, ja 
%% sen jälkeen alkaa dokumentin sisällysluettelossa näkyvät luvut.
\mainmatter

% \chapter{Pääluvun nimi} aloittaa pääluvun, \section{Alaluvun nimi} alaluvun,
% ja \subsection{Ala-alaluvun nimi} ala-alaluvun.
\chapter{Johdanto}

{\pname}-projekti\footnote{Groundhog Daytä vietetään Kanadassa vuosittain 2. helmikuuta.} kehittää Geologian tutkimuskeskukselle (GTK) multimodaalisen tutkimusdatan hallintaohjelmiston kevätlukukaudella 2021. Projektin jäsenet kehittävät ohjelmiston osana Jyväskylän yliopiston informaatioteknologian tiedekunnan Sovellusprojekti-nimistä projektiopintojaksoa.

Dokumentti sisältää järjestelmätestauksen testauskerralla suoritettavat testiskenaariot jaettuina testijoukkoihin. Järjestelmätestauksen tavoitteena on todentaa kehitetyn ohjelmiston vaatimusten toteutuminen ja löytää siitä toiminnallisia häiriöitä. 

Testiskenaariot perustuvat vaatimusmäärittelyssä \cite{vaatimusmaarittely} annettuun kuvaukseen sovelluksen toiminnasta varmistaen toteutettujen vaatimusten täyttymisen. Dokumentissa käytettävät kehitettävän sovelluksen keskeiset käsitteet kuvataan vaatimusmäärittelyssä  \cite{vaatimusmaarittely}.

Järjestelmätestauksen lisäksi käyttöliittymän toimintaa testataan jatkuvasti kehityksen aikana projektiryhmän toimesta. Käytettävyyttä on arvioitu erillisen testaamisen sijaan tilaajan edustajien ja ohjaajien antaman palautteen kautta. 

Dokumentin luvussa 2 kuvataan testauskerran tavoitteet, käytänteet, testidata ja testausympäristö. Luku 3 sisältää testauskertojen
    raportoinnin ohjeet. Luvuissa 4--9 annetaan eri testijoukkojen suoritusohjeet sekä luetellaan niiden testiskenaariot. Testaussuunnitelman lisäksi testaamiseen on laadittu valmis taulukkomuotoinen raportointipohja \cite{raportointipohja}, johon merkitään suoritettujen testitapausten havainnot .


\chapter{Testauskäytänteet ja -ympäristö}

Luvussa kuvataan testauskerran tavoitteet, käytänteet, testausympäristö sekä laadittu testidata. Luvun tavoitteena on opastaa testauskerran suorittajaa tarkistamaan testausympäristön mukainen laitekokoonpano.

\section{Testauskerran tavoitteet ja lähestymistavat}

Testauskerran testaustyyppinä on vaatimuspohjainen järjestelmätestaus, joka suoritetaan mustalaatikkotestauksena. Testauskerran tavoitteena on todentaa kehitetylle sovellukselle asetettujen vaatimusten toteutuminen. Jokainen tietojärjestelmän osa testataan mukaillen järjestelmän luonnollista käyttöä alusta loppuun. Järjestelmätestauksen toteuttaa projektiryhmä oikean elämän käyttöä muistuttavien testiskenaarioiden, esimerkkidatan ja testausympäristön avulla.




\section{Testausympäristö}

Testattava ohjelmisto on työpöytäsovellus, jonka tulee olla ajettavissa millä tahansa perustietokoneella, johon on asennettuna Windows-käyttöjärjestelmä. Testausympäristön on täytettävät seuraavat vaatimukset:

% TODO testiskenaario: Käyttäjä muuttaa käyttöjärjestelmän lokalisaatiota niin, että numeroiden ja päivämäärien. Käyttäjä valitsee kieliasetuksista kielen mistä puuttuvat ääkköset esimerkiksi englannin.

\begin{Ventry}{Ohjelmiston versio}
    \item[Ohjelmiston versio] Testattavan ohjelmiston tulee olla versiohallinnan viimeisin versio, viimeinen julkistettu prototyyppi tai viimeisin juilkistettu valmisohjelma.
    \item[Laitteisto] Testauksessa käytetyn tietokoneen tulee olla alle 10 vuoden ikäinen ja siihen on oltava asennettuna Windows 10 -käyt\-tö\-jär\-jes\-tel\-mä ja 32-bittinen .Net core. Koneessa on oltava keskusmuistia vähintään 4 Gb. Näytön tarkkuuden tulee olla vähintään 1280×720. Syöttövälineinä on oltava vähintään näppäimistö sekä kaksipainikkeinen hiri tai vastaavat välineet.
    \item[Tilavaatimukset] Testaajan tulee suorittaa testauskerta tavanomaista työtilaa vastaavassa tilassa.
    \item[Muut vaatimukset] Testaajalla on oltava testattavan ohjelman lisäksi raportointipohja avoinna erillisessä taulukkolaskentaohjelmassa. Ohjelma pidetään mielellään erillisellä näytöllä näkyvillä. Lisäksi testaajan tietokoneessa täytyy olla tekstieditori ja kuvankäsittelyohjelma.
\end{Ventry}




\section{Testidata}

Testiskenaarioita varten on valmisteltu tomografiakuvia vaatimuksissa määritellyissä formaateissa. Liitedatat ovat kuva-, taulukko- ja tekstitiedostoina, saatavilla eri formaateissa. Lisäksi testauskerralla yritetään avata virheellisiä tiedostoja joiden sisältö ei vastaa formaatin mukaista tiedostopäätettä. Muu mahdollinen testidata (kuten syötteet) on määritelty tarkemmin testijoukkojen suoritusohjeissa.


Testaamista varten valmisteltu kansiorakenne ja tiedostot ovat seuraavat:


\begin{compactitem}
    \item[] \texttt{Karttakuvat}
        \begin{compactitem}
            \item[] \texttt{PNG-Sequence}
             \begin{compactitem}
                \item[] \texttt{1\_1-8-0-520-merged0000.png}
                \item[] ...
                \item[] \texttt{1\_1-8-0-520-merged0499.png}
              \end{compactitem}
            \item[] \texttt{TIFF-Sequence}
            \begin{compactitem}
                \item[] \texttt{mri-stack0000.tif}
                \item[] ...
                \item[] \texttt{mri-stack0026.tif}
              \end{compactitem}
            \item[] \texttt{mri-stack\_8-Bit\_186x226\_27.raw}
            \item[] \texttt{mri-stack.tif}
        \end{compactitem}
    \item[] \texttt{Liitedatat}
        \begin{compactitem}
            \item[] \texttt{KuvaTiedostot}
                \begin{compactitem}
                     \item[] \texttt{PngKuva.png}
                     \item[] \texttt{JpegKuva.jpg}
                     \item[] \texttt{TiffKuva.tif}
                \end{compactitem}
            \item[] \texttt{TekstiTiedostot}
                \begin{compactitem}
                     \item[] \texttt{TekstiTiedosto.txt}
                     \item[] \texttt{VapaaFormaatti.esimerkki}
                \end{compactitem}
            \item[] \texttt{TaulukkoTiedostot}
                \begin{compactitem}
                 \item[] \texttt{Excel.xlsx}
                 \item[] \texttt{CSV.csv}
                \end{compactitem}
             \item[] \texttt{VirheellisetTiedostot}
             \begin{compactitem}
                    \item[] \texttt{Tekstitiedosto.png}
                    \item[] \texttt{Tekstitiedosto.tif}
                    \item[] \texttt{Tekstitiedosto.jpg}
                    \item[] \texttt{TiffKuva.csv}
                    \item[] \texttt{TiffKuva.xlsx}
                \end{compactitem}
        \end{compactitem}
\end{compactitem}


\chapter{Testauksen raportointi}

Luku sisältää testauskerran raportointiohjeet. Testaajan tulee kirjata havaintonsa valmiiseen Excel-ra\-por\-toin\-ti\-poh\-jaan \cite{raportointipohja}, joka hänellä on auki ohjelmistoa testatessa. 

\section{Testauskerran yksilöintitiedot}

Yksilöintiedoista raportointipohjaan tulee kirjata

\begin{compactitem}
    \item testaaja(t),
    \item päivämäärä,
    \item aloitusaika,
    \item lopetusaika,
    \item ohjelmiston nimi,
    \item ohjelmiston versio,
    \item testaussuunnitelman nimi,
    \item testaussuunnitelman versio,
    \item käyttöjärjestelmä (32- tai 64 bittinen),
    \item keskusmuistin määrä,
    \item näytön resoluutio,
    \item hiirityyppi.
\end{compactitem}

\section{Havainnoista esitettävät tiedot}

Kustakin havainnosta kirjataan

\begin{compactitem}
    \item yksilöivä numero,
    \item testiskenaarion kuvaus,
    \item vakavuusluokka (katso luku 3.3),
    \item perustelut.
\end{compactitem}

Jos testiskenaarion vakavuusluokka on \textit{OK}, perustelut voidaan jättää tyhjäksi. Muiden vakavuusluokkien tapauksissa tulee kuvata perusteluissa mahdollisimman tarkasti jokainen suoritettu toiminto ja kirjattu syöte  sekä mahdolliset virheilmoitukset. Testiskenaarion ohittaminen tulee myös perustella.

\section{Havaintojen vakavuusluokat}

Kunkin testiskenaarion vakavuusluokaksi tulee kirjata jokin seuraavista vaihtoehdoista:
\begin{Ventry}{Huomautus}
\item[OK] Toiminnot ovat ennakoituja. Ongelmia tai poikkeuksia ei havaittu testiskenaarion aikana. Lisäselitystä ei vaadita.
\item[Huomautus] Testiskenaario suoritettiin ennakoidusta ja vaste vastaa ennakoitua, mutta sen aikana havaittiin jotain epäilyttävää tai huomionarvoista.
\item[Virhe] Testiskenaarion suorituksessa tai lopputilassa havaittiin poikkeamia tai muita ongelmia.
\item[Ohitettu] Testiskenaariota ei voitu jostain syystä suorittaa.
\end{Ventry}


\section{Testauskerran yhteenveto ja suositukset}

Testijoukot suoritettuaan tulee testaajan kirjoittaa testauskerran yhteenveto ja kirjata testauskerran johtopäätökseksi yksi seuraavista:

\begin{Ventry}{Hyväksytty huomautuksin}
\item[Hyväksytty] Kaikki testiskenaariot suoritettiin ennakoidusti eikä  löy\-det\-ty \linebreak huo\-mau\-tet\-ta\-vaa.
\item[Hyväksytty huomautuksin] Kaikki testausskenaariot suoritettiin ilman havaittuja virheitä, mutta joihinkin testiskenaarioihin liittyy merkittävää huomioitavaa sovelluksen toiminnan kannalta.
\item[Korjattavaa] Vähintään yhdessä testiskenaariossa havaittiin puute tai virhe, tai vähintään yhtä testiskenaariota ei voitu suorittaa.
\end{Ventry}

Testauskerran havaintojen määrät lasketaan testijoukoittain ja vakavuusluokittain. Raporttiin tulee kirjata testiskenaarioiden kokonaismäärän ohella kunkin
    vakavuusluokan testiskenaarioiden määrä testijoukoittain.

Yhteenvedossa testaaja kertoo:
\begin{compactitem}
    \item poikkeamiset testauskerran suunnitelmasta,
    \item johtopäätöksen vaatimusten täyttymisestä,
    \item suositukset jatkotoimenpiteistä.
\end{compactitem}
Mikäli virheitä tai puutteita ei havaittu, ohjelma voidaan ottaa käyttöön. Muussa tapauksessa testaajan tulee suositella korjauksia tai täydennyksiä sekä testauskerran uusimista. Testaajan tulee myös mainita mahdolliset suunnitelmasta poikkeamiset, kuten testiskenaarioiden ohittamiset.



\chapter{Karttatiedostojen käsittely}

\section{Suoritusohjeet}

Ohjelmaan lisätään ja vaihdetaan uusia karttakuvia valikosta \textit{Edit} komennolla \textit{Add/Change Map}. Ohjelmaa ei tarvitse käynnistää uudelleen karttojen lataamisen välillä. Karttakuvan saa näkyville rastittamalla \textit{Enable view} -kohdasta valintaruudun \textit{XY}.

Testidatana käytettävä raw-tiedosto koostuu 27 kuvasta. Sen leveys on 186 ja korkeus on 226 pikseliä sekä se on 8-bittinen integer Big-Endian formaatissa. Väärät dimensiot annettaessa kuvaa ei näytetä oikein.

Testiskenaarion 1.5 tuloksen varmistamiseksi testaajan tulee tarkastella ohjelman esittämää pinoa. Se on riippuvainen siitä, että testijoukossa "Pääakselien suuntaisten siivujen näyttäminen" \  testattavat ominaisuudet toimivat.

\section{Karttatiedoston avaaminen ja vaihtaminen}

% TODO Testitapaus 3D-tiff: 4 Gb kokorajoitus. Ilmoitus käyttäjälle ettei suurempia tiedostoja tueta.

\begin{enumerate}
    \item [1.1] Ohjelmalla pystyy avaamaan kartan 3D-tiff -tiedostosta.
    \item [1.2] Ohjelmalla pystyy avaamaan kartan valitsemalla  tiff-kuvasarjan.
    \item [1.3] Ohjelmalla pystyy avaamaan kartan valitsemalla  png-kuvasarjan.
    \item [1.4] Ohjelmalla pystyy avaamaan kartan valitsemalla raw-tiedoston ja määrittelemällä tälle le\-ve\-ys-, korkeus- ja syvyysdimensiot sekä oikean formaatin.
    \item [1.5] Ohjelman esittämä \textit{Requested}-tiedostokoko eroaa raw-tiedostosta, mikäli sen dimensiot tai formaatin (muun kuin Endian-arvon) asettaa väärin.
    \item [1.6] Väärät karttatiedoston asetukset esittävät raw-tiedoston vääristyneesti ohjelmassa.
    \item [1.7] Ohjelma antaa virheilmoituksen, kun karttaformaatin valitsimeen annetaan vääränlainen karttatiedosto.
\end{enumerate}

\chapter{Pääakselien suuntaisten siivujen käsittely}

\section{Suoritusohjeet}

Luvun 4.1 testujoukossa avattiin XY-pino. Seuraavaksi testataan pinon eri näyttötapoja ja luodaan ZY- ja XZ-pinot alkuperäisestä pinosta. Pinojen luominen onnistuu valikosta \textit{Tools} komennolla \textit{Create ZY-Stack} ja \textit{Create XZ-Stack}. Testaajan tulee varmistaa, että ohjelma esittää luodut pinot odotetusti.

Testiskenaariossa 2.1 alkuperäinen kuva on helpoin tarkistaa joko tiff- tai png-kuvasarjoista. Karttakuva voi bittisyvyydestä riippuen vaatia harmaansävyskaalan säätämistä, mitä käsitellään testiskenaarioissa 2.9--2.11.

Ohjelmalla ei pysty luomaan ZY- ja XZ-siivuja 3D-tiff tiedostosta. Testiskenaarioissa 2.12--2.14 testaajan tulee käyttää jotain muuta formaattia.

Testiskenaarioita 2.13--2.16 varten testaajan tulee ensin tallentaa näyte JSON-tiedostoon ennen kuin ohjelma suljetaan. Tallentamista testataan testiskenaariossa 4.1. Testaajan tulee siis suorittaa testiskenaariossa 4.1 testattava toiminto ennen testiskenaarioita 2.13--2.16.


\section{Pääakselien suuntaisten siivujen näyttäminen}

\begin{enumerate}
    \item [2.1] Ohjelman näyttämä karttakuva vastaa alkuperäistä kuvatiedostoa visuaalisesti.
    \item [2.2] Ohjelmalla pystyy vaihtamaan näytettyä siivua tekstikentästä.
    \item [2.3] Pinon siivun valitsevalle tekstikentälle voi antaa virheellisen syötteen.
    \item [2.4] Ohjelmalla pystyy vaihtamaan näytettyä siivua liukusäädintä liu'uttamalla.
    \item [2.5] Ohjelmalla pystyy vaihtamaan näytettyä siivua liukusäätimestä nuolinäppäinten avulla.
    \item [2.6] Ohjelma tarkentaa 1--10 000  \% välillä karttakuvaa sen alapuolella olevasta tekstikentästä.
    \item [2.7] Karttakuvaa tarkentava tekstikenttä osaa käsitellä virheellisen syötteen.
    \item [2.8] Ohjelma tarkentaa 1--10 000  \% välillä karttakuvaa sen alapuolella olevasta liukusäätimestä.
    \item [2.9] Ohjelma muuttaa karttakuvien harmaansävyskaalaa syöttämällä numeerisesti minimi- ja maksimiarvot kohtaan \textit{Levels}.
    \item [2.10] Ohjelma muuttaa karttakuvien harmaansävyskaalaa syöttämällä liukusäätimillä minimi- ja maksimiarvot kohtaan \textit{Levels}.
    \item [2.11] Harmaansävyskaalan tekstikentät osaavat käsitellä virheelliset syötteet, kuten alueen ulkopuolella olevat arvot.
    

\end{enumerate}

\section{Siivujen luominen ja poistaminen}

% TODO Testitapaus kuvasiivu: Yksittäisen 2D-kuvasiivun kokorajoitus on 2 GB. Ilmoitus käyttäjälle ettei suurempia tiedostoja tueta.

\begin{enumerate}
    \item [2.12] Ohjelmalla pystyy luomaan sekä näyttämään ZY- ja XZ-siivut.
    \item [2.13] Ohjelmalla pystyy poistamaan luodut pinot levyltä käyttäjän sulkiessa ohjelman.
    \item [2.14] Ohjelmalla pystyy jättämään luodut pinot levylle käyttäjän sulkiessa ohjelman.
\end{enumerate}

\section{Siivujen luonnin rajoitukset}
\begin{enumerate}
    \item [2.15] Ohjelmalla ei pysty luomaan ZY- ja XY-siivuja 3D-tiff-tiedostojen kohdalla.
    \item [2.16] Ohjelmalla ei pysty tallentamaan ZY- ja XY-siivuja 3D-tiff tiedostojen kohdalla.
\end{enumerate}

\chapter{Liitetyn datan käsittely}

\section{Suoritusohjeet}

Testiskenaariossa 3.1 asetetaan liitosdata ilman karttakuvaa. Tätä varten suositellaan avattavan uusi instanssi ohjelmasta.

Mikäli tiedoston pääte on tuettu, mutta se ei vastaa sisältöä, ohjelma antaa virheilmoituiksen. Varattuja kuvaformaatteja ovat \texttt{bmp} ,   \texttt{gif} ,  \texttt{ico} , \texttt{jpg}, \texttt{jpeg} , \texttt{png} ,   \texttt{tif} ja \texttt{tiff}. Varattuja taulukkoformaatteja ovat \texttt{csv} , \texttt{xlsx} , \texttt{xlsb} ja \texttt{xls}.

Ennen testiskenaarion 3.4 suorittamista näyte tulee tallentaa JSON-tiedostoon. Tallentamista testataan testiskenaariossa 4.1. Testaajan tulee siis suorittaa testiskenaariossa 4.1 testattava toiminto ennen testiskenaariota 3.4.

Testiskenaarioissa 3.8, 3.13, 3.17 ja 3.21 testataan liitetiedoston päivittämistä muokkauksen jälkeen. Tätä varten testaajan tulee tehdä jokin muutos tiedostoon kuva-, tekstieditorilla tai taulukkolaskentaohjelmalla.

Ennen testiskenaarion 3.27 suorittamista käyttäjän tulee poistaa liitetiedosto levyltä.

\section{Liitosdatan lisääminen}
\begin{enumerate}
    \item [3.1] Ohjelmalla pystytään lisäämään ja listaamaan liitosdataa, vaikka karttakuvaa ei ole ladattu. 
    \item [3.2] Liitosdatan voi lisätä \textit{Add Connector} -valikosta ja sille voidaan asettaa koordinaatit numeerisesti.
    \item [3.3] \textit{Edit Connectors} -tilan ollessa päällä, karttakuvaa painamalla liitosdata voidaan asettaa hiirellä osoitettuun koordinaattiin.
    \item [3.4] Ohjelmalla pystytään kopioimaan liitetiedostot projektikansioon \textit{Copy to sample folder} -a\-se\-tuk\-sel\-la, mikäli näyte on ensin tallennettu.
\end{enumerate}


\section{Tekstimuotoisen datan käsittely}

\begin{enumerate}
    \item [3.5] Ohjelmalla pystyy lisäämään ja näyttämään txt-tekstitiedostoa.
    \item [3.6] Ohjelma esittää mielivaltaisen (ei varatun) tiedostopäätteen omaavan tiedoston tekstitiedostona.
    \item [3.7] Ohjelma ilmoittaa käyttäjälle, jos tekstitiedosto käyttää varattua tiedostopäätettä.
    \item [3.8] Tekstitiedoston muokkaamisen jälkeen ohjelma kykenee päivittämään näytetyn tiedoston \textit{Reload File} -painikkeesta.
\end{enumerate}

\section{Kuvamuotoisen datan käsittely}

\begin{enumerate}
    \item [3.9] Ohjelmalla pystyy lisäämään ja näyttämään \texttt{png}-kuvatiedostoja.
    \item [3.10] Ohjelmalla pystyy lisäämään ja näyttämään \texttt{tif}-kuvatiedostoja.
    \item [3.11] Ohjelmalla pystyy lisäämään ja näyttämään \texttt{jpeg}-kuvatiedostoja.
    \item [3.12] Ohjelma ilmoittaa käyttäjälle, jos kuvatiedostoille varatulla päätteellä olevan tiedoston sisältö ei vastaa kuvatiedostoa.
    \item [3.13] Kuvatiedoston muokkaamisen jälkeen ohjelma kykenee päivittämään näytetyn tiedoston \textit{Reload File} -painikkeesta.
\end{enumerate}

\section{Taulukkomuotoisen datan käsittely}

\begin{enumerate}
    \item [3.14] Ohjelmalla pystyy lisäämään ja näyttämään \texttt{csv}-tiedostoja taulukkoina.
    \item [3.15] Ohjelma ilmoittaa käyttäjälle, jos \texttt{csv}-päätteellä olevan tiedoston sisältö ei vastaa \texttt{csv}-tie\-dos\-to\-a.
    \item [3.16] Ohjelmalla pystyy vaihtamaan tulkitun \texttt{csv}-tiedoston erottimen.
    \item [3.17] \texttt{csv}-tiedoston muokkaamisen jälkeen ohjelmalla pystyy päivittämään näytetyn tiedoston \textit{Reload File} -painikkeesta.
    \item [3.18] Ohjelmalla pystyy lisäämään ja näyttämään \texttt{xlsx}-tiedostoja taulukkoina.
    \item [3.19] Ohjelma ilmoittaa käyttäjälle, jos \texttt{xlsx}-päätteellä olevan tiedoston sisältö ei vastaa \texttt{xlsx}-tiedostoa.
    \item [3.20] Ohjelmalla pystyy vaihtamaan \texttt{xlsx}-tiedoston välilehden.
    \item [3.21] \texttt{xlsx}-tiedoston muokkaamisen jälkeen ohjelma kykenee päivittämään näytetyn tiedoston \textit{Reload File} -painikkeesta.
    \item [3.22] Ohjelmalla pystytään tulkitsemaan taulukon ensimmäinen rivi otsikkorivinä.
\end{enumerate}

\section{Liitetyn datan valitseminen}

\begin{enumerate}
    \item [3.23] Ohjelmalla pystyy hakemaan liitettyä dataa nimen perusteella liitosdatojen listauksesta.
    \item [3.24] Ohjelmalla pystyy vaihtamaan siivut liitedatan sijaintiin valitsemalla se listasta ja painamalla kontekstivalikosta \textit{Go To}.
    \item [3.25] \textit{View}-osion asetuksen \textit{Attached Data Point} ollessa aktiivinen, voidaan näyttää liitosdata valitsemalla sen liitoskohta karttakuvasta.
    \item [3.26] Liukusäätimen liitosdatan määrän indikaattoria painamalla voidaan valita siivu, jonka kohdalla on asetettu liitosdataa.
\end{enumerate}

\section{Liitetyn datan poistaminen}

\begin{enumerate}
    \item [3.27] Liitosdata voidaan poistaa valitsemalla se listasta ja painamalla kontekstivalikosta \textit{Delete Selected}.
    \item [3.28] Ohjelma ilmoittaa käyttäjälle, jos yritetään avata kovalevyltä poistettua liitetiedostoa.
    \item [3.29] Ohjelma ilmoittaa käyttäjälle, jos yritetään \textit{Reload File} -painikkeesta päivittää kovalevyltä poistettua liitetiedostoa.
\end{enumerate}


\chapter{Näytteen tallentaminen ja siirtäminen levyllä}

\section{Suoritusohjeet}

Luvun testijoukoilla tarkastetaan tiedon pysyvyys ohjelman sulkemisen jälkeen. Tiedon tulee olla myös siirrettävissä hakemistojen, levyasemien ja tietokoneiden välillä.

\section{Näytteen tallentaminen ja avaaminen}
\begin{enumerate}
    \item [4.1] Ohjelma pystyy tallentamaan näytteen tiedot levylle JSON-tiedostoksi \textit{Save as} -toiminnolla käyttäjän määrittämään hakemistoon.
    \item [4.2] Näyte pystytään avaamaan uudestaan JSON-tiedostosta ohjelman sulkemisen jälkeen.
    \item [4.3] Näytteeseen tehdyt muutokset pystytään tallentamaan JSON-tiedostoon \textit{Save}-toiminnolla.
\end{enumerate}


\section{Näytteen siirtäminen}
\begin{enumerate}
    \item [4.4] Näyte pystytään siirtämään levyllä siten, että viittaukset tiedostopolkuihin säilyvät relatiivisina JSON-tiedostoon nähden.
\end{enumerate}

\chapter{Metatietojen käsittely}

\section{Suoritusohjeet}

Liitosdatan metatiedot ovat nähtävissä valitsemalla listauksen kontekstimenusta komennon \textit{Metadata}. Näytteen metatiedot tulevat esiin valikosta \textit{View} komennolla \textit{Sample Metadata}. Käyttäjä voi lisätä metatietoja vapaasti.

\section{Liitedatan metatietojen käsittely}


\begin{enumerate}
    \item [5.1] Ohjelmalla pystyy avaamaan liitosdatan metatiedot erilliseen ikkunaan. 
    \item [5.2] Ohjelmalla pystyy muokkaamaan liitetyn datan metatietoja.
    \item [5.3] Ohjelmalla pystyy lisäämään liitettyyn dataan uusia metatietoja.
    \item [5.4] Ohjelmalla pystyy poistamaan liitetystä datasta metatietoja.
\end{enumerate}

\section{Näytteen metatietojen käsittely}

\begin{enumerate}
    \item [5.5] Ohjelmalla pystyy avaamaan näytteen metatiedot erilliseen ikkunaan. 
    \item [5.6] Ohjelmalla pystyy muokkaamaan näytteen metatietoja.
    \item [5.7] Ohjelmalla pystyy lisäämään näytteeseen uusia metatietoja.
    \item [5.8] Ohjelmalla pystyy poistamaan näytteestä metatietoja.
\end{enumerate}

\section{Oletusmetatiedot}

\begin{enumerate}
    \item [5.9] Tallennetun näytteen metatiedoissa on oletuksena näytteen luoneen käyttäjän nimi ja luontipäivän aikaleima. 
    \item [5.10] Uudelleen tallennetun näytteen metatiedoissa on oletuksena \textit{Last edited} -aikaleima.
    \item [5.11] Liitedatan metatiedoissa on oletuksena käyttäjän antama kuvaus, liitedatan luoneen käyttäjän nimi ja luontipäivän aikaleima.
\end{enumerate}

\chapter{Käyttäjäasetusten muokkaaminen ohjelmassa}

\section{Suoritusohjeet}

Käyttäjäasetuksia voidaan muokata valikosta \textit{Edit} komennolla \textit{Preferences}. Asetukset eivät ole pysyviä ohjelman uudelleenkäynnistyttyä.

\section{Asetusten muokkaaminen}
\begin{enumerate}
    \item [6.1] Ohjelmalla pystyy vaihtamaan käyttäjänimen.
    \item [6.2] Käyttäjänimen asettavaan tekstikenttään ei voi syöttää yli 256 merkin käyttäjänimeä.
    \item [6.3] Käyttäjänimen asettavaan tekstikenttään voi syöttää tyhjän nimen.
    \item [6.4] Ohjelmalla pystyy asettamaan käyttäjän määrittämät värit X-, Y- ja Z-akseleille. 
    \item [6.5] Ohjelmalla pystyy asettamaan kartalla esitettävän ja kartalla valitun liitedatan värit. 
    \item [6.6] Ohjelmalla pystyy palauttamaan käyttäjäasetukset oletusarvoiksi. 
\end{enumerate}

%LÄHTEET
\begin{thebibliography}{1}
\makeatletter
\addtocounter{\@listctr}{0}
\makeatother
%Katso kirjoitusohjeen luku 2.3 ja 2.4.

\bibitem{vaatimusmaarittely} Pakkanen, Jere. {\pname}-projekti, Vaatimusmäärittely. Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2021. \url{https://sovellusprojektit.it.jyu.fi/groundhog/vaatimusmaarittelyt/vaatimusmaarittely_0.5.0.pdf}.

\bibitem{raportointipohja} Iivanainen, Iiro. {\pname}-projekti, Raportointipohja. Jyväskylän yliopisto, informaatioteknologian tiedekunta, 2021. \url{https://sovellusprojektit.it.jyu.fi/groundhog/Jarjestelmatestaussuunnitelma/HavaintotaulukkoPohja_0.4.0.xlsx}.


% Lähdeluettelossa lähteiden otsikoista ja URL-osoitteista on osa vajaita. Niiden avulla ei siis välttämättä ole mahdollista löytää oikeaa lähdettä.
% Uupuisiko luvuista lähdeviittauksia osaan lähteistä?

\end{thebibliography}

%LIITTEET
%\begin{appendix}

%\chapter{Ensimmäinen liite}

%Tänne tarvittaessa liitteitä.

%\end{appendix}

% Dokumentin  lopetus
\end{document}
