article-spots
article-carousel-spots
programs
Технології
Автоматизоване тестування: працюють роботи — людина щаслива!
17 вер 2021

Автоматизоване тестування — одне з найбільш численних ІТ-напрямів в EPAM University. Давайте з’ясуємо чому? Сьогодні розглянемо цілі автоматизованого тестування та в яких випадках його застосовують. 


Цілі автоматизованого тестування  

Мета будь-якого тестування — отримати максимум інформації про якість додатку в рамках ресурсів проєкта. Як правило, ці ресурси — час, бюджет, компетенції команди, програмне і апаратне забезпечення — обмежені. Одним зі способів їх оптимізації і є автоматизація тестування ПЗ.  

Економія часу  

З практичної точки зору автоматизація тестування означає, що ряд задач, які виконувались вручну інженерами, передається програмно-апаратним комплексам. Це передбачає, що програмне рішення виконає певну задачу з прийнятною якістю і меншими витратами. В першу чергу, часу. Програма не витрачає його на перерви та каву, вона не втомлюється під кінець робочого дня і може працювати в режимі 24х7х365.  

Звільнення від рутини  

Програми роблять лише те, для чого були створені: вони слідують закладеним у них алгоритмом. Рутинні операції вони відпрацьовують набагато краще за людину. Наприклад, завиграшки виконають «прогін» сценарію з тисячами різних наборів даних. Для людини це складно: виконання рутинних операцій впродовж тривалого часу викликає втому. А втома призводить до помилок і уповільнення темпу роботи.  

Втім, програми не володіють інтуїцією і не спроможні генерувати творчі рішення. Завдяки делегуванню роботи «роботам» у інженерів вивільняється час для вирішення інших задач. Наприклад, можна запровадити у процес створення програмного продукту новий вид, або техніку, або інструмент тестування. Це надасть додаткову інформацію про якість додатку та знизить ймовірність появи помилок, які не були виявлені раніше.  

Надійність  

Важливим фактором автоматизації є підвищення надійності. Достатньо один раз запрограмувати і налагодити алгоритм, який реалізує програма, і він виконуватиметься завжди однаково, з одним і тим самим результатом. Програма не переплутає і не забуде ввести вхідні дані, не пропустить перевірку потрібного параметру і в неї не «замилюється око» від нескінченних повторів. Якщо трапиться збій — його буде зафіксовано.  

Коли ми застосовуємо автоматизацію тестування?  

Економічна доцільність  

З технічної точки зору, будь-які завдання тестування можуть бути автоматизовані. Або, принаймні, більшість з них. Питання в тому, яких витрат це вимагатиме. Деякі види тестування простіше, дешевше і швидше виконати вручну. Наприклад, оцінити зручність графічного користувацького інтерфейсу: людина може на око оцінити розташування елементів керування, їх компонування, кольорову гамму, логічність інтерфейсу.  

Так, більша частина таких перевірок може бути реалізована програмно. Ось тільки час, витрачений на створення відповідного алгоритму, його валідацію, імплементацію, виконання та аналіз отриманих результатів, може в багато разів перевищувати час і вартість виконання такої перевірки вручну. Щоб уникнути цього, на етапі підготовки автоматизації тестування підраховують економічну доцільність автоматизації (Return On Investments, ROI).  

Регресійне та димове тестування  

Однак для багатьох видів тестування автоматизація є економічно обґрунтованою. В першу чергу, для таких трудомістких і відносно довготривалих видів тестування, як регресійне та димове тестування. Їх особливість — в багаторазовому повторі великої кількості тестів в однакових умовах. Тому їх легко налагодити і потім виконувати раз за разом.  

Unit-тестування 

Існують типи тестування, які в принципі неможливо виконати в ручному режимі. Наприклад, модульне (unit) тестування: перевірити мільйони операторів, переходів та їх ланцюжки, комбінації на всіх можливих наборах даних вручну неможливо. Або тестування продуктивності: яким чином вручну імітувати одночасне відвідування сайту тисячами обо навіть десятками тисяч користувачів? Очевидно, що без спеціального ПЗ не обійтися.  

Accessibility-тестування 

Існують також специфічні види тестування, які дають додаткову інформацію про якість додатку, необхідність в якій обумовлена предметною галуззю або умовами застосування. Наприклад, тестування доступності (accessibility), яке характеризує можливість використання додатку користувачами з особливими потребами.  

Вимоги щодо доступності публічних комерційних і державних сервісів для таких груп користувачів наразі регулюються законодавством більшості розвинених країн, і замовники наполягають на тому, щоб продукти, що розробляються, обов’язково перевірялися на доступність. Ці перевірки технічно нескладні, проте численні та рутинні. Ручні перевірки можуть тривати кілька днів, тоді як їх автоматизація інструментами, наявними у вільному доступі, доволі проста, а виконання основної частини перевірок займатиме не більше кількох хвилин.  

Інтеграція автоматизації в розробку ПЗ  

Звичайно, не можна залишити осторонь питання інтеграції автоматизованих видів тестування в сучасні процеси розробки ПЗ (Software Development Life Cycle, SDLC). Сучасний стандарт передбачає застосування концепції Continuous Integration and Deployment (CI/CD). Всі сучасні інструменти автоматизації тестування розраховані на швидку і максимально просту, «безшовну», інтеграцію з інструментами CI/CD — Jenkins, Bambo, GitHub, хмарними сервісами на зразок AWS або Azure. Таким чином, процедури автоматичного тестування і розгортання нової збірки можна запустити натисканням однієї кнопки.  

 

Бажаєте дізнатися більше про автоматизоване тестування, його місце в процесі розробки ПЗ та познайомитися з задачами інженера з автоматизованого тестування? Реєструйтеся на безкоштовне навчання в EPAM University!