Всичко, което трябва да знаете за методите за тестване на софтуер
СъдържаниеРазгънетеСъдържание
Преди софтуерът да бъде изпратен за обществена или търговска употреба, програмистите прекарват часове в изглаждане на всяка грешка, като продуктът остава в неизвестност, докато всички заинтересовани страни не бъдат доволни.
Софтуерните гиганти от Силиконовата долина като Google и Facebook често доставят популярни продукти на пазара, въпреки грешките с нисък приоритет в техния софтуер. Инвеститорите и милиони лоялни потребители ще толерират софтуерни актуализации и временни пречупвания в продуктите, които тези компании предлагат.
Повечето софтуерни компании нямат този лукс. Клиентите искат продуктите да работят, както се рекламират и с право са разтревожени, ако има нерешени уязвимости.
Защо са необходими умения за тестване?
С толкова много налични опции за разработка на софтуер, клиентите не мислят два пъти за прескачане на кораб, ако продуктът смърди на загубено време и пари. Софтуерните предприятия трябва да извършват стриктни тестове на своите продукти, преди да ги пуснат на клиенти. Тези тестове предлагат следните прозрения:
- Те подчертават разликите между оригиналната концепция и крайния резултат.
- Те проверяват дали софтуерът работи, както са планирали дизайнерите.
- Те оценяват характеристиките и качеството.
- Те потвърждават, че крайният продукт отговаря на изискванията на клиента.
Тестването следва строг план за оптимизиране на натоварването, времето и парите, като същевременно предоставя на заинтересованите страни основна информация за придвижване на продукта напред. Целта е да се улесни положителното изживяване на крайния потребител, като се поддържа задълбочено осигуряване на качеството (QA) програма. Предвид високите залози за разработчиците, QA мениджърите са едни от тях най-печелившите в технологичната индустрия. Тестването обикновено следва следните стъпки:
- Извършете анализ на изискванията, където мениджърите очертават план за въвеждане на подходяща стратегия за тестване.
- Започнете тестове и анализирайте резултатите.
- Коригирайте всички дефекти и поставете софтуера чрез регресионно тестване (система за проверка дали програмата все още работи след модификации).
- Създайте доклад за приключването на теста, който описва подробно процеса и резултатите.
Физическите лица могат да станат сертифицирани софтуерни тестери чрез BCS, The Chartered Institute for IT, СПРИ СЕ (Международен квалификационен съвет за тестване на софтуер) и ASQ (Американско дружество за качество).
Методи за тестване на софтуер
Тестването на черна и бяла кутия са два основни метода за преценка на поведението и производителността на продукта. Тестването на черна кутия, наричано още функционално или базирано на спецификации тестване, се фокусира върху изхода. Тестерите не се интересуват от вътрешните механизми. Те само проверяват дали софтуерът прави това, което трябва да прави. Познаването на кодирането не е необходимо и тестерите работят на ниво потребителски интерфейс.
Тестване на бяла кутия използва опит в кодирането като част от тестовата процедура. Когато даден продукт се провали, тестерите навлизат дълбоко в кода, за да открият причината. Разработчиците на софтуер ще направят това сами, защото клиентите очакват от тях да накарат даден продукт да работи. Тестването на бяла кутия се нарича също „структурно базирано“ или „стъклена кутия“.
Статичното тестване проверява изходния код и придружаващата го документация, но не изпълнява програмата. Статичните тестове започват в началото на разработката на продукта по време на процеса на проверка.
Динамичното тестване използва различни входове, когато софтуерът работи, а тестери сравняват изходите с очакваното поведение. Тестването на графичния потребителски интерфейс оценява форматирането на текста, текстовите полета, бутоните, списъците, оформлението, цветовете и други елементи на интерфейса. GUI тестването отнема време и компаниите на трети страни често поемат задачата вместо разработчиците.
Тестови нива
Използват се различни нива на тестване, за да се идентифицират областите на слабост и припокриване във всяка фаза на жизнен цикъл на разработка на софтуер . Нивата на теста са:
- Единичен тест
- Интеграционно тестване
- Тестване на системата
- Тестване за приемане
Когато тестват модули, разработчиците тестват най-основните части на кода, като класове, интерфейси и функции/процедури. Те знаят как трябва да реагира техният код и могат да правят корекции в зависимост от изхода.
Интеграционно тестване е известно още като тестване на „модул“ или „програмно“. Това е подобно на тестването на единици, но съдържа по-високо ниво на интеграция. Модулите на софтуера се тестват за дефекти, за да се провери тяхната функция. Тестването на интеграция идентифицира грешки, когато модулите се интегрират. Различните методи за интеграционни тестове включват „отдолу нагоре“, „отгоре надолу“ и „функционално инкрементално“.
Системното тестване тества компоненти на проекта като цяло в различни среди. Системното тестване попада под метода на черната кутия и е един от последните тестове в процеса. Той ще определи дали системата е подготвена да отговори на нуждите на бизнеса и потребителите.
Обикновено има два типа тестове за приемане. При алфа тестване софтуерът се изпълнява вътрешно на сайта на разработчика в симулирана или реална среда. Софтуерът работи така, сякаш го използват живи крайни потребители. Разработчиците правят бележки за всички проблеми и започват да коригират грешки и други проблеми.
Също така в рамките на тестване с черна кутия, при тестване за приемане, клиентите тестват софтуер, за да разберат дали разработчикът е разработил напълно програмата, за да отговаря на желаните от тях спецификации.
Бета тестването или полевото тестване позволява на клиентите да тестват продукта на своите сайтове в реални условия. Клиентите могат да предложат на група от крайни потребители възможността да тестват софтуера чрез предварителна или бета версия. Бета тестването има за цел да получи реална обратна връзка от потребителите, която се изпраща на разработчика.
Типове тестове
Различните видове софтуерни тестове са предназначени да се фокусират върху конкретни цели. Тестовият инженер и мениджърът на конфигурацията използват инсталационно тестване, за да гарантират, че крайният потребител може да инсталира и стартира програмата. Той обхваща области като инсталационни файлове, места за инсталиране и административни привилегии.
Тестването за развитие прилага набор от синхронизирани стратегии за откриване и предотвратяване на дефекти. Той включва статичен анализ на кода, прегледи на партньорски кодове, проследимост и анализ на показателите. Целта е да се намалят рисковете и да се спестят разходи.
Потребителското изживяване попада под светлината на прожекторите с тестване за използваемост. Той измерва колко лесен е за използване GUI. Той проверява точността и ефективността на функциите и емоционалните реакции на изследваните субекти.
Тестът за здрав разум показва дали софтуерът си заслужава времето и разходите за продължаване на допълнителни тестове. Ако има твърде много недостатъци, по-агресивни тестове няма да последват.
Тестването за здравина се извършва по време на фазата на пускане на софтуера, където се прави тест за дим, за да се види дали софтуерът ще работи достатъчно, за да може да бъде тестван.
Тестването на дим разкрива основни неизправности, които са достатъчно сериозни, за да предотвратят изпускането. Когато разработчиците тестват нова компилация, това се нарича тест за проверка на компилацията. Когато системата претърпи модификация, регресионното тестване следи неочакваното поведение. Той посочва неблагоприятните ефекти върху модулите или компонентите.
Тестерите въвеждат необичайни записи и разпознават способността на софтуера да управлява неочакван вход при разрушителни тестове. Това показва на разработчиците колко стабилна е програмата при управление на грешки.
Когато хардуерът или други функции не успеят, тестването за възстановяване показва колко добре софтуерът може да се възстанови и да продължи да работи.
Автоматизацията изпълнява функции, които са предизвикателство за изпълнение ръчно. Тестването включва използване на специфичен софтуер за провеждане на тестове и предоставяне на данни за действителните спрямо очакваните резултати.
Софтуерът трябва да работи в различни изчислителни среди, така че тестването за съвместимост проверява как софтуерът реагира на различни системи. Например програмистите тестват софтуера с различни операционни системи и уеб браузъри.
Тестовете трябва да са обширни и да отговарят на всички притеснения на клиента, или проектът бързо се превръща в загуба на ресурси.
Тестването на производителността изследва производителността на софтуера в различни сценарии. Събира се информация за отзивчивостта, стабилността, разпределението на ресурсите и скоростта. Подтестове като обем, капацитет и пикове играят роля в този процес.
Тестването на сигурността измерва способността на софтуера да защитава сигурността на потребителите. Функциите за упълномощаване, удостоверяване, поверителност, цялост, наличност и неотказ са примери за функции, които трябва да бъдат тествани.
Тестването за достъпност е различно от тестването за използваемост. Това определя степента, до която потребителите с различни способности могат да използват софтуера.
Резултатите от тестовете за интернализация и локализация показват как софтуерът може да се адаптира към различни езици и регионални изисквания. Това включва добавяне на компоненти за конкретни местоположения и превод на текст.