Автор: Бенджамин Бишофф (Benjamin Bischoff) Оригинал статьи Перевод: Ольга Алифанова
Разработка и тестирование ПО на первый взгляд сильно отличаются друг от друга, но некоторые аспекты важны для обеих дисциплин.
В этой статье мы рассмотрим ряд распространенных паттернов и методологий проектирования ПО, полезных для UI-автоматизации в целом и для создания тест-фреймворка для UI в частности. Примеры и сценарии использования в статье относятся к нашему внутреннему кастомному фреймворку.
Пожалуйста, обратите внимание, что это не полноценные примеры, а урезанные образцы кода, иллюстрирующие суть подхода. Так как я в основном пишу на Java, то примеры тоже написаны на нем. Я старался сделать их как можно более простыми и доступными для понимания.
Наш мир – беговая дорожка. Если Вы стоите – значит, Вы движетесь назад. Преобладающая часть современных программ не запустится на компьютерах десятилетней давности. Знания в ИТ-сфере устаревают в среднем за 5-10 лет. Современные избалованные пользователи уже не будут использовать программы и сайты, не удовлетворяющие основным требованиям юзабилити. Если Вы хотите не отставать и даже готовы увеличить скорость – придётся постараться! В этой статье мы разберём следующие вопросы:
Как определить, насколько успешен и результативен Ваш процесс тестирования?
Как диагностировать проблемы и определить требуемые улучшения?
2. Смотрите diff-ы каждой ветки/фичи и задавайте как можно больше вопросов разработчиков. Этим вы:
поднимите свой престиж как тестировщика - пытаетесь разобраться в коде и областях, которые затронуты этой фичей
начнете изучать язык программирования и начнете лучше понимать что происходит 'под капотом'
3. Изучите жизеннный цикл приложений. Activity 1, 2, 3 (Android) и ViewController 1, 2, 3 (iOS) для понимания из какого в какое состояние может переходить экран приложения и самое приложение.
4. Попросите выводить в лог все запросы к серверу и/или попросите удобную 'смотрелку логов' у сервер-side разработчиков, чтобы удобнее было анализировать запросы и выявлять дубликаты и/или находить более удобные способы обновления данных. Например, для обновления одной части профиля разработчик может перезапрашивать весь профиль вместо использования более легковесного запроса.