среда, 24 апреля 2013 г.

Этапы процесса автоматизации тестирования

      Автоматизация тестирования является довольно сложным процессом, требующим от разработчика тестов определенных навыков и умения. Разработка автоматических тестов может занимать от нескольких дней до нескольких недель, поэтому работы по автоматизации тестирования должны быть четко распланированы и включены в общий план работ отдела.

      В процессе автоматизации можно выделить три основных этапа:
  • начальный этап - этап подготовки и планирования;
  • этап активной разработки;
  • этап поддержки автоматических тестов. 
 

четверг, 18 апреля 2013 г.

SeleniumIDE

   SeleniumIDE - расширение браузера Firefox, которое позволяет записывать и  воспроизводить действия пользователя в браузере. Используется для создания тестовых сценариев для проверки веб-приложений. В основном это приложение подходит для простых проверок, не требующих сложной логики, циклов или доступа к базам данных. Главное преимущество этого инструмента в том, что им очень легко пользоваться!

      Скачать и установить SeleniumIDE можно с официального сайта.
      Подробное описание на русском языке - тут.

      Дополнительные плагины для Selenium IDE:

      1. File Logging – сохраняет лог выполнения тестов в файл. Удобно использовать для анализа после выполнения тестов. 

      После установки данного плагина в разделе Options появляется вкладка FileLogging. На вкладке нужно выполнить следующие настройки:
  • необходимо указать путь к файлу, в который будет вестись запись. Если файла нет, то он будет создан в указанном месте. Если файл уже существует, то сообщения будут дописываться в файл.
  • выбрать уровень логгирования, который требуется сохранять 
  • установить флаг “Log time stamp with log messages” – если не выставить, то не будет проставляться время выполнения для каждого метода, и в логе будет сложно разбираться.

      2. ScreenShot on Fail – этот плагин автоматически сохраняет скриншот все страницы в момент возникновения ошибки при прохождении теста. Благодаря этому плагину часто можно понять, что же случилось при выполнении тестов.
      После установки плагина на панели управления SeleniumIDE появится дополнительная кнопка. Если нажать на эту кнопку, то скриншоты в момент ошибки будут сохраняться. После выполнения теста нужно в выпадающем списке для этой кнопки выбрать пункт «View failure report», чтобы посмотреть сохраненные скриншоты.



      Другие дополнения (которыми я пока не пользуюсь):

Selenium IDE Buttom – отображает кнопку для запуска SeleniumIDE на панели управления браузера (не нужно лазить по меню)

Highlight Elements Selenium IDE - подсвечивает элемент, с которым взаимодействует тест.

Stored Variables Viewer Selenium IDE  - позволяет просматривать значение переменных, используемых в тестах.

Page Coverage Selenium IDE - подсвечивает все элементы, с которыми будет взаимодействовать тест, тем самым можно определить покрытие элементов на странице тестом.

Sel Blocks for Selenium IDE - позволяет создавать ветвления в выполнении теста и объединять одинаковые действия над однотипными элементами в циклы if/else, while, for, foreach, forXml, continue/break,loadVars, call/script/return.

Регрессионное тестирование

      Регрессионное тестирование - это выборочное тестирование, позволяющее убедиться, что изменения не вызвали нежелательных побочных эффектов, или что измененная система по-прежнему соответствует требованиям. 
  После каждой модификации программы необходимо удостовериться, что на функциональность программы не оказал влияния модифицированный код. Если такое влияние обнаружено, говорят о регрессионном дефекте. Для регрессионного тестирования функциональных возможностей, изменение которых не планировалось, используются ранее разработанные тесты.

      Цели
   Одна из целей регрессионного тестирования состоит в том, чтобы, в соответствии с используемым критерием покрытия кода (например, критерием покрытия потока операторов или потока данных), гарантировать тот же уровень покрытия, что и при полном повторном тестировании программы. Для этого необходимо запускать тесты, относящиеся к измененным областям кода или функциональным возможностям.
   Другая цель регрессионного тестирования состоит в том, чтобы удостовериться, что программа функционирует в соответствии со своей спецификацией, и что изменения не привели к внесению новых ошибок в ранее протестированный код. Эта цель всегда может быть достигнута повторным выполнением всех тестов регрессионного набора.

      Виды
    Основные виды тестов регрессии в порядке их важности (обычно в таком порядке их и выполняют).
     1. Тесты верификации версии (Build Verification Test). Нужны эти тесты для проверки основной функциональности каждой версии программы. Только будучи уверенным в том, что основная функциональность программы не нарушена. При нахождении ошибки с помощью таких тестов необходимо пересмотреть соответствующую часть кода на предмет ошибок.
    2. Тесты верификации ошибок (Bug Verification Test). Если некоторый тест выявил наличие ошибки, необходимо после исправления провести этот тест еще раз. Хотя проведение этих тестов и является логичным, многие разработчики пренебрегают такого вида тестированием.
    3. Тесты регрессии (Regression Test Pass). К этим тестам относятся те, которые уже проводились с предыдущими версиями программы и не выявляли ошибок. Иногда при отсутствии времени некоторые из тестов можно пропустить (желательно только тогда, когда не были внесены изменения в соответствующие участки кода). Если ранее такие тесты уже проводились более 3 раз и предполагается их выполнение в дальнейшем, то данный процесс неплохо было бы автоматизировать.
      4. Тесты регрессии на исправленных ошибках (тесты на закрытых ошибках). Что такое закрытые ошибки можно понять из примера. Пусть некоторый тест нашел ошибку. После исправления этот же тест ошибки не обнаружил. В этом случае ошибка и называется “закрытой”. Ошибка может проявиться снова по ряду причин (особенно при модификации кода). Поэтому время от времени нужно возвращаться к этому месту программы.

      Применяемые для регрессионного тестирования испытания часто являются типовыми и могут многократно повторяться в последовательных циклах модернизации программы, поэтому регрессионное тестирование часто является наименее интересной задачей для тестировщиков вследствие ее циклической природы. После нескольких итераций ручные тесты становятся однообразными и скучными, особенно если число найденных дефектов невелико. Увеличение сложности программного продукта, как правило, приводит к увеличению количества тестов, используемых при регрессионном тестировании, соответственно увеличивается и время, затрачиваемое на проверку. Для ускорения регрессионного тестирования и уменьшения нагрузки на тестировщиков обычно создаются автоматизированные тесты.

      Целью внедрения автоматизированного тестирования является увеличение скорости тестирования программы после ее модернизации без ущерба для результата, уменьшение затрат на тестирование, управляемость и прозрачность процесса тестирования, а также возможность обнаружения дефектов на ранних стадиях разработки программного обеспечения. Автоматизация сокращает этап тестирования и позволяет оптимально использовать человеческие ресурсы и рабочее время специалистов. Другое, не менее очевидное преимущество такого тестирования – повышение качества испытаний, что гарантирует надежность продукта.
      В результате автоматизации процесса регрессионной проверки создаются наборы автоматических тестов, позволяющие записывать ход выполнения сценариев тестирования и воспроизводить его неограниченное количество раз.

среда, 17 апреля 2013 г.

Добавление словаря в LingvoTutor из файла

      При изучении иностранных языков часто используются специальные обучающие карточки в виде слово-перевод. Для повышения эффективности использования карточек хорошо их просматривать несколько раз в течении дня. Если ваша работа связана с компьютером, то очень удобно пользоваться LingvoTutor.

      Можно настроить запуск LingvoTutor, например, каждые полчаса. При этом выводить всего по 10-15 слов. Таким образом в течении рабочего дня удается несколько раз повторить изучаемые слова. Так как количество карточек, выводимых каждый раз, невелико, то такое изучение иностранного языка совсем не напрягает. К тому же делать каждые полчаса перерывы в работе просто полезно.

      Для того чтобы начать обучение необходимо добавить словарь в LingvoTutor:

      1. Создать в Excel файл со словами и переводом к ним. Файл должен выглядеть примерно так:

      2. Открыть LingvoTutor. Выбрать Действия – Добавить словарь из файла. Выбрать созданный xls-файл.

      3. В появившемся окне выбрать изучаемый язык, язык перевода и указать название словаря.

      4. Словарь добавлен. Можно начинать обучение!

      Хочу еще добавить, что для многих учебников или языковых курсов уже есть готовые файлы со словарями, которые нужно всего лишь найти и скачать в интернете и загрузить в LingvoTutor.

пятница, 12 апреля 2013 г.

Характеристики и атрибуты качества программного обеспечения по ISO 9126

    Стандарт ISO 9126 предлагает использовать для описания внутреннего и внешнего качества ПО многоуровневую модель. На верхнем уровне выделено 6 основных характеристик качества ПО. Каждая характеристика описывается при помощи нескольких входящих в нее атрибутов. Для каждого атрибута определяется набор метрик, позволяющих его оценить. Множество характеристик и атрибутов качества согласно ISO 9126 показано на рисунке.


    

    1. Функциональность (functionality) - способность ПО в определенных условиях решать задачи, нужные пользователям. Определяет, что именно делает ПО, какие задачи оно решает.
  • Функциональная пригодность (suitability) - способность решать нужный набор задач.
  • Точность (accuracy) - способность выдавать нужные результаты.
  • Способность к взаимодействию (interoperability) - способность взаимодействовать с нужным набором других систем.
  • Соответствие стандартам и правилам (compliance) - соответствие ПО имеющимся индустриальным стандартам, нормативным и законодательным актам, другим регулирующим нормам.
  • Защищенность (security) - способность предотвращать неавторизированный, т.е. без указания лица, пытающегося его осуществить, и неразрешенный доступ к данным и программам. 

  2. Надежность (reliability)  -  способность  ПО  поддерживать  определенную  работоспособность в заданных условиях. 
  • Зрелость, завершенность (maturity) - величина, обратная частоте отказов ПО. Обычно измеряется средним временем работы без сбоев и величиной, обратной вероятности возникновения отказа за данный период времени.
  • Устойчивость к отказам (fault tolerance) - способность поддерживать заданный уровень работоспособности при отказах и нарушениях правил взаимодействия с окружением. 
  • Способность к восстановлению (recoverability): Способность восстанавливать определенный уровень работоспособности и целостность данных после отказа, необходимые для этого время и ресурсы. 
  • Соответствие стандартам надежности (reliability compliance).

    3. Удобство использования (usability) или практичность - способность ПО быть удобным в обучении и использовании, а также привлекательным для пользователей.
  • Понятность (understandability) - показатель, обратный к усилиям, которые затрачиваются пользователями на восприятие основных понятий ПО и осознание их применимости для решения своих задач.
  • Удобство обучения (learnability) - показатель, обратный усилиям, затрачиваемым пользователями на обучение работе с ПО. 
  • Удобство работы (operability) - показатель, обратный усилиям, предпринимаемым пользователями для решения своих задач с помощью ПО. 
  • Привлекательность (attractiveness) - способность ПО быть привлекательным для пользователей. 
  • Соответствие стандартам удобства использования (usability compliance).

    4. Производительность (efficiency) или эффективность - способность ПО при заданных условиях обеспечивать необходимую работоспособность по отношению к выделяемым для этого ресурсам. Можно определить ее и как отношение получаемых с помощью ПО результатов к затрачиваемым на это ресурсам всех типов.
  • Временная эффективность (time behaviour) - способность ПО выдавать ожидаемые результаты, а также обеспечивать передачу необходимого объема данных за отведенное время.
  • Эффективность использования ресурсов (resource utilisation) - способность решать нужные задачи с использованием определенных объемов ресурсов определенных видов. Имеются в виду такие ресурсы, как оперативная и долговременная память, сетевые соединения, устройства ввода и вывода и пр. 
  • Соответствие стандартам производительности (efficiency compliance).

    5. Удобство сопровождения (maintainability) - Удобство проведения всех видов деятельности, связанных с сопровождение программ.
  • Анализируемость (analyzability) или удобство проведения анализа - удобство проведения анализа ошибок, дефектов и недостатков, а также удобство анализа необходимости изменений и их возможных последствий.
  • Удобство внесения изменений (changeability) - показатель, обратный трудозатратам на выполнение необходимых изменений. 
  • Стабильность (stability) - показатель, обратный риску возникновения неожиданных эффектов при внесении необходимых изменений. 
  • Удобство проверки (testability) - показатель, обратный трудозатратам на проведение тестирования и других видов проверки того, что внесенные изменения привели к нужным результатам. 
  • Соответствие стандартам удобства сопровождения (maintainability compliance).

    6. Переносимость (portability) - способность ПО сохранять работоспособность при переносе из одного окружения в другое, включая организационные, аппаратные и программные аспекты окружения.
    Иногда эта характеристика называется в русскоязычной литературе мобильностью. Однако термин "мобильность" стоит зарезервировать для перевода "mobility" — способности ПО и компьютерной системы в целом сохранять работоспособность при ее физическом перемещении в пространстве.
  • Адаптируемость (adaptability) - способность ПО приспосабливаться различным окружениям без проведения для этого действий, помимо заранее предусмотренных.
  • Удобство установки (installability) - способность ПО быть установленным или развернутым в определенном окружении. 
  • Способность к сосуществованию (coexistence) - способность ПО сосуществовать с другими программами в общем окружении, деля с ними ресурсы. 
  • Удобство замены (replaceability) другого ПО данным - возможность применения данного ПО вместо других программных систем для решения тех же задач в определенном окружении. 
  • Соответствие стандартам переносимости (portability compliance).


    Помимо перечисленных характеристик и атрибутов качества, стандарт ISO 9126:2001 определяет наборы метрик для оценки каждого атрибута. Вот некоторые примеры таких метрик.
  1. Полнота реализации функций — процент реализованных функций по отношению к перечисленным в требованиях. Используется для измерения функциональной пригодности.
  2. Корректность реализации функций — правильность их реализации по отношению к требованиям. Используется для измерения функциональной пригодности. 
  3. Отношение числа обнаруженных дефектов к прогнозируемому. Используется для определения зрелости. 
  4. Отношение числа проведенных тестов к общему их числу. Используется для определения зрелости. 
  5. Отношение числа доступных проектных документов к указанному в их списке. Используется для измерения удобства проведения анализа. 
  6. Наглядность и полнота документации. Используется для оценки понятности.

Определение понятия качества ПО


      Понятие качества программного обеспечения определяется в стандарте ISO 9126 как вся совокупность его характеристик, относящихся к возможности удовлетворять высказанные или подразумеваемые потребности всех заинтересованных лиц.

      Общее представление о качестве ПО стандартами рекомендуется отражать тремя взаимодействующими и взаимозависимыми группами показателей, характеризующими:
  •  внутреннее качество, проявляющееся в процессе разработки, связано с характеристиками ПО самого по себе, без учета его поведения;
  • внешнее качество, заданное требованиями заказчика, характеризует ПО с точки зрения его поведения;
  • качество при использовании в процессе нормальной эксплуатации и результативностью достижения потребностей пользователей с учетом затрат.
      Для всех этих аспектов качества введены метрики, позволяющие оценить их. Кроме того, для создания добротного ПО существенно качество технологических процессов его разработки. Взаимоотношения между этими аспектами качества по схеме, принятой ISO 9126, показано на рисунке.

четверг, 4 апреля 2013 г.

Проверка внешнего вида web-приложений

0. Проверить соответствие макету, спецификации, ТЗ...
- в принципе достаточно просто глянуть намётанным глазом, если расхождения заметные — они будут бросаться в глаза

1. Проверить отображение элементов на странице:
- все элементы отображаются полностью, помещаются на странице без горизонтальной прокрутки
- верная кодировка
- текст легко читается (шрифт, цвет, размер)
- логичное размещение элементов на странице
- корректные заголовки, правильная структура заголовков
- стиль, названия и положение элементов единообразны на всех страницах приложения

2. Проверить переход на страницу:
- переход на страницу по ссылке с другой страницы/по прямому URL
- обновить страницу F5
- свернуть/развернуть окно
- изменение размеров окна (корректное отображение при наличии полосы прокрутки)

3. Проверить верстку страницы:
- корректный title для страницы (в идеале – у каждой страницы уникальный)
- наличие alt у картинок

4. Корректное отображение в процессе работы:
- выбор значений, выпадающие списки
- ввод реального текста (очень длинный текст – полоса прокрутки?)
- отображение ошибок

5. Работоспособность при выключенных картинках
- проверяется в FF через плагин Web Developer https://addons.mozilla.org/ru/firefox/addon/web-developer/ →Images→Replace Images With Alt Attributes.

6. Работоспособность при выключенном JavaScript
- проверяется в FF через плагин Web Developer https://addons.mozilla.org/ru/firefox/addon/web-developer/ →Disable→Disable JavaScript→All JavaScript

7. Работоспособность при выключенном Flash
- проверяется в FF отключением flash-плагина: Tools→Add-ons→Plugins→Shockwave Flash→disable.

8. Проверить скорость загрузки.
- скорость загрузки страницы можно посмотреть в панели Net в Firebug https://addons.mozilla.org/ru/firefox/addon/firebug/ Необходимо проверять, как отображается страница при загрузке на малых скоростях.

9. Для проектов, где это оговорено:
- версия для печати
- мобильная версия

10. Проверить в разных браузерах:
- Firefox (последняя версия)
- IE (последняя версия + предыдущая)
- Chrome (последняя версия)
- Opera (последняя версия)
- Safari (последняя версия)

11. Проверить в разном разрешении (Проверяется в FF через плагин https://addons.mozilla.org/ru/firefox/addon/web-developer/ Web Developer→Resize). Список классических разрешений:
- 1024x600
- 1024x768
- 1152x864
- 1280x800
- 1280x1024
- 1440x900
- 1680x1050
- 1920x1080

12. Дополнительные проверки:
- логотип на странице ведет на главную страницу
 - возможность навигации по различным страницам приложения
- проверить битые ссылки
- ссылки в тексте должны быть выделены + :hover, :active и :focus
- копирайт должен быть написан правильно http://habrahabr.ru/post/23812/
- проверить favicon.ico
- проверить орфографию http://www.artlebedev.ru/tools/orfograf/
- проверить переход по Tab, возможность работы с приложением только при помощи клавиатуры
 - проверить работу «горячих» клавиш