{"id":29381,"date":"2022-02-23T07:21:00","date_gmt":"2022-02-23T06:21:00","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/testy-niefunkcjonalne\/"},"modified":"2024-11-07T14:54:36","modified_gmt":"2024-11-07T13:54:36","slug":"testy-niefunkcjonalne","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/testy-niefunkcjonalne\/","title":{"rendered":"Testy niefunkcjonalne \u2013 co warto o nich wiedzie\u0107?"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Przejd\u017a do<\/p>\n    <ol>\n                    <li><a href=\"#testy-funkcjonalne\">1.  Testy funkcjonalne<\/a><\/li>\n                    <li><a href=\"#testy-niefunkcjonalne\">2.  Testy niefunkcjonalne<\/a><\/li>\n                    <li><a href=\"#testy-niefunkcjonalne-a-rzeczywistosc\">3.  Testy niefunkcjonalne a rzeczywisto\u015b\u0107<\/a><\/li>\n                    <li><a href=\"#typy-testow-niefunkcjonalnych\">4.  Typy test\u00f3w niefunkcjonalnych<\/a><\/li>\n                    <li><a href=\"#podsumowanie\">5.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"testy-funkcjonalne\"><br>Testy funkcjonalne<\/h2>\n\n\n\n<p><a href=\"https:\/\/nearshore-it.eu\/artykuly\/testowanie-funkcjonalne\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/artykuly\/testowanie-funkcjonalne\">Testy funkcjonalne <\/a>skupiaj\u0105 si\u0119 na najbardziej podstawowych wymaganiach \u2013 <strong>czy funkcjonalno\u015bci dzia\u0142aj\u0105 zgodnie z za\u0142o\u017ceniami.<\/strong> Zesp\u00f3\u0142 projektowy dostaje gotowe wymagania, a klient czy pracodawca mniej lub bardziej dok\u0142adnie wie, co chce otrzyma\u0107. Podczas pracy wymagania te mog\u0105 ulega\u0107 zmianom \u2013 niemniej ci\u0105gle mamy je przed oczami i wiemy, do czego d\u0105\u017cymy. Tester, programista, analityk biznesowy czy nawet u\u017cytkownik ko\u0144cowy jest w stanie przetestowa\u0107 aplikacj\u0119 wzgl\u0119dem wymaga\u0144 funkcjonalnych i zazwyczaj nie ma tutaj potrzeby zdobywania skomplikowanej wiedzy teoretycznej o tym, jak testowa\u0107. Aplikacj\u0119 nale\u017cy \u201eprzeklika\u0107\u201d, sprawdzaj\u0105c, czy spe\u0142nia swoje zadanie zgodnie z wymaganiami biznesowymi.<\/p>\n\n\n\n<p><strong>Przeczytaj tak\u017ce:<\/strong> <a href=\"https:\/https:\/\/nearshore-it.eu\/artykuly\/quality-assurance-czyli-jak-zagwarantowac-jakosc-i-bezpieczenstwo-w-projektach-it\/\" data-type=\"link\" data-id=\"https:\/https:\/\/nearshore-it.eu\/artykuly\/quality-assurance-czyli-jak-zagwarantowac-jakosc-i-bezpieczenstwo-w-projektach-it\/\">Quality Assurance<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"testy-niefunkcjonalne\">Testy niefunkcjonalne<\/h2>\n\n\n\n<p>Testy niefunkcjonalne okre\u015blane s\u0105 te\u017c jako <strong>testy jako\u015bciowe<\/strong> \u2013 tutaj sprawa jest bardziej skomplikowana ni\u017c w przypadku test\u00f3w funkcjonalnych. Najcz\u0119\u015bciej zakres, jaki sprawdzaj\u0105, definiowany jest kr\u00f3tkim zdaniem: <strong>\u201ejak dzia\u0142a system\u201d<\/strong>. Zacznijmy od podzia\u0142u na podstawie sylabusa ISTQB \u2013 Analityk Test\u00f3w. Testy niefunkcjonalne mog\u0105 sprawdza\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>u\u017cyteczno\u015b\u0107 (usability)<\/li>\n\n\n\n<li>bezpiecze\u0144stwo (security)<\/li>\n\n\n\n<li>niezawodno\u015b\u0107 (reliability)<\/li>\n\n\n\n<li>wydajno\u015b\u0107 (performance)<\/li>\n\n\n\n<li>utrzymywalno\u015b\u0107 (maintainability)<\/li>\n\n\n\n<li>przenaszalno\u015b\u0107 (portability)<\/li>\n\n\n\n<li>kompatybilno\u015b\u0107 (compatibility)<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"350\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.02.04_testy_niefunkjonalne.png\" alt=\"Ikony\" class=\"wp-image-29382\" title=\"\" srcset=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.02.04_testy_niefunkjonalne.png 750w, https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.02.04_testy_niefunkjonalne-300x140.png 300w, https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.02.04_testy_niefunkjonalne-495x231.png 495w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"testy-niefunkcjonalne-a-rzeczywistosc\">Testy niefunkcjonalne a rzeczywisto\u015b\u0107<\/h2>\n\n\n\n<p>Na testowanie niefunkcjonalne decyduj\u0105 si\u0119 tylko te firmy, kt\u00f3re s\u0105 \u015bwiadome tej problematyki oraz zagro\u017ce\u0144 wynikaj\u0105cych z nieprzeprowadzania test\u00f3w. Nie wszystko jednak uda si\u0119 przewidzie\u0107 czy znale\u017a\u0107 i od czasu do czasu mog\u0105 przekona\u0107 si\u0119 o tym tak\u017ce giganci, tacy jak np. LinkedIn, z kt\u00f3rego wyciek\u0142y i zosta\u0142y wystawione na sprzeda\u017c<strong> <\/strong>dane 700 milion\u00f3w u\u017cytkownik\u00f3w (93% kont). Problem\u00f3w nie unikn\u0105\u0142 te\u017c Facebook (oraz aplikacje z jego grupy, takie jak WhatsApp, Messenger, Instagram), kt\u00f3ry w pa\u017adzierniku 2021 odnotowa\u0142 najwi\u0119ksz\u0105 w historii awari\u0119 i by\u0142 niedost\u0119pny przez niemal 6 godzin. Ta awaria wygenerowa\u0142a straty rz\u0119du ok. <a href=\"https:\/\/www.dobreprogramy.pl\/ile-kosztowala-awaria-facebooka-gigant-stracil-miliony,6690836443990656a\" target=\"_blank\" rel=\"noopener\">6 mld dolar\u00f3w!<\/a><\/p>\n\n\n\n<p>Interesuj\u0105cy jest zw\u0142aszcza przypadek projekt\u00f3w publicznych \u2013 cho\u0107 wydaje si\u0119, \u017ce obwarowane s\u0105 one szeregiem wymog\u00f3w prawnych, znacznie trudniejszych do zrealizowania, to mimo wszystko s\u0105 one cz\u0119stym obiektem niepowodze\u0144, takich jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>luki bezpiecze\u0144stwa<\/strong> \u2013 jak <a href=\"https:\/\/niebezpiecznik.pl\/post\/dziura-w-systemie-e-toll-mozna-bylo-pobrac-dane-uzytkownikow\/\" target=\"_blank\" rel=\"noopener\">luka w systemie e-Toll,<\/a> kt\u00f3ra umo\u017cliwia\u0142a pobieranie danych u\u017cytkownik\u00f3w<\/li>\n\n\n\n<li><strong>problemy wydajno\u015bciowe<\/strong> \u2013 jak np. te, z kt\u00f3rymi boryka\u0142y si\u0119 <a href=\"https:\/\/niebezpiecznik.pl\/post\/polskie-rzadowe-serwery-czasu-ulatwiaja-prowadzenie-atakow-ddos-ntp-amplification\/\" target=\"_blank\" rel=\"noopener\">rz\u0105dowe serwery<\/a><\/li>\n\n\n\n<li><strong>nieprzydatno\u015b\u0107 dla u\u017cytkownik\u00f3w<\/strong> \u2013 niska intuicyjno\u015b\u0107 systemu utrudniaj\u0105ca dzia\u0142anie aplikacji do <a href=\"https:\/\/www.komputerswiat.pl\/aktualnosci\/smartfony\/aplikacja-e-toll-nie-do-przyjecia-kierowcy-krytykuja-rzadowy-program\/71wnqfn\" target=\"_blank\" rel=\"noopener\">poboru op\u0142at na autostradach<\/a> by\u0142a powodem krytyki ze strony wielu kierowc\u00f3w<\/li>\n<\/ul>\n\n\n\n<p>Dlaczego wi\u0119c testy niefunkcjonalne nie s\u0105 przeprowadzane? W niewielkich (np. do 10 os\u00f3b) i kr\u00f3tkoterminowych projektach, nawet je\u015bli \u015bwiadomo\u015b\u0107 test\u00f3w niefunkcjonalnych jest du\u017ca, to cz\u0119sto s\u0105 pomijane z do\u015b\u0107 oczywistych wzgl\u0119d\u00f3w \u2013 <strong>koszty.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"typy-testow-niefunkcjonalnych\">Typy test\u00f3w niefunkcjonalnych<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-wydajnosci\">Testy wydajno\u015bci<\/h3>\n\n\n\n<p>W\u015br\u00f3d test\u00f3w niefunkcjonalnych wymienionych wcze\u015bniej, s\u0105 2 typy test\u00f3w, kt\u00f3rych \u015bwiadomo\u015b\u0107 mocno ro\u015bnie i warto si\u0119 nimi zainteresowa\u0107. Pierwszym, z ni\u017cszym poziomem wej\u015bcia, s\u0105 testy wydajno\u015bci. Tematyka wydaje si\u0119 do\u015b\u0107 skomplikowana, jednak po poznaniu kilku narz\u0119dzi (np.<strong> JMeter, Gatling<\/strong>) okazuje si\u0119, \u017ce stosunkowo szybko mo\u017cna zacz\u0105\u0107 przeprowadza\u0107 podstawowe testy wydajno\u015bci, kt\u00f3re pozwol\u0105 wy\u0142apa\u0107 powa\u017cne problemy w aplikacji.<\/p>\n\n\n\n<p><strong>Wydzieli\u0107 mo\u017cna nast\u0119puj\u0105ce typy test\u00f3w wydajno\u015bci:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>obci\u0105\u017ceniowe <\/strong>\u2013 testowanie dzia\u0142ania systemu w zale\u017cno\u015bci od r\u00f3\u017cnych poziom\u00f3w obci\u0105\u017ce\u0144, mieszcz\u0105cych si\u0119 w zak\u0142adanym zakresie,<\/li>\n\n\n\n<li><strong>przeci\u0105\u017ceniowe <\/strong>\u2013 testowanie wydajno\u015bci poza maksymalnym oczekiwanym obci\u0105\u017ceniem lub przy dost\u0119pno\u015bci zasob\u00f3w ni\u017cszej ni\u017c minimalne wymagania,<\/li>\n\n\n\n<li><strong>skalowalno\u015b\u0107 <\/strong>\u2013 testowanie zdolno\u015bci systemu do zwi\u0119kszania lub zmniejszania wykorzystywanych zasob\u00f3w w zale\u017cno\u015bci od obci\u0105\u017cenia,<\/li>\n\n\n\n<li><strong>skokowe <\/strong>\u2013 testowanie zdolno\u015bci systemu do przetworzenia skokowego przyrostu obci\u0105\u017cenia, a nast\u0119pnie powrotu do typowego obci\u0105\u017cenia,<\/li>\n\n\n\n<li><strong>wytrzyma\u0142o\u015bciowe<\/strong> \u2013 testowanie stabilno\u015bci systemu pod zadanym obci\u0105\u017ceniem w czasie, jaki jest adekwatny i proporcjonalny do reali\u00f3w produkcyjnych,<\/li>\n\n\n\n<li><strong>wsp\u00f3\u0142bie\u017cno\u015bci <\/strong>\u2013 testowanie sytuacji, w kt\u00f3rej ta sama akcja jest wykonywana jednocze\u015bnie,<\/li>\n\n\n\n<li><strong>przepustowo\u015bci <\/strong>\u2013 okre\u015blanie maksymalnego obci\u0105\u017cenia, jakie jest w stanie obs\u0142u\u017cy\u0107 system przy jednoczesnym spe\u0142nieniu wymaga\u0144 wydajno\u015bciowych.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.02.09_graphic2.png\" alt=\"Dokonanie oceny charakterystyk system\u00f3w - testowanie wydajno\u015bciowe \" class=\"wp-image-62644\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p id=\"wymagania-dla-testow-wydajnosciowych\"><strong>Wymagania dla test\u00f3w wydajno\u015bciowych<\/strong>:<\/p>\n\n\n\n<p>Przy tworzeniu nowych aplikacji trudno jest poda\u0107 dok\u0142adne wymagania dla test\u00f3w wydajno\u015bciowych. Opieraj\u0105 si\u0119 one zwykle na okre\u015bleniu profili produkcyjnych lub na podstawie przewidywa\u0144 b\u0105d\u017a do\u015bwiadcze\u0144 z podobnymi, dzia\u0142aj\u0105cymi ju\u017c aplikacjami. \u0141atwiej jest zdefiniowa\u0107 wymagania przy wdra\u017caniu nowszej wersji oprogramowania, poniewa\u017c mo\u017cna si\u0119 tutaj odnie\u015b\u0107 do danych produkcyjnych, jak np. liczba zapyta\u0144 na sekund\u0119, przepustowo\u015b\u0107 \u0142\u0105cza, moc obliczeniowa. Jednym z zagro\u017ce\u0144 przy wykonywaniu test\u00f3w wydajno\u015bci jest ich nieumiej\u0119tne przeprowadzanie (np. przez osoby niemaj\u0105ce do\u015bwiadczenia), kt\u00f3re mo\u017ce prowadzi\u0107 nawet do braku analizy kluczowych element\u00f3w systemu czy do mylnej interpretacji wynik\u00f3w. Kolejnym du\u017cym ryzykiem jest przeprowadzanie test\u00f3w na \u015brodowiskach testowych, kt\u00f3re zazwyczaj nie s\u0105 to\u017csame ze \u015brodowiskami produkcyjnymi ze wzgl\u0119du na konfiguracj\u0119, ilo\u015b\u0107 danych oraz moc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-bezpieczenstwa\">Testy bezpiecze\u0144stwa<\/h3>\n\n\n\n<p>Drugim, znacznie szerszym, je\u015bli nie przeogromnym dzia\u0142em, jest bezpiecze\u0144stwo. Testy bezpiecze\u0144stwa sprawdzaj\u0105, czy system wystarczaj\u0105co dobrze chroni dane oraz funkcjonalno\u015bci przed atakiem os\u00f3b trzecich. Ich waga ro\u015bnie coraz bardziej \u2013 kto z nas nie s\u0142ysza\u0142 o r\u00f3\u017cnych w\u0142amaniach, wyciekach, oszustwach czy kradzie\u017cach spowodowanych niewystarczaj\u0105cymi zabezpieczeniami b\u0105d\u017a nisk\u0105 \u015bwiadomo\u015bci\u0105 u\u017cytkownik\u00f3w? Trudno jest jednak znale\u017a\u0107 testera, kt\u00f3ry na co dzie\u0144 zajmuje si\u0119 testami funkcjonalnymi, a opr\u00f3cz tego mo\u017ce od czasu do czasu przeprowadzi\u0107 testy bezpiecze\u0144stwa. Dlatego najcz\u0119\u015bciej (je\u015bli w og\u00f3le) po stworzeniu systemu (lub jego cz\u0119\u015bci) audyty bezpiecze\u0144stwa zleca si\u0119 zewn\u0119trznym firmom. Temat jest bardzo rozleg\u0142y, a nauk\u0119 warto zacz\u0105\u0107 od poznania <a href=\"https:\/\/owasp.org\/www-project-top-ten\/\" target=\"_blank\" rel=\"noopener\">OWASP Top 10<\/a> \u2013 to dokument zawieraj\u0105cy <strong>10 najcz\u0119stszych zagro\u017ce\u0144 bezpiecze\u0144stwa.<\/strong><\/p>\n\n\n\n<p><strong>Wybrane typy test\u00f3w bezpiecze\u0144stwa:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>skanowanie podatno\u015bci <\/strong>\u2013 wykonywane przy u\u017cyciu narz\u0119dzi, kt\u00f3re skanuj\u0105c program, szukaj\u0105 znanych podatno\u015bci w jego komponentach,<\/li>\n\n\n\n<li><strong>skanowanie bezpiecze\u0144stwa <\/strong>\u2013 skupia si\u0119 na bezpiecze\u0144stwie konfiguracji aplikacji, sieci oraz innych system\u00f3w,<\/li>\n\n\n\n<li><strong>testy penetracyjne<\/strong> \u2013 proces symuluj\u0105cy rzeczywisty atak,<\/li>\n\n\n\n<li><strong>audyt bezpiecze\u0144stwa <\/strong>\u2013 szeroko zakrojony, ustrukturyzowany proces inspekcji aplikacji zgodny ze zdefiniowanymi standardami,<\/li>\n\n\n\n<li><strong>ocena ryzyka<\/strong> \u2013 analiza i zidentyfikowanie najwi\u0119kszych zagro\u017ce\u0144 bezpiecze\u0144stwa<\/li>\n\n\n\n<li><strong>ocena stanu zabezpiecze\u0144<\/strong> \u2013 po\u0142\u0105czenie skanowania bezpiecze\u0144stwa, test\u00f3w penetracyjnych oraz oceny ryzyka w celu okre\u015blenia poziomu bie\u017c\u0105cych zabezpiecze\u0144 oraz ich efektywno\u015bci.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-uzytecznosci\">Testy u\u017cyteczno\u015bci <\/h3>\n\n\n\n<p>Te testy sprawdzaj\u0105, <strong>czy u\u017cytkownik mo\u017ce \u0142atwo nauczy\u0107 si\u0119 korzysta\u0107 z aplikacji i czy jego do\u015bwiadczenia b\u0119d\u0105 pozytywne. <\/strong>W gr\u0119 wchodz\u0105 tutaj tak\u017ce takie aspekty jak estetyka, intuicyjno\u015b\u0107, a tak\u017ce mo\u017cliwo\u015b\u0107 korzystania z aplikacji przez osoby niepe\u0142nosprawne. Warto mie\u0107 to z ty\u0142u g\u0142owy i skupia\u0107 si\u0119 na tych kwestiach od samego pocz\u0105tku projektu, szczeg\u00f3lnie w projektach zwinnych, gdzie mamy sta\u0142y kontakt z klientem i realn\u0105 mo\u017cliwo\u015b\u0107 wp\u0142ywu na zmian\u0119 tworzonych funkcjonalno\u015bci. Bezkrytyczne dodawanie funkcjonalno\u015bci zgodnie z wymaganiami klienta (kt\u00f3ry nie zawsze jest osob\u0105 techniczn\u0105) nie jest najlepszym podej\u015bciem. Przeprowadzenie test\u00f3w u\u017cyteczno\u015bci dopiero po uko\u0144czeniu aplikacji mo\u017ce skutkowa\u0107 znacz\u0105cym wzrostem koszt\u00f3w projektu, spowodowanym dodatkowymi pracami. <\/p>\n\n\n\n<p><strong>Przeczytaj artyku\u0142<\/strong>: <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/dostepnosc-cyfrowa\/\" data-type=\"post\" data-id=\"30607\">Dost\u0119pno\u015b\u0107 cyfrowa strony \u2013 jak o&nbsp;ni\u0105 zadba\u0107?<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-niezawodnosci\">Testy niezawodno\u015bci <\/h3>\n\n\n\n<p>Testowanie niezawodno\u015bci sprowadza si\u0119 do weryfikacji, <strong>czy system jest w stanie dzia\u0142a\u0107 poprawnie przez okre\u015blony czas w okre\u015blonych warunkach.<\/strong> Trudno jest jednak symulowa\u0107 warunki produkcyjne na \u015brodowiskach testowych przez wystarczaj\u0105co d\u0142ugi czas, dlatego mi\u0119dzy innymi testy takie mog\u0105 odbywa\u0107 si\u0119 cz\u0119\u015bciowo na serwerach produkcyjnych. Przyk\u0142adem testowania niezawodno\u015bci jest umieszczenie nowej wersji aplikacji na jednym (mniej wykorzystywanym) z wielu serwer\u00f3w oraz pozostawienie poprzedniej wersji na pozosta\u0142ych. Po za\u0142o\u017conym okresie monitorowania aplikacji nowa wersja zostaje wgrana na pozosta\u0142e serwery. Podej\u015bciu takiemu musi towarzyszy\u0107 odpowiednia konfiguracja, aby w przypadku wyst\u0105pienia problem\u00f3w z now\u0105 wersj\u0105 na pojedynczej maszynie ruch zosta\u0142 automatycznie przekierowany na pozosta\u0142e. <\/p>\n\n\n\n<p><strong>Charakterystyki niezawodno\u015bci to:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>dojrza\u0142o\u015b\u0107 <\/strong>\u2013 poziom spe\u0142nienia wymaga\u0144 dotycz\u0105cych niezawodno\u015bci,<\/li>\n\n\n\n<li><strong>osi\u0105galno\u015b\u0107 <\/strong>\u2013 czas, po jakim system jest dost\u0119pny,<\/li>\n\n\n\n<li><strong>tolerowanie usterek <\/strong>\u2013 zdolno\u015b\u0107 systemu do kontynuowania dzia\u0142ania podczas wyst\u0105pienia awarii,<\/li>\n\n\n\n<li><strong>odtwarzalno\u015b\u0107<\/strong> \u2013 zdolno\u015b\u0107 do odzyskania danych po awarii, mierzona w czasie oraz ilo\u015bci utraconych danych.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-utrzymywalnosci\">Testy utrzymywalno\u015bci<\/h3>\n\n\n\n<p>Testowanie utrzymywalno\u015bci pozwala <strong>przeanalizowa\u0107 stopie\u0144 skomplikowania utrzymania systemu w przysz\u0142o\u015bci.<\/strong> S\u0105 raczej rzadko przeprowadzane, mimo tego, \u017ce utrzymanie programu b\u0119dzie (w za\u0142o\u017ceniu) trwa\u0142o d\u0142u\u017cej ni\u017c jego tworzenie. Wa\u017cn\u0105 rol\u0119 odgrywa tutaj \u201eprofilaktyka\u201d ju\u017c od pocz\u0105tku trwania projektu \u2013 systematyczne przeprowadzanie code review oraz prowadzenie dokumentacji. Jest bardzo prawdopodobne, \u017ce <strong>system w przysz\u0142o\u015bci b\u0119dzie utrzymywany b\u0105d\u017a rozwijany przez inne osoby ni\u017c te, kt\u00f3re go tworzy\u0142y.<\/strong> Z tego powodu przejrzysto\u015b\u0107 kodu i dokumentacji odgrywa tutaj kluczow\u0105 rol\u0119.<\/p>\n\n\n\n<p><strong>G\u0142\u00f3wnymi celami test\u00f3w utrzymywalno\u015bci s\u0105:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>minimalizacja koszt\u00f3w utrzymania aplikacji,<\/li>\n\n\n\n<li>minimalizacja przestoj\u00f3w w dzia\u0142aniu aplikacji, potrzebnych do jej utrzymania.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-przenaszalnosci\">Testy przenaszalno\u015bci<\/h3>\n\n\n\n<p>Testowanie przenaszalno\u015bci <strong>pozwala okre\u015bli\u0107 poziom skomplikowania wi\u0105\u017c\u0105cy si\u0119 z przenoszeniem komponentu oprogramowania lub aplikacji z jednego \u015brodowiska na drugie. <\/strong>W tym przypadku r\u00f3wnie\u017c rzadko spotyka si\u0119 wydzielenie ich z procesu testowego i skupienie si\u0119 tylko na takich rodzajach test\u00f3w. Testom przenaszalno\u015bci w naturalny spos\u00f3b sprzyjaj\u0105 <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testuj-przed-wszystkimi-czyli-shift-left-testing-w-praktyce\/\">zwinne frameworki projektowe,<\/a> takie jak <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/scrum-vs-kanban\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/artykuly\/scrum-vs-kanban\">Scrum<\/a>. W iteracyjnym podej\u015bciu do tworzenia oprogramowania przenaszalno\u015b\u0107 jest testowana przy okazji cz\u0119stych wyda\u0144 kolejnych wersji (przenoszenie aplikacji ze \u015brodowiska developerskiego \/ testowego na produkcyjne), nawet co 2 tygodnie. Inne sytuacje, w kt\u00f3rych warto wykona\u0107 testy przenaszalno\u015bci to np. przej\u015bcie z przegl\u0105darki Internet Explorer na Chrome, z jednej wersji bazy danych na inn\u0105 lub rozszerzenie mo\u017cliwo\u015bci instalacji programu na kolejne wersje system\u00f3w Windows czy Mac. Miar\u0105 przeno\u015bno\u015bci mo\u017ce by\u0107 nak\u0142ad pracy wymagany do przeniesienia komponentu oprogramowania z jednego \u015brodowiska do innego. Charakterystyki przenaszalno\u015bci to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>instalowalno\u015b\u0107 <\/strong>\u2013 mo\u017cliwo\u015b\u0107 zainstalowania programu w nowym systemie,<\/li>\n\n\n\n<li><strong>zdolno\u015b\u0107 adaptacyjna <\/strong>\u2013 mo\u017cliwo\u015b\u0107 zainstalowania aplikacji na wszystkich docelowych systemach,<\/li>\n\n\n\n<li><strong>zast\u0119powalno\u015b\u0107 <\/strong>\u2013 mo\u017cliwo\u015b\u0107 zast\u0105pienia istniej\u0105cego modu\u0142u oprogramowania.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"testy-kompatybilnosci\">Testy kompatybilno\u015bci<\/h3>\n\n\n\n<p>Testy kompatybilno\u015bci <strong>weryfikuj\u0105 mo\u017cliwo\u015b\u0107 wsp\u00f3\u0142istnienia r\u00f3\u017cnych program\u00f3w na tym samym \u015brodowisku, <\/strong>a tak\u017ce mo\u017cliwo\u015b\u0107 dzia\u0142ania programu w zale\u017cno\u015bci od r\u00f3\u017cnych parametr\u00f3w. Bardzo popularny jest test kompatybilno\u015bci, kt\u00f3ry ma na celu sprawdzenie dzia\u0142ania aplikacji w r\u00f3\u017cnych przegl\u0105darkach, takich jak Chrome, Firefox, Internet Explorer, Safari czy Opera. Innym przypadkiem s\u0105 <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/jak-skutecznie-testowac-aplikacje-mobilne\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/jak-skutecznie-testowac-aplikacje-mobilne\/\">testy aplikacji mobilnych<\/a> na wielu r\u00f3\u017cnych urz\u0105dzeniach. Podej\u015bcie takie pozwala zidentyfikowa\u0107 problemy, z kt\u00f3rymi mog\u0105 spotka\u0107 si\u0119 klienci, u\u017cywaj\u0105c niestandardowych system\u00f3w operacyjnych b\u0105d\u017a przegl\u0105darek.<\/p>\n\n\n\n<p><strong>Kompatybilno\u015b\u0107 mo\u017cna testowa\u0107 ze wzgl\u0119du na:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sprz\u0119t<\/li>\n\n\n\n<li>system operacyjny<\/li>\n\n\n\n<li>oprogramowanie<\/li>\n\n\n\n<li>sie\u0107<\/li>\n\n\n\n<li>przegl\u0105dark\u0119<\/li>\n\n\n\n<li>urz\u0105dzenie mobilne<\/li>\n\n\n\n<li>wersj\u0119 oprogramowania<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p>Testy funkcjonalne s\u0105 bardzo wa\u017cne i w zdecydowanej wi\u0119kszo\u015bci projekt\u00f3w nikt nie kwestionuje ich istotno\u015bci. Bie\u017c\u0105ce testowanie manualne oraz rozwijanie i utrzymywanie regresji praktycznie wyczerpuje temat. Musimy jednak by\u0107 \u015bwiadomi, jak wa\u017cne jest r\u00f3wnie\u017c testowanie niefunkcjonalne i jakie ryzyko wi\u0105\u017ce si\u0119 z pomijaniem tego typu test\u00f3w. Cz\u0119sto ju\u017c na etapie planowania test\u00f3w brakuje dok\u0142adnej analizy, jakie testy niefunkcjonalne powinny by\u0107 przeprowadzone, co sprawia, \u017ce tylko po\u015brednio cz\u0119\u015b\u0107 b\u0142\u0119d\u00f3w zostaje znaleziona.<strong> Zagro\u017cenia s\u0105 du\u017ce: nieodpowiadaj\u0105ca strona sklepu w Black Friday, wyciek poufnych danych klient\u00f3w, zablokowanie strony dla okupu, nieintuicyjno\u015b\u0107 aplikacji czy brzydki design zniech\u0119caj\u0105cy u\u017cytkownik\u00f3w do korzystania, niedzia\u0142aj\u0105ce p\u0142atno\u015bci po wgraniu nowej wersji\u2026 <\/strong>Wszystko to mo\u017ce okaza\u0107 si\u0119 znacznie bardziej kosztowne ni\u017c inwestycja w systematyczne przeprowadzanie test\u00f3w niefunkcjonalnych.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Testowanie funkcjonalne jest uznawane za standard i przeprowadzane jest w zdecydowanej wi\u0119kszo\u015bci projekt\u00f3w. Potrzeba przeprowadzania test\u00f3w funkcjonalnych jest intuicyjna \u2013 programista doda\u0142 now\u0105 funkcjonalno\u015b\u0107, tester sprawdza, czy dzia\u0142a ona prawid\u0142owo. Ale jak uzasadni\u0107 potrzeb\u0119 testowania niefunkcjonalnego i czym w\u0142a\u015bciwie s\u0105 testy niefunkcjonalne? W artykule postaram si\u0119 bardziej szczeg\u00f3\u0142owo przyjrze\u0107 typom test\u00f3w niefunkcjonalnych oraz temu, czym mo\u017ce grozi\u0107 pomijanie ich w projektach.<\/p>\n","protected":false},"author":142,"featured_media":29389,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":798,"footnotes":""},"categories":[1,582],"tags":[562],"offering":[522],"class_list":["post-29381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-qa","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=29381"}],"version-history":[{"count":4,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29381\/revisions"}],"predecessor-version":[{"id":33913,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29381\/revisions\/33913"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/29389"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=29381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=29381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=29381"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=29381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}