{"id":524,"date":"2018-11-08T21:57:05","date_gmt":"2018-11-08T19:57:05","guid":{"rendered":"https:\/\/coursepages.uta.fi\/tiep5\/?page_id=524"},"modified":"2018-11-08T22:00:20","modified_gmt":"2018-11-08T20:00:20","slug":"pieni-testausesimerkki","status":"publish","type":"page","link":"https:\/\/coursepages2.tuni.fi\/tiep5\/syksy-2018\/harjoitustyot\/pieni-testausesimerkki\/","title":{"rendered":"Pieni testausesimerkki"},"content":{"rendered":"<p>Oletetaan, ett\u00e4 er\u00e4\u00e4n\u00e4 vuonna harjoitusty\u00f6n aiheena on bin\u00e4\u00e4rilukujen k\u00e4sittely loogisilla operaatioilla ja ett\u00e4 er\u00e4s kurssin annettu esimerkki on <em>catch22<\/em>. Esimerkin sy\u00f6tteet ovat <em>input_catch22.txt<\/em>-tiedostossa ja malliohjelman n\u00e4ill\u00e4 sy\u00f6tteill\u00e4 tuottamat oikeat tulosteet ovat <em>output_catch22.txt<\/em>-tiedostossa. Oletetaan lis\u00e4ksi, ett\u00e4 ollaan Windows-j\u00e4rjestelm\u00e4ss\u00e4, jossa n\u00e4m\u00e4 tiedostot on kopioitu <em>Laskuri<\/em>-nimisen harjoitusty\u00f6ohjelman l\u00e4hde- ja tavukoodin sis\u00e4lt\u00e4v\u00e4\u00e4n hakemistoon.<\/p>\n<p>T\u00e4ll\u00f6in komentoikkunassa annetulla komennolla:<\/p>\n<pre>   java Laskuri &lt; input_catch22.txt &gt; output_catch22_oma.txt<\/pre>\n<p>ohjelmaa voidaan k\u00e4ske\u00e4 lukemaan sy\u00f6tteet n\u00e4pp\u00e4imist\u00f6n sijasta <em>input_catch22.txt<\/em>-tiedostosta ja ohjaamaan tulosteet n\u00e4yt\u00f6n sijasta <em>output_catch22_oma.txt<\/em>-nimiseen tiedostoon.<\/p>\n<p>Tulosten kaappauksen j\u00e4lkeen ohjelman tuottamia tulosteita ja oikeita tulosteita verrataan toisiinsa. T\u00e4m\u00e4 onnistuu nopeasti esimerkiksi komentoikkunassa annettavalla <a href=\"https:\/\/coursepages2.tuni.fi\/tiep1\/syksy-2018\/ohjelmointivalineita\/komentoikkuna\/\"> <em>fc<\/em>-komennolla<\/a> (Mac-, UNIX- ja Linux-j\u00e4rjestelmiss\u00e4 <em>diff<\/em>-komento) seuraavasti:<\/p>\n<pre>   fc \/N output_catch22.txt output_catch22_oma.txt<\/pre>\n<p>Komento tulostaa ilmoituksen, josta k\u00e4y ilmi ovatko tiedostot sis\u00e4ll\u00f6lt\u00e4\u00e4n samat vai onko tiedostoissa on eroja. Jos eroja l\u00f6ytyy, niin n\u00e4yt\u00f6lle tulostuu eron sis\u00e4lt\u00e4v\u00e4 kohta. <em>N<\/em>-parametri lis\u00e4\u00e4 <em>fc<\/em>-komennon tulosteisiin rivinumerot.<\/p>\n<p>Oletetaan, ett\u00e4 yll\u00e4 annettu komento l\u00f6yt\u00e4\u00e4 eron <em>output_catch22.txt<\/em>&#8211; ja <em>output_catch22_oma.txt<\/em>-tiedostojen v\u00e4lill\u00e4:<\/p>\n<pre>   Comparing files output_catch22_oma.txt and output_CATCH22.TXT\r\n   ***** output_catch22_oma.txt\r\n      16:  2. parametri on 0101010.\r\n      17:  AND-operaation tulos on 10000000.\r\n      18:  OR-operaation tulos on 11111111.\r\n   ***** output_CATCH22.TXT\r\n      16:  2. parametri on 0101010.\r\n      17:  AND-operaation tulos on 00000000.\r\n      18:  OR-operaation tulos on 11111111.\r\n   *****<\/pre>\n<p>Tulosteesta n\u00e4hd\u00e4\u00e4n, ett\u00e4 aluksi tulostuu osa <em>fc<\/em>-komennolle ensimm\u00e4isen\u00e4 annetun tiedoston sis\u00e4ll\u00f6st\u00e4 (<em>output_catch22_oma.txt<\/em>) ja t\u00e4m\u00e4n j\u00e4lkeen vastaava osa j\u00e4lkimm\u00e4isen\u00e4 annetun tiedoston sis\u00e4ll\u00f6st\u00e4 (<em>output_catch22.txt<\/em>). Tulostetut osat erotetaan toisistaan t\u00e4htimerkeill\u00e4. Tulosteita vertailemalla selvi\u00e4\u00e4, ett\u00e4 harjoitusty\u00f6ohjelma oli laskenut AND-operaation tuloksen (rivi 17) yhden numeron osalta v\u00e4\u00e4rin.<\/p>\n<p>Tulosteesta k\u00e4y my\u00f6s ilmi, ett\u00e4 <em>fc<\/em>-komento ei yleens\u00e4 tulosta vain eroavia rivej\u00e4, vaan kyseisi\u00e4 rivej\u00e4 ennen ja niiden j\u00e4lkeen voi tulostua my\u00f6s t\u00e4ysin samoja oikeellisia rivej\u00e4.<\/p>\n<p>Eron l\u00f6ydytty\u00e4 harjoitusty\u00f6n l\u00e4hdekoodia korjataan, kunnes tulosteet vastaavat toisiaan merkilleen.<\/p>\n<p>Kun edell\u00e4 esitetetyss\u00e4 esimerkiss\u00e4 ollut virhe saadaan korjattua, niin <em>fc<\/em>-ohjelma sanoo tulostetiedostoja vertailtaessa:<\/p>\n<pre>   Comparing files output_catch22_oma.txt and output_CATCH22.TXT\r\n   FC: no differences encountered<\/pre>\n<p>sen merkiksi, ett\u00e4 harjoitusty\u00f6ohjelman ja malliratkaisun tulosteet vastaavat t\u00e4sm\u00e4lleen toisiaan <em>catch22<\/em>-esimerkin osalta ja harjoitusty\u00f6 selvi\u00e4\u00e4 siten kyseess\u00e4 olevasta julkisesta testist\u00e4.<\/p>\n<p>Jos virheit\u00e4 on useita, niin ensimm\u00e4ist\u00e4 eroa seuraavat <em>fc<\/em>-komennon tulosteet ovat hyvin vaikeaselkoisia. T\u00e4st\u00e4 syyst\u00e4 ohjelmaa kannattaa muokata siten, ett\u00e4 keskittyy aina vain <strong>ensimm\u00e4isen<\/strong> eron tuottavan virheen korjaamiseen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oletetaan, ett\u00e4 er\u00e4\u00e4n\u00e4 vuonna harjoitusty\u00f6n aiheena on bin\u00e4\u00e4rilukujen k\u00e4sittely loogisilla operaatioilla ja ett\u00e4 er\u00e4s kurssin annettu esimerkki on catch22. Esimerkin sy\u00f6tteet ovat input_catch22.txt-tiedostossa ja malliohjelman n\u00e4ill\u00e4 sy\u00f6tteill\u00e4 tuottamat oikeat tulosteet ovat output_catch22.txt-tiedostossa. Oletetaan lis\u00e4ksi, ett\u00e4 ollaan Windows-j\u00e4rjestelm\u00e4ss\u00e4, jossa n\u00e4m\u00e4 tiedostot on kopioitu Laskuri-nimisen harjoitusty\u00f6ohjelman l\u00e4hde- ja tavukoodin sis\u00e4lt\u00e4v\u00e4\u00e4n hakemistoon. T\u00e4ll\u00f6in komentoikkunassa annetulla komennolla: java Laskuri &hellip; <a href=\"https:\/\/coursepages2.tuni.fi\/tiep5\/syksy-2018\/harjoitustyot\/pieni-testausesimerkki\/\" class=\"more-link\">Jatka artikkeliin <span class=\"screen-reader-text\">Pieni testausesimerkki<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"parent":396,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-524","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/comments?post=524"}],"version-history":[{"count":2,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/524\/revisions"}],"predecessor-version":[{"id":526,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/524\/revisions\/526"}],"up":[{"embeddable":true,"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/pages\/396"}],"wp:attachment":[{"href":"https:\/\/coursepages2.tuni.fi\/tiep5\/wp-json\/wp\/v2\/media?parent=524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}