Файл: Обеспечения Базовый курс (3е издание) Версия книги 2 от 17. 04. 2023.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 879
Скачиваний: 31
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Исследовательское тестирование
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 252/301 3 php converter.php "c:/non/exist- ing/directory/" c:/
Error: SOURCE_DIR name [c:\non\exist- ing\directory] is not a valid directory.
Слеши заменены на бэк- слеши, конечный бэк-слеш удалён: так и надо? Глянуть в коде, пока не ясно, дефект это или так и задумано.
4 php converter.php c:/ d:/
2015.06.12 13:37:56 Started with parame- ters: SOURCE_DIR=[C:\], DESTINA-
TION_DIR=[D:\],
LOG_FILE_NAME=[.\converter.log]
Буквы дисков приведены к верхнему регистру, слеши за- менены на бэк-слеши. По- чему имя лог-файла относи- тельное?
5 php converter.php c:/ c:/
Error: DESTINATION_DIR [C:\] and
SOURCE_DIR [C:\]
mat
NOT be the same dir.
Опечатка в сообщении. Явно должно быть must или may.
6 php converter.php "c:
/каталог с русским именем/" c:/
Error: SOURCE_DIR name [c:\
ърЄрыюу ё
Ёєёёъшь шьхэхь] is not a valid directory.
Дефект: проблема с кодиров- ками.
7 php converter.php / c:/Win- dows/Temp
Error: SOURCE_DIR name [] is not a valid directory.
Проверить под Linux: мало- вероятно, конечно, что кто-то прямо в / будет что-то рабо- чее хранить, но имя «/» уре- зано до пустой строки, что до- пустимо для Windows, но не для Linux.
8
Примечание: «e:» -- DVD- привод. php converter.php c:/ e:/ file_put_con- tents(e:f41c7142310c5910e2cfb57993b4d
004620aa3b8): failed to open stream: Per- mission denied in \classes\CLPAna- lyser.class.php at line 70 Error: DESTINA-
TION_DIR [e] is not writeable.
Дефект: сообщение от PHP не перехвачено.
9 php converter.php /var/www
/var/www/1
Error: SOURCE_DIR name [var/www] is not a valid directory.
Дефект: в Linux обрезается начальный «/» в имени ката- лога, т.е. можно смело счи- тать, что под Linux приложе- ние неработоспособно
(можно задавать только отно- сительные пути, начинающи- еся с «.» или «..»).
Выводы по итогам тестирования (которое, к слову, заняло около получаса):
• Нужно подробно обсудить с заказчиком форматы и содержание сообщений об использовании приложения и об ошибках, а также формат записей лог- файла. Разработчики предложили идеи, выглядящие куда более адекватно, чем изначально описано в требованиях, но всё равно нужно согласование.
• Под Windows серьёзных дефектов не обнаружено, приложение вполне рабо- тоспособно.
• Под Linux есть критическая проблема с исчезновением «/» в начале пути, что не позволяет указывать абсолютные пути к каталогам.
• Если обобщить вышенаписанное, то можно констатировать, что дымовой тест успешно пройден под Windows и провален под Linux.
Цикл «изучение, планирование, тестирование» можно многократно повто- рить, дополняя и рассматривая список обнаруженных проблем (таблица 2.7.k) как новую информацию для изучения, ведь каждая такая проблема даёт пищу для раз- мышлений и придумывания дополнительных тест-кейсов.
Задание 2.7.e: опишите дефекты, представленные в таблице 2.7.k в виде полноценных отчётов о дефектах.
Поиск причин возникновения дефектов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 253/301
В данной главе в таблице 2.7.k некоторые пункты представляют собой оче- видные дефекты. Но что их вызывает? Почему они возникают, как могут прояв- ляться и на что влиять? Как описать их максимально подробно и правильно в отчё- тах о дефектах? Ответам на эти вопросы посвящена следующая глава, в которой мы поговорим о поиске и исследовании причин возникновения дефектов.
2.7.6.
Поиск причин возникновения дефектов
Ранее мы отмечали
{168}
, что используем слово «дефект» для обозначения проблемы потому, что описание конечного симптома несёт мало пользы, а выясне- ние исходной причины может быть достаточно сложным. И всё же наибольший эф- фект приносит как раз определение и устранение первопричины, что позволяет снизить риск появления новых дефектов, обусловленных той же самой (ненайден- ной и неустранённой) недоработкой.
Анализ первопричин (root cause analysis
364
)
— процесс исследования и классификации первопричин возникновения событий, негативно влияю- щих на безопасность, здоровье, окружающую среду, качество, надёжность и производственный процесс.
Как видно из определения, анализ первопричин не ограничивается разработ- кой программ, но нас он будет интересовать всё же в ИТ-контексте. Часто ситуация, в которой тестировщик пишет отчёт о дефекте, может быть отражена рисунком 2.7.i.
Рисунок 2.7.i — Проявление и причины дефекта
В самом худшем случае проблема вообще будет пропущена (не замечена), и отчёт о дефекте не будет написан. Чуть лучше выглядит ситуация, когда отчёт описывает исключительно внешние проявления проблемы. Приемлемым может считаться описание лежащих на поверхности причин. Но в идеале нужно стре- миться добраться до двух самых нижних уровней — первопричины и условий, спо-
364
Root cause analysis (RCA) is a process designed for use in investigating and categorizing the root causes of events with safety, health, environmental, quality, reliability and production impacts. [James Rooney and Lee Vanden Heuvel,
«Root Cause
Analysis for Beginners», https://www.abs-group.com/content/documents/rca_for_begineers.pdf
]
Наблюдаемое проявление проблемы
Симптом
Причина N
Причина N-1
Первопричина
Условия, способствовавшие возникновению первопричины
Поиск причин возникновения дефектов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 254/301 собствовавших её возникновению (хоть последнее часто и лежит в области управ- ления проектом, а не тестирования как такового).
Вкратце вся эта идея выражается тремя простыми пунктами. Нам нужно по- нять:
• Что произошло.
• Почему это произошло (найти первопричину).
• Как снизить вероятность повторения такой ситуации.
Сразу же рассмотрим практический пример. В таблице 2.7.k в строке с номе- ром 9
{252}
есть упоминание крайне опасного поведения приложения под Linux — из путей, переданных приложению из командной строки, удаляется начальный символ
«/», что для Linux приводит к некорректности любого абсолютного пути.
Пройдём по цепочке, представленной рисунком 2.7.i, и отразим этот путь таб- лицей 2.7.l:
Таблица 2.7.l — Пример поиска первопричины
Уровень анализа
Наблюдаемая ситуация
Рассуждения и выводы
Наблюдаемое проявление про- блемы
Тестировщик выполнил команду «php converter.php
/var/www
/var/www/1
» и по- лучил такой ответ приложения: «Error:
SOURCE_DIR name [
var/www
] is not a valid directory.
» в ситуации, когда указанный ка- талог существует и доступен для чтения.
Сразу же бросается в глаза, что в сообщении об ошибке имя каталога отличается от заданного — отсутствует начальный «/». Несколько кон- трольных проверок подтвер- ждают догадку — во всех па- раметрах командной строки начальный «/» удаляется из полного пути.
На этом этапе очень часто начинающие тестировщики описывают дефект как «неверно распознаётся имя каталога», «приложение не обнаруживает доступные каталоги» и тому подобными словами. Это плохо как минимум по двум причинам: а) описание дефекта некорректно; б) программисту придётся самому проводить всё исследование.
Таблица 2.7.l [продолжение]
Уровень анализа
Наблюдаемая ситуация
Рассуждения и выводы
Причина N
Факт: во всех параметрах командной строки начальный «/» удаляется из пол- ного пути. Проверка с относительными пу- тями («php converter.php . .») и проверка под Windows («php converter.php c:\ d:\») показывает, что в таких ситуациях прило- жение работает.
Дело явно в обработке вве- дённых имён: в некоторых случаях имя обрабатывается корректно, в некоторых — нет.
Гипотеза: убираются началь- ные и концевые «/» (может быть, ещё и «\»).
Причина N-1
Проверки «php converter.php \\\\\c:\\\\\
\\\\\d:\\\\\
» и «php converter.php /////c://///
/////d://///
» показывают, что приложение под
Windows запускается, корректно распо- знав правильные пути: «Started with parameters: SOURCE_DIR=[C:\],
DESTINATION_DIR=[D:\]
»
Гипотеза подтвердилась: из имён каталогов приложение убирает все «/» и «\», в любом количестве присутствующие в начале или конце имени.
В принципе, на этой стадии уже можно писать отчёт о дефекте с кратким опи- санием в стиле «Удаление краевых “/” и “\” из параметров запуска повреждает аб- солютные пути в Linux ФС». Но что нам мешает пойти ещё дальше?
Поиск причин возникновения дефектов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 255/301
Таблица 2.7.l [продолжение]
Уровень анализа
Наблюдаемая ситуация
Рассуждения и выводы
Причина N-2
Гипотеза: где-то в коде есть первичный фильтр полученных значений путей, кото- рый обрабатывает их до начала проверки каталога на существование. Этот фильтр работает некорректно. Откроем код класса, отвечающего за анализ парамет- ров командной строки. Очень быстро мы обнаруживаем метод, который виновен в происходящем: private function getCanonicalName($name)
{
$name = str_replace('\\', '/', $name);
$arr = explode('/', $name);
$name = trim(implode(DIRECTORY_SEPARATOR,
$arr), DIRECTORY_SEPARATOR);
return $name;
}
Мы нашли конкретное место в коде приложения, которое яв- ляется первопричиной обна- руженного дефекта. Информа- цию об имени файла, номере строки и выдержку самого кода с пояснениями, что в нём неверно, можно приложить в комментарии к отчёту о де- фекте. Теперь программисту намного проще устранить про- блему.
Задание 2.7.f: представьте, что программист исправил проблему сменой удаления краевых «/» и «\» на концевые (т.е. теперь они удаляются только в конце имени, но не в начале). Хорошее ли это решение?
Обобщённый алгоритм поиска первопричин можно сформулировать следую- щим образом (см. рисунок 2.7.j):
• Определить проявление проблемы o
Что именно происходит? o
Почему это плохо?
• Собрать необходимую информацию o
Происходит ли то же самое в других ситуациях? o
Всегда ли оно происходит одинаковым образом? o
От чего зависит возникновение или исчезновение проблемы?
• Выдвинуть гипотезу о причине проблемы o
Что может являться причиной? o
Какие действия или условия могут приводить к проявлению про- блемы? o
Какие другие проблемы могут быть причинами наблюдаемой про- блемы?
• Проверить гипотезу o
Провести дополнительное исследование. o
Если гипотеза не подтвердилась, проработать другие гипотезы.
• Убедиться, что обнаружена именно первопричина, а не очередная причина в длинной цепи событий o
Если обнаружена первопричина — сформировать рекомендации по её устранению. o
Если обнаружена промежуточная причина, повторить алгоритм для неё.
Здесь мы рассмотрели очень узкое применение поиска первопричин. Но представленный алгоритм универсален: он работает и в разных предмет- ных областях, и в управлении проектами, и в работе программистов (как часть процесса отладки).
Поиск причин возникновения дефектов
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 256/301
Рисунок 2.7.j — Алгоритм поиска первопричины дефекта
На этом мы завершаем основную часть данной книги, посвящённую «тести- рованию в принципе». Далее будет рассмотрена автоматизация тестирования как совокупность техник, повышающих эффективность работы тестировщика по мно- гим показателям.
Определить проявление проблемы
Собрать необходимую информацию
Выдвинуть гипотезу о причине проблемы
Проверить выдвинутую гипотезу
Гипотеза подтвердилась?
Сформировать рекомендации по устранению
Это первопричина?
Да
Да
Нет
Нет
Раздел 3: автоматизация тестирования
Тестирование программного обеспечения. Базовый курс.
© EPAM Systems, 2015–2023
Стр: 257/301
1 ... 30 31 32 33 34 35 36 37 38
Раздел 3: автоматизация тестирования
3.1.
Выгоды и риски автоматизации
3.1.1.
Преимущества и недостатки автоматизации
В разделе, посвящённом подробной классификации тестирования
{69}
, мы кратко рассматривали, что собой представляет автоматизированное тестирова- ние
{76}
: это набор техник, подходов и инструментальных средств, позволяющий ис- ключить человека из выполнения некоторых задач в процессе тестирования. В таб- лице 2.3.b
{76}
был приведён краткий список преимуществ и недостатков автоматиза- ции, который сейчас мы рассмотрим подробно.
• Скорость выполнения тест-кейсов может в разы и на порядки превосходить возможности человека. Если представить, что человеку придётся вручную сверять несколько файлов размером в несколько десятков мегабайт каждый, оценка времени ручного выполнения становится пугающей: месяцы или даже годы. При этом 36 проверок, реализуемых в рамках дымового тестирования командными скриптами
{284}
, выполняются менее чем за пять секунд и требуют от тестировщика только одного действия — запустить скрипт.
• Отсутствует влияние человеческого фактора в процессе выполнения тест- кейсов (усталости, невнимательности и т.д.). Продолжим пример из преды- дущего пункта: какова вероятность, что человек ошибётся, сравнивая (по- символьно!) даже два обычных текста размером в 100 страниц каждый? А если таких текстов 10? 20? И проверки нужно повторять раз за разом? Можно смело утверждать, что человек ошибётся гарантированно. Автоматика не ошибётся.
• Средства автоматизации способны выполнить тест-кейсы, в принципе непо- сильные для человека в силу своей сложности, скорости или иных факторов.
И снова наш пример со сравнением больших текстов является актуальным: мы не можем позволить себе потратить годы, раз за разом выполняя крайне сложную рутинную операцию, в которой мы к тому же будем гарантированно допускать ошибки. Другим прекрасным примером непосильных для человека тест-кейсов является исследование производительности
{91}
, в рамках кото- рого необходимо с высокой скоростью выполнять определённые действия, а также фиксировать значения широкого набора параметров. Сможет ли чело- век, например, сто раз в секунду измерять и записывать объём оперативной памяти, занимаемой приложением? Нет. Автоматика сможет.
• Средства автоматизации способны собирать, сохранять, анализировать, аг- регировать и представлять в удобной для восприятия человеком форме ко- лоссальные объёмы данных. В нашем примере с дымовым тестированием