Часть 2

Часть 2


Часть 2. Приемы и технологии тестирования


Система отслеживания проблем

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

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

  • Система является средством отслеживания хода работ. Информация, которая традиционно имелась в распоряжении только у руководства и нескольких программистов, становится доступной широкому кругу сотрудников самых разных уровней. Система предоставляет своим пользователям объективную и независимую оценку хода выполнения работ и их соответствия графику. В любой момент можно просмотреть полный список задач, которые еще должны быть решены. Текущее состояние продукта и его качество всегда известны. И каждый может увидеть, как продвигаются работы и насколько быстро решаются поставленные задачи.
  • Система является средством организации взаимодействия между сотрудниками. В каждой компании так или иначе решается целый ряд организационных вопросов. Когда процесс их решения автоматизирован, многое становится проще: действия сотрудников становятся боле регламентированными и упорядоченными. 

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

Отчеты о состоянии проекта

Эти полезные отчеты показывают, сколько ошибок выявлено в ходе тестирования, какая их часть еще ожидает исправления, каково соотношение количества исправленных и отложенных ошибок, сколько ошибок выявили тестировщики и сколько - остальной персонал. В отчетах фиксируются как данные за неделю, так и общие итоги.

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

Назначение базы данных — способствовать исправлению ошибок, а не собирать статистические сведения для руководства.

Еженедельные итоговые отчеты

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

Пользователи системы отслеживания проблем

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

Рядовые тестировщики. Рядовые тестировщики составляют отчеты о проблемах и просматривают их после того, как эти проблемы решаются. Они повторно тестируют программу, проверяя качество исправлений.

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

Программист. Программист читает отчет о проблеме и отвечает на него. 

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

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

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


Разработка тестов

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

Характеристики хорошего теста. Хороший тест должен удовлетворять следующим критериям:

  • Существует обоснованная вероятность выявления тестом ошибки.
  • Набор тестов не должен быть избыточным.
  • Тест должен быть наилучшим в своей категории.
  • Он не должен быть слишком простым или слишком сложным.

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

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

  • Все тесты предназначены для выявления одной и той же ошиби.
  • Если один из тестов выявит ошибку, остальные, скорее всего, тоже это сделают.
  • Если один из тестов не выявит ошибки, остальные, скорее всего, тоже этого не сделают.

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

Каждый раз, когда обнаруживается новый диапазон значений, вместе с ним появляется и несколько классов эквивалентности. Обычно среди них имеется три недопустимых класса: все числа, которые меньше нижнего граничного значения диапазона, все числа, большие его верхнего граничного значения, и нечисловые данные.

Прогнозирование ошибок

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

Случается, что в сложных ситуациях интуиция подсказывает гораздо лучшую тактику тестирования, чем тривиальная логика. Бывает, что срабатывает и ассоциативная связь: вы уже находили ошибку в подобных обстоятельствах, хотя можете этого даже не помнить. Как бы там ни было, доверяйте своему внутреннему чувству и учитесь к нему прислушиваться: с опытом оно будет становиться все более развитым и надежным.

Случайный ввод

Вместо разделения всей тестируемой области определения функции на определенное количество равных участков можно воспользоваться другим способом подбора входных значений случайным. Случайный выбор значений более эффективен, поскольку гарантирует их полную равноправность. Например, тестируя такую последовательность входных значений, как 0,02; 0,04; 0,06 и т.д., вы никогда не узнаете, как программа обрабатывает нечетные числа — как 0,03 или как числа с большим количеством значащих цифр, такие как 0,1415. В то же время при выборе входных значений случайным образом область определения функции покрывается гораздо более полно, все типы и диапазоны значений входных данных охватываются равномерно.

Регрессионное тестирование: успешно ли исправлена ошибка

Получив отчет об ошибке, программист тщательно анализирует исходный код, находит причину ошибки, исправляет ее и тестирует результат. Однако это идеальный вариант — на практике же так бывает далеко не всегда. Некоторые программисты исправляют только описанные в отчете симптомы. В результате исправления настоящие причины ошибки не устраняются одно из проявлений ошибки исчезает, но другие остаются. Бывает и так, что программист неправильно поймет отчет и исправит не то, что надо. Некоторые недобросовестные сотрудники вообще не тестируют свою работу: они не глядя вносят исправления и немедленно возвращают программу тестировщикам, не исправив прежнюю ошибку и наделав новых. Этот перечень можно продолжать бесконечно. Главное же не растеряться, столкнувшись с подобными ситуациями. Опытный тестировщик должен быть готов к ним заранее.

Считается, что около трети вносимых в программу исправлений или не срабатывают, или даже ”ломают” то, что уже работало. Мартин и Мак-Клер (Martin & mcClure, 1983) приводят статистику, показывающую, что с первого раза срабатывает менее половины вносимых программистами исправлений.

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


Тестирование принтеров и других устройств

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

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

Обзор принтеров

Вот каковы основные современные технологии печати:

  • Матричные принтеры печатают с помощью металлических иголок, расположенных в несколько рядов на печатающей головке
  • Струйные принтеры выпрыскивают на бумагу чернила, образуя маленькие точки
  • Страничные принтеры оперируют не символами и строками, а целыми страницами

Цветная печать

Возможностями печати в цвете обладают все три типа принтеров, но у матричных качество печати хуже, чем у струйных и страничных

Типы интерфейса

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

В процессе работы тестировщик многое узнает о конкретных моделях принтеров. Одни из устройств оказываются полностью совместимыми, другие, наоборот, не соответствуют утверждениям производителей об их совместимости. Накапливают знания и сотрудники группы технической поддержки, особенно благодаря жалобам пользователей. Много важного узнают программисты, руководители проектов и другие члены команды разработчиков.

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

Разумеется, всеми этими возможностями обладает только централизованная база данных. Со временем база данных аппаратно-программных конфигураций станет цейнейшим ресурсом вашей компании.


Адаптационное тестирование

Локализация — это процесс адаптации программного обеспечения для нового места эксплуатации. Изменение языка не является его единственной составляющей. Не менее важна, например, и культурная адаптация. Жителю другой части планеты вовсе необязательно понравится то, что нравится американцу. Жители разных стран по-разному записывают адреса. Для формата выходных данных, календаря, вида бланка заказа и других подобных вещей могут в каждой стране могут быть свои ” стандарты”. Если задуматься, культурой определяются очень многие вещи. И уж во всяком случае европейцу не понравится, если на выходном документе большими буквами будет написано: "Напечатано американской программой"


Тестирование Документации

Документация обычно состоит из руководства пользователя, инструкции по установке, обзорного буклета, RЕАDМЕ-файла на диске, интерактивнои справки и других сведений о том, как пользоваться продуктом

Читая и анализируя документацию, следует прежде всего уделить внимание ее точности, полноте, ясности, простоте использования и тому, насколько она соответствует духу программного продукта.

Документация является прекрасным источником реальных тестовых примеров.

Главной целью тестировщика документации в процессе ее производства является точность информации.


Инструментальные средства тестировщика

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

Хороший текстовый процессор. Электронная таблица. Утилиты для создания копий экрана.


Планирование и Документация

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

Главным критерием ценности документа является то, насколько он понятен читателю. Именно на это и ориентируется составитель документа, а потому он должен точно знать, кто его будет читать и какова степень компетентности этого человека.

Тестовый план

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

Многие тестировщики слишком увлекаются написанием бумаг, забывая, что их основная работа — поиск и исправление ошибок. Отбирайте только самое необходимое, сообразуясь с нуждами конкретного проекта.


Report Page