Большой гайд по тестированию Android-приложений
Учитывая конкуренцию, разработчикам нельзя — никак и нигде — подводить пользователей. Этого реально добиться, если QA-отдел выкладывается на все сто.
Если софт для тестирования Android — слабое место, или вообще новичок в этой теме, попробуем разобраться с самыми базовыми вещами.
Что такое мобильное тестирование?
Начнем с простого, рассмотрим мобильное тестирование “в целом”.
Мобильное тестирование — это процесс проверки мобильных приложений, то есть программ для смартфонов, планшетов, и других мобильных устройств (больше о тестировании мобильных приложений можно почитать в нашей статье). Проверяется функциональность, производительность, безопасность, удобство. Тестирование может быть ручным или автоматизированным. Цель тестировщика и всей QA-команды: убедиться, что приложение отвечает прописанным бизнес-требованиям , и ожиданиям пользователей.
Традиционно бывают такие типы мобильных приложений:
Полный тест производительности и процессора смартфона
- Нативные приложения разрабатываются “под платформу”, то есть под одну из двух основных платформ, на соответствующем языке программирования, и с соответствующим SDK. Приложение устанавливается на смартфон из официального магазина.
- Веб-приложения пишутся с применением server-side-технологий , и работают, грубо говоря, через мобильный браузер. Существуют “адаптивные ” (или “responsive”, мобильные версии сайтов) и “ прогрессивные ” (progressive) мобильные веб-приложения.
- Третий тип — гибридные приложения . Они устанавливаются из магазинов, но работают на веб-технологиях. Разница с «классическими» веб-приложениями в том, что современные гибридные приложения получают широкий доступ к встроенным возможностям смартфона и продвинутым функциям операционки.
Автоматизация или ручное тестирование?
Автоматизированное тестирование важнее день ото дня. Во многих командах стоит вопрос, автоматизировать ли ? Быстрый ответ: это зависит от особенностей приложения.
Скорее всего, для небольших и простых Android-приложений (а они составляют видимо бОльшую часть приложений в маркете) нет большой потребности в автоматизации тестов. Автоматизация может быть полезна, если например жесткие дедлайны; очень широкое таргетирование аудитории; большой предполагаемый парк девайсов . Ну и, производительность вряд ли получится качественно протестировать автоматизированным способом.
Когда делают большие и сложные приложения, автоматизация нужна. Так QA-отдел добивается наилучшей эффективности; ускоряет процедуры; экономит кучу времени, усилий и денег. Хорошо автоматизируется регрессионное тестирование; для него есть удобные инструменты.
Выбор инструментов автоматизированного тестирования уже очень широк. Среди этих инструментов выделяется Appium; инструменты семейства Android Studio; Selendroid; Espresso; Roboelectric; список в конце.
В целом, в тестировании на Android в 2022 году принято, что автоматизировать тесты достаточно на 70%-80%. Ручное тестирование (все еще) незаменимо в некоторых сферах ; поэтому автоматизация — не причина как-то пренебрегать ручным тестированием.
Почему я раньше о нём не знал? Полезное приложение для андроид телефонов
Этапы тестирования Android-приложений
Чтобы хорошо, качественно протестировать приложение, надо правильно составить “ стратегию тестирования”, и построить хороший рабочий процесс (workflow).
Итак, какие этапы будут в тестировании Android-приложения?
Планирование
Написание правильного плана тестирования — уже половина успеха. Важно с самого начала сосредоточиться на правильных вещах; прописать ту самую “стратегию тестирования”. На этом, самом первом этапе, QA-отдел описывает “масштаб/охват тестирования”; тестовое покрытие; покрытие девайсов; ресурсы, нужные для тестирования; примерные дедлайны; и, возможно, другие вещи, зависящие от уже конкретного проекта. Затем решается, в каком объеме будет автоматизация; и какие из тестовых сценариев будут автоматизировать.
Настройка тестового окружения
Надо подобрать соответствующий парк тестовых девайсов. Также на этом этапе будут настраиваться эмуляторы/симуляторы, и возможно облачные девайсы .
Написание тест-кейсов и сценариев
Когда уже решено, какая функциональность будет покрыта тестами, QA-отдел пишет тест-кейсы. В широком смысле, тест-кейс — это список этапов проверки, ведет ли себя приложение “как положено” в некой ситуации. Тестовые сценарии автоматизации пишутся, если QA-команда все-таки решила автоматизировать (некоторые) сценарии.
Выполнение тестов
Следующий этап — выполнение тестов и баг-репорты . Основной, самый трудоемкий этап. Обычно этап непосредственно тестирования начинается с функционального тестирования ; здесь проверяется, что вся ключевая функциональность приложения работает как положено. Сначала лучше сделать ручное исследовательское тестирование ; и если тестируемое приложение ( AUT на жаргоне тестировщиков, Application Under Test) достаточно стабильное, то тогда переходят к автоматизированному тестированию.
Тестирование интерфейса и тестирование юзабельности . Важная часть процесса: QA проверяют user experience и удостоверяются, что AUT простое в использовании; интуитивное; то что называется юзер-френдли; и что по крайней мере в интерфейсе нет явных дефектов.
Тестирование compatibility проверяет, корректно ли работает AUT на предполагаемых “целевых” смартфонах/операционках. Здесь также “шлифуют” user experience.
Тестирование производительности — важнейший этап в тестировании практически любого приложения в плеймаркете. Типы тестирования производительности: volume-тестирование ; стресс-тестирование ; тестирование стабильности ; нагрузочное тестирование ; спайк-тестирование . В целом тестирование производительности должно проверить, как приложение ведет себя под предполагаемой средней рабочей нагрузкой, и при нагрузке сильно выше средней . Такое тестирование может проводиться с привлечением специальных инструментов, и оно, в основном, автоматизируется.
Когда с производительностью и функциональностью уже все хорошо , пришло время гарантировать, что приложение в достаточной мере безопасное, и что поддерживаются стандарты совместимости , и, если речь идет о солидном приложении для рынков США/Евросоюза, стандарты доступности . То есть выполняется тестирование безопасности , и тестирование совместимости .
Кроме упомянутых тестов, еще может быть: инсталляционное тестирование ; тестирование обновлений ; тестирование прерываний ; тестирование восстановления ; тестирование ресурсов устройства ; тестирование сетевых конфигураций .
Отчеты
И наступает последний этап: создание отчетов (на жаргоне тестировщиков — “репортов”). Создается большой итоговый отчет по результатам тестирования. Найденные и исправленные баги анализируются, определяются самые проблемные модули в приложении. Далее, если есть необходимость, приложение продолжают “шлифовать”, или отдают на релиз (выпускают готовое).
Особенности тестирования Android-приложений
На Android-платформе есть особенности, о которых нужно знать.
Необходимость тестировать на большом количестве девайсов
Android — открытая платформа, и это значит, что ее используют “на свое усмотрение” все производители смартфонов (и не только). Помимо этого, производители “железа” имеют возможность глубоко модифицировать операционную систему “под себя”, что тоже добавляет сложностей в тестирование. Поэтому QA-отдел должен гарантировать, что приложение будет работать на самых распространенных смартфонах (хотя бы), что user experience не пострадает.
Размер и пропорции экрана
Android-смартфоны поставляются с экранами самых разных размеров и типов. QA-команда проверяет, как приложение работает в различных разрешениях, на разных размерах экрана, и пропорциях длины-ширины. Чаще, из-за невозможности “покрыть” все предполагаемые целевые смартфоны, QA тестируют хотя бы модели, самые “ходовые” в данный момент.
Характеристики железа
Производители выпускают мобильные девайсы с самыми разными характеристиками (аппаратными спецификациями). QA-команда должна учитывать, что Android-приложение (особенно гибридное) может работать с аппаратными ресурсами смартфона довольно непредсказуемо.
Обратная совместимость
Каждый производитель решает на собственное усмотрение, обновлять ли свою версию модифицированной операционки, и как часто это делать. Так же и пользователь не всегда обновляет прошивку своего смартфона. Это приводит к ситуации, когда большая часть пользователей запускает приложения на смартфонах со старыми версиями ОС. В таких случаях нужно так называемое тестирование обратной совместимости — по крайней мере для нескольких последних версий ОС.
Много альтернативных каналов распространения
Android-приложения могут ставиться не только из официального магазина Google, но и из многих альтернативных маркетов, или просто из карты памяти после скачки из (подозрительных) сайтов. Это, конечно, проблема, что касается безопасности. Поэтому Android-приложения должны тестироваться на безопасность, с той же, или бОльшей тщательностью, чем iOS-приложения.
Тестировщик Android — Советы
Чтобы быстро продвигаться в тестировании на Android, и справляться с челенджами, тестировщику нужно запомнить некоторые вещи.
Тестировать на самых “ходовых” смартфонах
В самом лучшем сценарии приложение должно быть протестировано на как можно бОльшем парке девайсов, чтобы убедиться что хотя бы 90% пользователей смогут запустить его. В реальной жизни это очень долго и дорого . Поэтому QA-отдел как правило сосредотачивается на самых распространенных устройствах в данный момент.
Сейчас “общемировой” список Android-производителей выглядит примерно так: Samsung, Google, Xiaomi, OPPO, и Vivo. (В России, Беларуси, Украине и Казахстане список примерно такой же).
Тестировать на разных версиях Android
За 14 лет существования вышло больше десятка версий этой чудесной операционки. В целом, нужно стремиться протестировать на как можно бОльшем количестве версий Android. При этом, магазин Google как бы требует, чтобы приложения были ориентированы на самые последние версии. Таким образом, общепринятой практикой является ориентирование сначала на самые последние версии Android, и потом переходят на версии старее, если позволяет дедлайн.
В ручном тестировании нежелательны эмуляторы
То что подходит для разработки, не всегда хорошо в “мире QA”. Разработчики активно пользуются эмуляторами, а вот QA-отдел, в идеале, должен все тестировать на реальных девайсах. Во первых, да, можно качественно эмулировать вид и поведение приложения, но вот user experience — не факт. Особенно жесты пользователя , типа одновременных нажатий несколькими пальцами, промотка, зум — это до сих пор плохо эмулируется, все-таки лучше тестировать на реальном тачскрине. Таким образом, запомним, что юзабилити-тестирование мобильных приложений может быть по настоящему качественным только на реальных устройствах.
Во вторых, непременно надо протестировать производительность, и сделать это на реальных девайсах. На эмуляторе (симуляторе) очень трудно оценить потребление памяти и нагрузку на процессор, расход аккумулятора. Еще сложнее (если вообще возможно) протестировать работу с сотовой сетью.
Особое внимание проблемам с памятью
“Пожирание памяти” это частая проблема мобильных приложений. Случаются ситуации, когда приложения и игры не могут запуститься или вылетают на самых распространенных Android-девайсах именно из-за аномально и необъяснимо высокого потребления памяти. Как правило, самые популярные, топ-рейтинговые приложения в Google Play таких проблем не имеют (потому что их тщательно протестировали в свое время!). Чтобы убедиться, что тестируемое приложение будет таким же надежным как топовое, важно протестировать работу с памятью на самых ходовых девайсах, включая как дорогие, так и дешевые.
Гайдлайны Google Play Store
Это общие указания в Политике Приватности и Политике по Контенту , которые должны соблюдаться разработчиками приложения. Иначе приложение могут просто не принять в магазин; или, на исправление оплошностей уйдет время = сорвутся дедлайны.
Не игнорировать бета-тестирование
Бета-тестирование делают реальные пользователи на реальных устройствах в реальной обстановке. “Бета” дает QA-команде полезную вещь — отзывы , которые позволяют исправить приложение до его официального выпуска. Бета-тестеры дают фидбек по своим девайсам в разных условиях покрытия мобильной сети — от 2G до 5G, и в Wi-Fi. Они каким-то волшебным образом находят баги, найти которые QA-команда оказалась не способна. Бета-тестеры дают первую, общую оценку user experience .
Инструменты тестирования на Android
Тестирование — “холистический”, целостный и непрерывный процесс, охватывающий все этапы создания приложения. Существуют специализированные, качественные инструменты. Желательно хотя бы поверхностно ознакомиться с ними; чем раньше тем лучше.
Почему тестирование Android это сложно
Достаточно сложно добиться, чтобы приложение было одновременно : эффективным, удобным, стабильным, безопасным, производительным, юзер-френдли. Большая часть этой задачи лежит на QA-отделе. Опытные тестировщики владеют самыми разными типами тестирования, умеют комбинировать их.
Итоги
Нынешний пользователь Android избалован, он привык к качественным, надежным и красивым приложениям «по умолчанию».
Огромная, сложная, открытая экосистема Android — это большие челенджи для тестировщиков, но: слушая советы и накапливая опыт , челенджи можно решать! Постепенно продвигаясь к должности старшего тестировщика или главы QA-отдела .
Источник: testengineer.ru
Test Your Android для Android
Помимо тестов на работоспособность, Test Your Android показывает полную информацию об аппарате, включая процессор, количество памяти, емкость аккумулятора, версию операционной системы и другие основные параметры.
ТОП-сегодня раздела «Бенчмарки, тесты»
3DMark – профессиональный тест производительности центрального процессора и графического.
Test Your Android – утилита для быстрого тестирования компонентов вашего Android-устройства.
Проверка реального быстродействия вашего устройства и сравнение с другими моделями.
Мобильное Android-приложение, с помощью которого можно проводить тестирование скорости 4G, 5G.
PCMark – бенчмарк для теста производительности девайса и времени автономной работы.
Утилита для тестирования SD-карт, ОЗУ и внутренней памяти, скорости чтения и записи, а также.
Отзывы о программе Test Your Android
De Bill, bonjour! про Test Your Android 5.2.0 для Android [18-06-2019]
Не работает на пк! Я ввел — тест своего апк на пк! И что тут делать?
2 | 2 | Ответить
Источник: www.softportal.com
Как узнать о скрытых неполадках в работе смартфона
TestM — приложение для iOS и Android-устройств, которое поможет выявить неполадки в работе смартфона. Программа включает два десятка тестов, проверяющих корректность работы комплектующих: экрана, динамиков, датчиков, модулей и камер. Обнаруженные показатели соотносятся с теми, что считаются приемлемыми для вашего устройства. На основе этого сравнения выносятся результаты, представленные в виде отчёта.
TestM может пригодиться во многих случаях: если вы покупаете, продаёте смартфон, несёте его в ремонт или просто хотите быть в курсе его состояния. Потенциальному покупателю можно предложить пройти тесты в приложении и взглянуть на результаты в виде наглядного отчёта. То же стоит сделать самостоятельно, когда вы покупаете смартфон.
Когда что-то перестанет работать, приложение позволит вычеркнуть диагностику из списка трат в сервисе и прийти к мастеру с конкретной проблемой. А потом TestM поможет проверить, действительно ли ваша проблема устранена.
Как это работает
Это не унылый бенчмарк, требующий времени и выводящий скупую информацию в цифрах и графиках. TestM больше напоминает серию мини-игр, прохождение которых попутно выявляет неполадки в работе смартфона.
Приложение предлагает два вида тестирования: быстрое и полное. Прохождение первого занимает около минуты и включает всего три этапа, в ходе которых проверяются ключевые моменты: исправность экрана, фронтальной камеры, динамиков и микрофона. Чтобы пройти тест, нужно закрасить все области экрана и ввести услышанные цифры.
Полноценное тестирование проходится за 2–4 минуты и включает около 20 тестов, разделённых на шесть групп. Точное количество испытаний зависит от модели смартфона. Например, на iPhone X их 21. Разберёмся с каждой из групп.
- Экран: сенсор и 3D Touch. Сначала мы исследуем экран на наличие неактивных областей, закрашивая прямоугольники по всему экрану. Потом проверяем дисплей с помощью сильного нажатия, «выдавливая» точки одну за другой.
- Звук: динамики, капсюль, микрофон и наушники. Все источники звука проверяются прослушиванием и введением на клавиатуре случайных последовательностей цифр. А микрофон — произнесением «алло» в трубку.
- Движение: гироскоп и компас. Здесь TestM предлагает нам потрясти смартфон, а потом перевернуть и положить на ровную поверхность.
- Подключение: Wi-Fi, Bluetooth, GPS и сотовая связь. TestM просит отключать и подключать различные интерфейсы, чтобы проверить их исправность. Тест GPS-модуля требует уверенного сигнала со спутника, поэтому, если с первого раза пройти его не удалось, попробуйте в другом месте.
- Аппаратура: датчик расстояния, зарядка, вибромотор, кнопки и Face ID. Раньше датчик расстояния и вибромотор проверялись с помощью входящего звонка и разговора по телефону. К счастью, TestM избавляет от необходимости дополнительных действий: просто приблизьте ладонь к датчику или сосчитайте количество вибраций. Также тут можно проверить гнездо для зарядного устройства, работу механических кнопок и способы авторизации вашего смартфона.
- Камера: все объективы и вспышка. Для проверки камер нужно направить их на себя. Если камера двойная, то каждый из объективов проверяется по отдельности. Чтобы провести тест вспышки, нужно сосчитать, сколько раз она загорится.
После прохождения всех тестов приложение предложит создать наглядный отчёт, который можно будет просмотреть в приложении, на сайте TestM или экспортировать в изображение.
Иногда диагностика выявляет проблемы, требующие помощи мастера. TestM использует данные Google Maps и может предложить несколько сервисов поблизости по завершении проверки.
Почему TestM стоит установить
Приложение окажет неоценимую помощь при покупке смартфона с рук. Барахлящий гироскоп или неработающий датчик движения обнаружить куда труднее, чем царапины на корпусе, поэтому с TestM вы уберегаете себя от многих неприятных сюрпризов. Возьмите за правило просить у продавцов ID отчёта перед покупкой устройства: те, кому нечего скрывать, его, скорее всего, предоставят.
TestM — must-have-приложение не только для тех, кто продаёт или покупает смартфон, но и для всех владельцев iOS и Android-устройств. Любые девайсы требуют периодической диагностики, ведь далеко не все проблемы сразу дают о себе знать. Вдруг за время, пока вы не подключали беспроводные наушники, Bluetooth-модуль вышел из строя? Или перестала работать функция 3D Touch, пока вы ей не пользовались? TestM поможет обнаружить большинство из возможных проблем и посоветует, куда обратиться, чтобы их устранить.
И заключительный плюс, благодаря которому TestM определённо стоит попробовать, — приложение абсолютно бесплатно. Никаких trial-периодов, функциональных ограничений и навязчивой рекламы.
Источник: lifehacker.ru
Инструменты разработчика для тестирования Android-приложений
В командной разработке тесты – это, как правило, задача QA- и SDET-специалистов. Вместе с тем навыки тестирования полезны и разработчикам, позволяя им проверить свои приложения и повысить стабильность их работы.
Эта статья предназначена в первую очередь начинающим мобильным разработчикам, которые хотят изучить процессы тестирования и свое участие в них.
На примере Android-разработки обсудим подходящие инструменты тестирования – от JUnit до Kaspresso, а также немного познакомимся с методологиями Test Driven Development (TDD) и Behaviour Driven Development (BDD). Наконец, рассмотрим их отличия на примере кейса.
Тестирование IT-системы охватывает множество проверок архитектуры, UI, кода и взаимодействия его частей, соответствия требованиям. По мере усложнения систем в отрасли растут потребности как в обеспечении качества (QA), так и в автоматизации тестирования (SDET), которая позволяет проводить некоторые тесты быстро и с минимальным участием людей.
Уровни тестирования
С появлением тестов для различных уровней программы возникла их абстрактная иерархия – Пирамида автотестов, в которую входят:
- Модульные тесты. Проверяют взаимодействие кода внутри одного или нескольких классов со связанной функциональностью. Unit-тесты создают до, во время или после написания проверяемого кода, их должно быть много, они должны запускаться часто, работать быстро, быть легко поддерживаемыми.
- Интеграционные тесты. Проверяют логику взаимодействия различных компонентов, подсистем без использования UI. В контексте Android сюда входят тесты БД (миграции, выборки, CRUD операции), тесты api-сервисов с моковыми данными и т.д.
- UI-тесты. В контексте Android это полноценное автоматизированное тестирование экрана или набора экранов, проверка корректной работы пользовательского интерфейса. Вся логика при этом должна быть протестирована на нижних уровнях.
При выборе необходимых проверок, помимо пирамиды, можно использовать колесо автоматизации – подробнее об этом читайте здесь.
Рассмотрим инструменты, используемые на каждом из вышеупомянутых уровней.
Unit-тесты
Unit-тесты – это самый простой инструмент для вовлечения разработчика в процесс тестирования приложения. Они фокусируются на конкретном классе или участке кода и пишутся непосредственно разработчиками. Unit-тесты должны выполняться быстро и иметь однозначные результаты: правильно написанные тесты – отличный способ немедленной проверки произведенных изменений в коде. Также функционал Android Studio позволяет выполнять не весь набор тестов, а только те, которые необходимы разработчику для проверки. Помимо этого, unit-тесты – один из вариантов документации кода для разработчиков, они помогают увидеть, какие возможные результаты имеет метод и какие граничные случаи он обрабатывает.
Инструменты для модульного тестирования
Unit-тесты для Android по умолчанию располагаются в папке src/test проекта или модуля, запускаются с использованием фреймворка JUnit. В идеале, один тест должен тестировать открытый интерфейс одного класса и проверять все ветвления кода и граничные случаи в нем. Зависимости должны иметь поведение, необходимое для проверки тестируемого класса.
В современных Android приложениях для unit-тестов, в основном, используются следующие библиотеки:
- JUnit. Для запуска тестов, вызова assertion’ов.
- Mockk. Позволяет мокать final классы Котлина, suspend функции, имеет удобный DSL для работы.
- kotlinx-coroutines-test. Тестирование suspend-функций внутри TestCoroutineScope, предоставляемого функцией runBlockingTest, подмены main dispatcher’а в рамках тестов.
- turbine. Небольшая, но удобная библиотека для тестирования kotlinx.coroutines.Flow.
- robolectric. Позволяет писать unit-тесты для классов, использующих Android SDK без непосредственного запуска устройства – фреймворк умеет симулировать различные части системы.
Инструменты для интеграционного тестирования
Эти тесты для Android по умолчанию располагаются в папке src/androidTest проекта или модуля и запускаются уже на устройстве, так как должны иметь доступ, например, к контексту приложения для создания БД Room. Для запуска тестов используется уже упомянутый фреймворк JUnit.
Инструменты для тестирования пользовательского интерфейса
UI-тесты служат, в основном, для прогона основных пользовательских сценариев приложения (авторизация, регистрация, добавление товара в корзину и т.п.). Они помогают отловить ошибки в базовых сценариях и исправить их до попадания сборки с багами к тестировщикам. UI-тесты также по умолчанию располагаются в папке src/androidTest и запускаются на устройстве. Помимо JUnit, основные инструменты – это:
- Espresso. Официальный фреймворк для UI-тестирования от Android. Имеет множество примеров и хорошую документацию. При этом не может взаимодействовать с другими приложениями, достаточно плохо работает с асинхронными интерфейсами и списками.
- UI Automator. В отличие от Espresso, позволяет взаимодействовать с другими приложениями: совершать звонки, отправлять сообщения, изменять настройки устройства.
- Kaspresso. Обертка над Espresso и UI Automator, которая позволяет писать стабильные, быстрые, удобочитаемые тесты.
- Для тестирования интерфейсов, реализованных с помощью Jetpack Compose, также появляются свои библиотеки, например, эта.
Также на Хабре можно прочитать больше об инструментах для UI-тестирования, например, в этой статье.
TDD и BDD
TDD и BDD – две популярные методики разработки через тестирование. Рассмотрим их отличия на примере следующего кейса:
- Пользователь вводит сумму расхода, комментарий к расходу и выбирает категорию расхода.
- Если сумма некорректна или не выбрана категория расхода, возвращается код ошибки, иначе – код успешной обработки.
- Комментарий опционален.
TDD (Test Driven Development) – это методология разработки ПО, основанная на следующих коротких циклах:
- Написать тест, проверяющий желаемое поведение.
- Запустить тест. Test failed.
- Написать программный код, реализующий требуемое поведение.
- Запустить тест. Test succeeded.
- Провести рефакторинг написанного программного кода, сопровождая прогонами теста.
Для начала создадим контракт нашей реализации.
sealed class VerificationResult < object Success : VerificationResult() object Failure : VerificationResult() >interface ExpenseController < fun verifyExpenseInfo( sum: String?, comment: String?, category: String? ): VerificationResult >class ExpenseControllerImpl: ExpenseController
Теперь напишем тест, проверяющий, что написанный код реализует указанные требования.
Запускаем тест, получаем ожидаемый результат:
kotlin.NotImplementedError: An operation is not implemented.
Теперь напишем реализацию
class ExpenseControllerImpl : ExpenseController < override fun verifyExpenseInfo( sum: String?, comment: String?, category: String? ): VerificationResult = when < sum == null ->VerificationResult.Failure category == null -> VerificationResult.Failure else -> VerificationResult.Success > >
Запустим тесты: все 4 теста проходят. Теперь настало время рефакторинга написанного кода.
class ExpenseControllerImpl : ExpenseController < override fun verifyExpenseInfo( sum: String?, comment: String?, category: String? ): VerificationResult = when < isNotValidNumber(sum) ->VerificationResult.Failure isCategoryNotSelected(category) -> VerificationResult.Failure else -> VerificationResult.Success > private fun isNotValidNumber(sum: String?): Boolean = sum == null private fun isCategoryNotSelected(category: String?): Boolean = category == null >
Снова запускаем тесты, чтобы удостовериться, что наш рефакторинг ничего не сломал – и видим, что тесты проходят успешно.
Методология TDD имеет следующие преимущества:
- Написанный код имеет более правильный и понятный дизайн, написан чище, так как должен запускаться из теста и быть идемпотентным.
- Позволяет провести рефакторинг с меньшей вероятностью возникновения ошибок, поскольку есть способ сразу же проверить правильность написанного кода.
- Позволяет локализовать ошибки быстрее.
В числе минусов можно выделить следующие:
- Фокусировка на реализации задачи.
- Код и описание тестов пишутся на одном языке.
- В процесс вовлечена только команда разработки.
Подробнее про данную методологию можно прочитать в книге Кента Бека Экстремальное программирование. Разработка через тестирование.
BDD (Behaviour driven development) – методология разработки ПО, во многом схожая с TDD. Отличается тем, что тестовые сценарии пишутся на “человеческом” языке, а не на языке программирования.
Тестовые сценарии записываются в формате given-when-then. Например, given (имея) подключение к сети, when (когда) пользователь открывает ссылку, then (тогда) контент страницы отображается.
Перепишем наши требования с использованием BDD:
Сценарий: добавление траты.
Given Корректную сумму
And Введенный комментарий
And Выбранную категорию траты
When Пользователь нажимает кнопку добавления
Then Пользователь получает успешный результат
Для данного подхода существуют свои фреймворки. Например, для Java это фреймворк JBehave.
К особенностям данного подхода можно отнести следующее:
- Тестовые сценарии на “человеческом языке” может писать как заказчик,так и аналитик, тестировщик. Это повышает уровень знаний всей команды о разрабатываемой системе.
- Тестовые сценарии легко изменяются.
- Результаты тестов также более понятны заинтересованным лицам, по сравнению с результатами выполнения кода.
Узнать подробнее о BDD можно в этой статье.
Заключение
Мало у кого возникают сомнения, что тесты необходимы для проектирования качественного ПО. Существует множество фреймворков, инструментов и методологий (DDD, FDD и другие *DD), которые помогают команде на всех этапах жизненного цикла ПО. Тесты помогают быстро найти и локализовать ошибки, а также, если они правильно спроектированы, могут служить тестовой документацией. Также благодаря тестам код реализации, скорее всего, будет написан чище и понятнее. В то же время главное – не 100% покрытие кода тестами, а его соответствие бизнес-задачам, поэтому важно избегать крайностей и не писать тесты ради тестов.
Спасибо за внимание! Надеемся, что этот материал был вам полезен.
- Блог компании SimbirSoft
- Тестирование IT-систем
- Разработка мобильных приложений
- Разработка под Android
- Тестирование веб-сервисов
Источник: habr.com
Топ-10 приложений для диагностики Android
При покупке телефона у многих пользователей возникает интерес: «Насколько мощно работает гаджет?». Внешнюю оболочку оценить не трудно, а о качестве «начинки» приходится только догадываться. Самый простой метод продиагностировать состояние телефона – установить соответствующие приложения из Play Market. О них и пойдет речь ниже.
№1: Phone Doctor Plus
Приложение отображает общую информацию об устройстве на главном экране. В базу внедрено 20 тестов, которые запускаются одним кликом. Преимущества программы:
- прогнозирует срок работы батареи;
- быстрая проверка 30 элементов АО;
- детальный показ состояния памяти и ОС в целом.
Недочеты: не анализирует сбои в камере, работает исправно только с системными приложениями. Пользователи отмечают, что иногда виснет при загрузке.
№2: AIDA64
Сначала AIDA64 выпускалась только для ПК, теперь её можно установить на смартфон. Функционал весьма широкий. Программа отображает все данные о дисплее, батарее, памяти, прошивке и пр. В этом и заключается основное преимущество ПО. Недостаток: невзрачный «сыроватый» дизайн.
№3: Phone Tester
На главном экране сразу отображается список тестов. Дает детальный отчет об интернет-соединении, операторе, кодах провайдеров, спутнике, батарее. С помощью Phone Tester можно диагностировать экран с помощью мультитач-теста. Недостатки: много рекламы, не «распознает» микрочипы.
№4: TestM
Принцип работы приложения ничем не отличается от предыдущих. Основные преимущества:
- показывает уведомление о наличии проблем каждый раз после падения девайса;
- можно удостовериться в правильности «диагноза» сервисного центра.
Недочеты: много рекламы, потребляет много энергии.
№5: AnTuTu Tester
Приложением пользуется более 10 млн людей по всему миру. Преимущества обновленного ПО:
- внедрена 3D-обстановка тестирования;
- добавлены UX-элементы;
- добавлено CPU тестирование;
- приложение стало кроссплатформенным.
Недостатки проги: требуется установка дополнительного 3D-пакета.
№6: Sensor Box
Приложение считывает сенсорные характеристики девайса. Дизайн приятный, есть графики изменений, детальная информация об использовании аппаратного обеспечения – это несомненный плюс. Недочеты: иногда «вылетает» звук, не поддерживает русский язык.
№7: Carista OBD2 Pro
Это приложение-помощник для диагностики автомобиля с помощью устройства Android. Программа информирует, по какой причине зажигается тот или иной датчик, тестирует внутреннюю электронику, состояние подушки безопасности и пр. Главный плюс приложения: это оптимальный подручный инструмент для тех, кто желает быть в курсе технического состояния авто. Недочеты: за разблокировку некоторых функций нужно платить.
№8: Linpack
Это приложение категории branchmark, используемое для измерения процессорной производительности. Программа пока не успела зарекомендовать себя в магазине, но функционирует вполне исправно. Это большой плюс. Есть один недочет: так как разработка еще «сыровата», приложение частенько вылетает.
№9: Neocore
С помощью Neocore можно протестировать графический процессор. Результаты отображаются на FPS. Основные преимущества: функционирует исправно (без багов), показывает детальную информацию о состоянии выбранных составляющих ОС. Минусы приложения: работает не на каждом устройстве.
№10: Vellamo
Принцип работы аналогичен Neocore (разработчик – одна и та же компания). Приложение содействует в измерении производительности web-серфинга на ОС Андроид по рендерингу, джаваскрипту, пользовательским взаимодействиям. Анализирует качество соединения с интернетом. Это большой плюс для пользователя. Недостатки: в Play Market программы нет, нужно скачивать со сторонних источников.
Источник: app-android.ru