Подробная программа тренинга "Программирование для тестировщиков" от Алексея Баранцева |
18.11.2009 14:21 |
Уже восемнадцатая группа начинает обучение в онлайн-тренинге "Программирование для тестировщиков" (анонс и условия участия по ссылке), в рамках которого мы будем учить тестировщиков программировать. Не просто использовать запись тестов в стиле catch-n-replay с последующей незначительной ручной доработкой, а создавать по настоящему хорошие автоматизированные тесты. Во-первых, хорошие с архитектурной точки зрения, которые легко изменять и добавлять новые. Во-вторых, хорошие с точки зрения читаемости, так чтобы посмотрев на код теста можно было легко понять, что он проверяет. В-третьих, хорошие с точки зрения возможности выполнять сложные проверки правильности результатов, даже если для этого требуется заглянуть в базу данных или проанализировать лог-файлы. Весь изучаемый материал будет демонстрироваться на одном сквозном примере -- мы будем разрабатывать на языке Java автоматизированные тесты для веб-приложения, используя драйвер Selenium 2.0. И с каждым занятием мы будем писать всё более и более сложные тесты, добавляя в свой арсенал новые возможности как для управления тестируемой системой и её окружением, так и для выполнения проверок различного рода. Кроме того, мы будем не только учиться делать автоматизированные тесты, но также разрабатывать вспомогательные программы -- генераторы данных, анализаторы содержимого файлов, эмуляторы. Не ограничиваясь веб-приложениями, мы попрактикуемся также в тестировании Java-приложений (используя драйвер Jemmy) и Windows-приложения (используя драйвер AutoItX3). Подробная программа тренинга "Программирование для тестировщиков"1. Основы программирования: структуризация кода.Мы не станем пытаться брать крепость программирования "лобовой атакой", последовательно изучая типы данных, операторы и конструкции языка. Вместо этого мы зайдём "с тыла", начав понимание основ программирования с изучения тех тестов, которые генерируются инструментами catch-n-replay. Это может показаться странным, потому что я часто повторяю, что эти инструменты создают плохие тесты, и вдруг я выбрал их как пример для изучения. Да, именно по этой причине и выбрал. Эти тесты слишком примитивны, чтобы быть пригодными к использованию в реальной жизни, но как учебные примеры они достаточно хороши -- они крайне просты по своему устройству, но несмотря на это являются готовыми к выполнению тестами. Кроме того, эти тесты уже используют специальный фреймворк для запуска тестов, который нам также предстоит освоить в рамках тренинга. 2. Основы программирования: управление потоком выполнения кода.Разобравшись с правилами структуризации кода, мы конечно же заглянем внутрь отдельных методов и изучим две основных конструкции для управления потоком выполнения кода -- ветвление и зацикливание. А также специальную конструкцию аварийного выхода -- выброс и перехват исключений. Это три кита, на которых стоит практически всё управление ходом выполнения программ, в том числе и автоматизированных тестов. 3. Работа с контейнерами, предназначенными для хранения наборов данных: множествами, списками, ассоциативными массивами.Контейнерные типы данных предназначены для хранения коллекций данных. Эти коллекции могут использоваться для различных целей. Например, в коллекцию может быть собрано какое-то количество заранее подготовленных тестовых данных, которые затем будут последовательно использованы в тестах. При проверке свойств веб-страницы мы можем получить коллекцию всех ссылок или картинок, присутствующих на этой странице, чтобы затем тщательно изучить свойства отдельных объектов, входящих в эту коллекцию. Контейнерные типы данных будут впоследствии часто встречаться нам, когда мы будем учиться работать с файлами и базами данных. 4. Работа со строками -- анализ строк, проверка соответствия образцу, регулярные выражения.Текст -- один из наиболее распространённых форматов представления информации, особенно для веб-приложений. Текстовые данные вводятся в поля форм, в виде текста выдаются результаты работы приложения или сообщения об ошибках. Поэтому умение работать с текстовыми строками является непременным условием для тестировщика-автоматизатора. И наиболее сложной задачей является анализ содержимого текстовых строк, чтобы проверить, правильный ли результат выдало приложение или верно ли оно сообщило об ошибке. 5. Работа с файлами -- чтение и запись данных из файла и в файл, анализ содержимого директорий.Многие приложения читают или пишут файлы. В конфигурационных файлах хранятся различные настройки. В файлы журнализации сбрасываются сообщения об ошибках и иная служебная информация. Файлами приложения обмениваются между собой, передавая таким образом информацию. В файлы записывается информация с целью её хранения и использования впоследствии. И конечно же при тестировании нужно создавать файлы, которые приложение читает, а также проверять корректность содержимого файлов, созданных приложением. 6. Автоматизация Java GUI.Эта тема представляет собой своеобразное отступление от основного материала тренинга. Мы не только обратим наше внимание на приложение другого типа, но и будем использовать другой инструмент тестирования. При этом преследуются две цели. Во-первых, показать, что надо инструмент подбирать под задачу, а не пытаться всё сделать одним и тем же инструментом. Во-вторых, показать, что несмотря на "во-первых" разные инструменты весьма похожи, так что изученные на предыдущих занятиях шаблоны проектирования с не меньшим успехом можно применять и при разработке тестов для приложений другого типа. 7. Автоматизация Windows GUI.И ещё одно отступление в сторону. Опять другой тип приложений, другой тип пользовательского интерфейса, другой инструмент тестирования. Но по прежнему работают типовые шаблоны проектирования тестов, рассмотренные на предыдущих занятиях. 8. Работа с базами данных.Подавляющее большинство многопользовательских приложений (к которым относятся и веб-приложения), а также многие однопользовательские приложения, используют базы данных для хранения информации. Когда пользователь вводит какую-то информацию через интерфейс приложения, она после некоторой обработки попадает в базу данных и хранится там до тех пор, пока она не потребуется для работы того же самого или или какого-то иного приложения. При тестировании часто бывает удобно проверить, правильно ли сохранилась информация в базе данных. Поэтому многие тестировщики, даже не умея программировать, достаточно хорошо владеют языком запросов к базе данных SQL. 9. Работа с почтой -- сервер James и клиент Java Mail.10. Сетевое программирование -- HTTP, FTP и другие протоколы прикладного уровня.Последние два занятия будут посвящены рассмотрению особенностей тестирования распределённых приложений и вопросам автоматизации интеграционного тестирования. |