Главная страница
Навигация по странице:

  • Пример реализации логики создания эффективных проверок

  • Форматы входных файлов TXT HTML MD Кодировки входных фай- лов

  • Уже учтено при автоматизации про- верки работы приложения с 22 файлами. ) ▪ Значение LOG_FILE_NAME не указано. (Объединить с про- веркой ведения самого файла журнала.

  • Вычёркиваем. Не настолько важная про- верка, а если и будут проблемы — технология PHP не позволит их решить.

  • Ранее решили, что наше при- ложение явно уложится в весьма демократичные требования за- казчика.

  • Суть проверки Ожидаемая реакция

  • Тестирование приложений. Обеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022


    Скачать 5.07 Mb.
    НазваниеОбеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022
    АнкорТестирование приложений
    Дата06.10.2022
    Размер5.07 Mb.
    Формат файлаpdf
    Имя файлаSoftware Testing - Base Course (Svyatoslav Kulikov) - 3rd editio.pdf
    ТипКнига
    #718843
    страница22 из 38
    1   ...   18   19   20   21   22   23   24   25   ...   38

    2.4.7.
    Логика создания эффективных проверок
    Теперь, когда мы рассмотрели принципы построения чек-листов
    {112}
    и оформ- ления тест-кейсов
    {121}
    , свойства качественных тест-кейсов
    {133}
    , а также принципы объ- единения тест-кейсов в наборы
    {147}
    , настало время перейти к самой сложной, «фи- лософской» части, в которой мы будем рассуждать уже не о том, что и как писать, а о том, как думать.
    Ранее уже было сказано: если у тест-кейса не указаны входные данные, условия выполнения и ожидаемые результаты, и/или не ясна цель тест-кейса — это плохой тест-кейс. И здесь во главе угла стоит цель. Если мы чётко понимаем, что и зачем мы делаем, мы или быстро находим всю остальную недостающую ин- формацию, или столь же быстро формулируем правильные вопросы и адресуем их правильным людям.
    Вся суть работы тестировщика в конечном итоге направлена на повышение качества (процессов, продуктов и т.д.). Но что такое качество? Да, существует сухое официальное определение
    305
    , но даже там сказано про «user/customer needs and expectations
    » (потребности и ожидания пользователя/заказчика).
    И здесь проявляется главная мысль: качество — это некая ценность для
    конечного пользователя (заказчика). Человек в любом случае платит за исполь- зование продукта — деньгами, своим временем, какими-то усилиями (даже если вы не получаете эту «оплату», человек вполне обоснованно считает, что что-то уже на вас потратил, и он прав). Но получает ли он то, на что рассчитывал (предположим, что его ожидания — здравы и реалистичны)?
    Если мы подходим к тестированию формально, мы рискуем получить про- дукт, который по документам (метрикам и т.д.) выглядит идеально, но в реальности никому не нужен.
    Поскольку практически любой современный программный продукт представ- ляет собой непростую систему, среди широкого множества её свойств и функций объективно есть самые важные, менее важные и совсем незначительные по важ- ности для пользователей.
    Если усилия тестировщиков будут сконцентрированы на первой и второй ка- тегории (самом важном и чуть менее важном), наши шансы создать приложение, удовлетворяющее заказчика, резко увеличиваются.
    Есть простая логика:
    • Тесты ищут ошибки.
    • Но все ошибки найти невозможно.
    • Значит, наша задача — найти максимум ВАЖНЫХ ошибок за имеющееся время.
    Под важными ошибками здесь мы понимаем такие, которые приводят к нару- шению важных для пользователя функций или свойств продукта. Функции и свой- ства разделены не случайно — безопасность, производительность, удобство и т.д. не относятся к функциям, но играют ничуть не менее важную роль в формировании удовлетворённости заказчика и конечных пользователей.
    Ситуация усугубляется следующими фактами:
    • в силу множества экономических и технических причин мы не можем выпол- нить «все тесты, что придут нам в голову» (да ещё и многократно) — прихо- дится тщательно выбирать, что и как мы будем тестировать, принимая во внимание только что упомянутую мысль: качество — это некая ценность для конечного пользователя (заказчика);
    305
    Quality. The degree to which a component, system or process meets specified requirements and/or user/customer needs and expectations. [ISTQB Glossary]

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 150/298
    • никогда в реальной жизни (как бы мы ни старались) мы не получим «совер- шенного и идеального набора требований» — там всегда будет некоторое количество недоработок, и это тоже надо принимать во внимание.
    Однако существует достаточно простой алгоритм, позволяющий нам созда- вать эффективные проверки даже в таких условиях. Приступая к продумыванию чек-листа, тест-кейса или набора тест-кейсов, задайте себе следующие вопросы и получите чёткие ответы:
    • Что перед вами? Если вы не понимаете, что вам предстоит тестировать, вы не уйдёте дальше бездумных формальных проверок.
    • Кому и зачем оно нужно (и насколько это важно)? Ответ на этот вопрос поз- волит вам быстро придумать несколько характерных сценариев использова- ния
    {143}
    того, что вы собираетесь тестировать.
    • Как оно обычно используется? Это уже детализация сценариев и источник идей для позитивного тестирования
    {79}
    (их удобно оформить в виде чек-ли- ста).
    • Как оно может сломаться, т.е. начать работать неверно? Это также детали- зация сценариев использования, но уже в контексте негативного тестирова- ния
    {79}
    (их тоже удобно оформить в виде чек-листа).
    К этому алгоритму можно добавить ещё небольшой перечень универсальных рекомендаций, которые позволят вам проводить тестирование лучше:
    • Начинайте как можно раньше — уже с момента появления первых требова- ний можно заниматься их тестированием и улучшением, можно писать чек- листы и тест-кейсы, можно уточнять план тестирования, готовить тестовое окружение и т.д.
    • Если вам предстоит тестировать что-то большое и сложное, разбивайте его на модули и подмодули, функциональность подвергайте функциональной декомпозиции
    306
    — т.е. добейтесь такого уровня детализации, при котором вы можете без труда удержать в голове всю информацию об объекте тести- рования.
    • Обязательно пишите чек-листы. Если вам кажется, что вы сможете запом- нить все идеи и потом легко их воспроизвести, вы ошибаетесь. Исключений не бывает.
    • По мере создания чек-листов, тест-кейсов и т.д. прямо в текст вписывайте возникающие вопросы. Когда вопросов накопится достаточно, соберите их отдельно, уточните формулировки и обратитесь к тому, кто может дать от- веты.
    • Если используемое вами инструментальное средство позволяет использо- вать косметическое оформление текста — используйте (так текст будет лучше читаться), но старайтесь следовать общепринятым традициям и не раскрашивать каждое второе слово в свой цвет, шрифт, размер и т.д.
    • Используйте технику беглого просмотра
    {48}
    для получения отзыва от коллег и улучшения созданного вами документа.
    • Планируйте время на улучшение тест-кейсов (исправление ошибок, дора- ботку по факту изменения требований и т.д.).
    • Начинайте проработку (и выполнение) тест-кейсов с простых позитивных проверок наиболее важной функциональности. Затем постепенно повы- шайте сложность проверок, помня не только о позитивных
    {79}
    , но и о негатив- ных
    {79}
    проверках.
    306
    «Functional decomposition», Wikipedia [
    http://en.wikipedia.org/wiki/Functional_decomposition
    ]

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 151/298
    • Помните, что в основе тестирования лежит цель. Если вы не можете быстро и просто сформулировать цель созданного вами тест-кейса, вы создали пло- хой тест-кейс.
    • Избегайте избыточных, дублирующих друг друга тест-кейсов. Минимизиро- вать их количество вам помогут техники классов эквивалентности
    {91}
    , гранич- ных условий
    {92}
    , доменного тестирования
    {92}
    • Если показательность
    {137}
    тест-кейса можно увеличить, при этом не сильно изменив его сложность и не отклонившись от исходной цели, сделайте это.
    • Помните, что очень многие тест-кейсы требуют отдельной подготовки, кото- рую нужно описать в соответствующем поле тест-кейса.
    • Несколько позитивных тест-кейсов
    {79}
    можно безбоязненно объединять, но объединение негативных тест-кейсов
    {79}
    почти всегда запрещено.
    • Подумайте, как можно оптимизировать созданный вами тест-кейс (набор тест-кейсов и т.д.) так, чтобы снизить трудозатраты на его выполнение.
    • Перед тем как отправлять финальную версию созданного вами документа, ещё раз перечитайте написанное (в доброй половине случаев найдёте опе- чатку или иную недоработку).
    Задание 2.4.e: дополните этот список идеями, которые вы почерпнули из других книг, статей и т.д.
    Пример реализации логики создания эффективных проверок
    Ранее мы составили подробный чек-лист
    {112}
    для тестирования нашего «Кон- вертера файлов»
    {57}
    . Давайте посмотрим на него критически и подумаем: что можно сократить, чем мы в итоге пожертвуем и какой выигрыш получим.
    Прежде чем мы начнём оптимизировать чек-лист, важно отметить, что реше- ние о том, что важно и что неважно, стоит принимать на основе ранжирования тре- бований по важности, а также согласовывать с заказчиком.
    Что для пользователя САМОЕ важное? Ради чего создавалось приложение?
    Чтобы конвертировать файлы. Принимая во внимание тот факт, что настройку при- ложения будет выполнять квалифицированный технический специалист, мы можем даже «отодвинуть на второй план» реакцию приложения на ошибки стадии запуска и завершения.
    И на первое место выходит:
    • Обработка файлов, разные форматы, кодировки и размеры:
    Таблица 2.4.d — Форматы, кодировки и размеры файлов
    Форматы входных файлов
    TXT
    HTML
    MD
    Кодировки
    входных фай-
    лов
    WIN1251 100 КБ
    50 МБ
    10
    МБ
    CP866 10 МБ
    100 КБ
    50 МБ
    KOI8R
    50 МБ
    10 МБ
    100 КБ
    Любая
    0 байт
    Любая
    50 МБ + 1 Б
    50 МБ + 1 Б
    50 МБ + 1 Б
    -
    Любой недопустимый формат
    Любая
    Повреждения в допустимом формате

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 152/298
    Можем ли мы как-то ускорить выполнение этих проверок (ведь их много)?
    Можем. И у нас даже есть два взаимодополняющих инструмента:
    • дальнейшая классификация по важности;
    • автоматизация тестирования.
    Сначала поделим таблицу на две — чуть более важное и чуть менее важное.
    В «чуть более важное» попадает:
    Таблица 2.4.e — Форматы, кодировки и размеры файлов
    Форматы входных файлов
    TXT
    HTML
    MD
    Кодировки входных фай- лов
    WIN1251 100 КБ
    50 МБ
    10
    МБ
    CP866 10 МБ
    100 КБ
    50 МБ
    KOI8R
    50 МБ
    10 МБ
    100 КБ
    Подготовим 18 файлов — 9 исходных + 9 сконвертированных (в любом тек-
    стовом редакторе с функцией конвертации кодировок), чтобы в дальнейшем
    сравнивать работу нашего приложения с эталоном.
    Для «чуть менее важного» осталось:
    • Файл размером 0 байт (объективно для него не важна такая характеристика, как «кодировка»). Подготовим один файл размером 0 байт.
    • Файл размером 50 МБ + 1 Б (для него тоже не важна кодировка). Подготовим
    один файл размером 52’428’801 байт.
    • Любой недопустимый формат: o
    По расширению (файл с расширением, отличным от .txt, .html, .md).
    Берём любой произвольный файл, например картинку (размер от 1
    до 50 МБ, расширение .jpg). o
    По внутреннему содержанию (например, .jpg переименовали в .txt). Ко-
    пии файла из предыдущего пункта даём расширение .txt.
    • Повреждения в допустимом формате. Вычёркиваем. Вообще. Даже крайне
    сложные дорогие редакторы далеко не всегда способны восстановить по-
    вреждённые файлы своих форматов, наше же приложение — это просто
    миниатюрная утилита конвертации кодировок, и не стоит ждать от неё
    возможностей профессионального инструментального средства восста-
    новления данных.
    Что мы получили в итоге? Нам нужно подготовить следующие 22 файла (по- скольку у файлов всё равно есть имена, усилим этот набор тестовых данных, пред- ставив в именах файлов символы латиницы, кириллицы и спецсимволы).

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 153/298
    Таблица 2.4.f — Итоговый набор файлов для тестирования приложения

    Имя
    Кодировка
    Размер
    1
    «Мелкий» файл в WIN1251.txt
    WIN1251 100
    КБ
    2
    «Средний» файл в CP866.txt
    CP866 10
    МБ
    3
    «Крупный» файл в KOI8R.txt
    KOI8R
    50
    МБ
    4
    «Крупный» файл в win-1251.html
    WIN1251 50
    МБ
    5
    «Мелкий» файл в cp-866.html
    CP866 100
    КБ
    6
    «Средний» файл в koi8-r.html
    KOI8R
    10
    МБ
    7
    «Средний» файл в WIN_1251.md
    WIN1251 10
    МБ
    8
    «Крупный» файл в CP_866.md
    CP866 50
    МБ
    9
    «Мелкий» файл в KOI8_R.md
    KOI8R
    100
    КБ
    10
    «Мелкий» эталон WIN1251.txt
    UTF8 100
    КБ
    11
    «Средний» эталон CP866.txt
    UTF8 10
    МБ
    12
    «Крупный» эталон KOI8R.txt
    UTF8 50
    МБ
    13
    «Крупный» эталон в win-1251.html
    UTF8 50
    МБ
    14
    «Мелкий» эталон в cp-866.html
    UTF8 100
    КБ
    15
    «Средний» эталон в koi8-r.html
    UTF8 10
    МБ
    16
    «Средний» эталон в WIN_1251.md
    UTF8 10
    МБ
    17
    «Крупный» эталон в CP_866.md
    UTF8 50
    МБ
    18
    «Мелкий» эталон в KOI8_R.md
    UTF8 100
    КБ
    19
    Пустой файл.md
    -
    0 Б
    20
    Слишком большой файл.txt
    -
    52’428’801 Б
    21
    Картинка.jpg
    -

    1
    МБ
    22
    Картинка в виде TXT.txt
    -
    1
    МБ
    И только что мы упомянули автоматизацию как способ ускорения выполне- ния тест-кейсов. В данном случае мы можем обойтись самыми тривиальными ко- мандными файлами. В приложении «Командные файлы для Windows и Linux, авто- матизирующие выполнение дымового тестирования»
    {281}
    приведены скрипты, пол- ностью автоматизирующие выполнение всего уровня дымового тестирования
    {76}
    над представленным выше набором из 22 файлов.
    Задание 2.4.f: доработайте представленные в приложении
    {281}
    командные файлы так, чтобы их выполнение заодно проверяло работу тестируемого приложения с пробелами, кириллическими символами и спецсимволами в путях к входному каталогу, выходному каталогу и файлу журнала. Опти- мизируйте получившиеся командные файлы так, чтобы избежать много- кратного дублирования кода.
    Если снова вернуться к чек-листу, то оказывается, что мы уже подготовили проверки для всего уровня дымового тестирования
    {76}
    и части уровня тестирования критического пути
    {77}
    Продолжим оптимизацию. Большинство проверок не представляет особой сложности, и мы разберёмся с ними по ходу дела, но есть в чек-листе пункт, вызы- вающий особую тревогу: производительность.
    Тестирование и оптимизация производительности
    {88}
    — это отдельный вид тестирования со своими достаточно непростыми правилами и подходами, к тому же разделяющийся на несколько подвидов. Нужно ли оно нам в нашем приложе- нии? Заказчик в
    АК-1.1
    определил минимальную производительность приложения как способность обрабатывать входные данные со скоростью не менее 5 МБ/сек.
    Грубые эксперименты на указанном в
    АК-1.1
    оборудовании показывают, что даже куда более сложные операции (например, архивирование видеофайла с макси- мальной степенью сжатия) выполняются быстрее (пусть и ненамного). Вывод? Вы- чёркиваем. Вероятность встретить здесь проблему ничтожно мала, а соответству-

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 154/298 ющее тестирование требует ощутимых затрат сил и времени, а также наличия со- ответствующих специалистов.
    Вернёмся к чек-листу:
    • Конфигурирование и запуск: o
    С верными параметрами:

    Значения SOURCE_DIR, DESTINATION_DIR, LOG_FILE_NAME указаны и содержат пробелы и кириллические символы (повто- рить для форматов путей в Windows и *nix файловых системах, обратить внимание на имена логических дисков и разделители имён каталогов (“/” и “\”)). (Уже учтено при автоматизации про-
    верки работы приложения с 22 файлами.)

    Значение LOG_FILE_NAME не указано. (Объединить с про-
    веркой ведения самого файла журнала.) o
    Без параметров. o
    С недостаточным количеством параметров. o
    С неверными параметрами:

    Недопустимый путь SOURCE_DIR.

    Недопустимый путь DESTINATION_DIR.

    Недопустимое имя LOG_FILE_NAME.
    ▪ DESTINATION_DIR находится внутри SOURCE_DIR.

    Значения DESTINATION_DIR и SOURCE_DIR совпадают.
    • Обработка файлов: o
    Разные форматы, кодировки и размеры. (Уже сделано.) o
    Недоступные входные файлы:

    Нет прав доступа.

    Файл открыт и заблокирован.

    Файл с атрибутом «только для чтения».
    • Остановка: o
    Закрытием окна консоли. (Вычёркиваем. Не настолько важная про-
    верка, а если и будут проблемы — технология PHP не позволит
    их решить.)
    • Журнал работы приложения: o
    Автоматическое создание (при отсутствии журнала), имя журнала ука- зано явно. o
    Продолжение (дополнение журнала) при повторных запусках, имя жур- нала не указано.
    • Производительность: o
    Элементарный тест с грубой оценкой. (Ранее решили, что наше при-
    ложение явно уложится в весьма демократичные требования за-
    казчика.)
    Перепишем компактно то, что у нас осталось от уровня тестирования крити- ческого пути
    {77}
    . Внимание! Это — НЕ тест-кейс! Это всего лишь ещё одна форма записи чек-листа, более удобная на данном этапе.

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 155/298
    Таблица 2.4.g — Чек-лист для уровня критического пути
    Суть проверки
    Ожидаемая реакция
    Запуск без параметров.
    Отображение инструкции к использованию.
    Запуск с недостаточным количеством парамет- ров.
    Отображение инструкции к использованию и указание имён недостающих параметров.
    Запуск с неверными значениями параметров: o
    Недопустимый путь SOURCE_DIR. o
    Недопустимый путь DESTINATION_DIR. o
    Недопустимое имя LOG_FILE_NAME. o DESTINATION_DIR находится внутри
    SOURCE_DIR. o
    Значения DESTINATION_DIR и
    SOURCE_DIR совпадают.
    Отображение инструкции к использованию и указание имени неверного параметра, значе- ния неверного параметра и пояснения сути проблемы.
    Недоступные входные файлы: o
    Нет прав доступа. o
    Файл открыт и заблокирован. o
    Файл с атрибутом «только для чтения».
    Отображение сообщения в консоль и файл журнала, дальнейшее игнорирование недо- ступных файлов.
    Журнал работы приложения: o
    Автоматическое создание (при отсутствии журнала), имя журнала указано явно. o
    Продолжение (дополнение журнала) при повторных запусках, имя журнала не ука- зано.
    Создание или продолжение ведения файла журнала по указанному или вычисленному пути.
    Наконец, у нас остался уровень расширенного тестирования
    {78}
    И сейчас мы сделаем то, чего по всем классическим книгам учат не делать, — мы откажемся от всего этого набора проверок целиком.
    • Конфигурирование и запуск: o
    Значения SOURCE_DIR, DESTINATION_DIR, LOG_FILE_NAME:

    В разных стилях (Windows-пути + *nix-пути) — одно в одном стиле, другое — в другом.

    С использованием UNC-имён.
    ▪ LOG_FILE_NAME внутри SOURCE_DIR.
    ▪ LOG_FILE_NAME внутри DESTINATION_DIR. o
    Размер LOG_FILE_NAME на момент запуска:
    ▪ 2
    –4 ГБ.
    ▪ 4+
    ГБ. o
    Запуск двух и более копий приложения с:

    Одинаковыми параметрами SOURCE_DIR, DESTINATION_DIR,
    LOG_FILE_NAME.

    Одинаковыми SOURCE_DIR и LOG_FILE_NAME, но разными
    DESTINATION_DIR.

    Одинаковыми DESTINATION_DIR и LOG_FILE_NAME, но раз- ными SOURCE_DIR.
    • Обработка файлов: o
    Файл верного формата, в котором текст представлен в двух и более поддерживаемых кодировках одновременно. o
    Размер входного файла:
    ▪ 2
    –4 ГБ.
    ▪ 4+
    ГБ.
    Да, мы сейчас действительно повысили риск пропустить какой-то дефект. Но
    — дефект, вероятность возникновения которого мала в силу малой вероятности возникновения описанных в этих проверках ситуаций. При этом по самым скромным

    Логика создания эффективных проверок
    Тестирование программного обеспечения. Базовый курс.
    © EPAM Systems, 2015–2022
    Стр: 156/298 прикидкам мы на треть сократили общее количество проверок, которые нам нужно будет выполнять, а значит — высвободили силы и время для более тщательной проработки типичных каждодневных сценариев использования
    {143}
    приложения.
    Весь оптимизированный чек-лист (он же — и черновик для плана выполнения проверок) теперь выглядит так:
    1)
    Подготовить файлы (см. таблицу 2.4.f).
    2)
    Для «дымового теста» использовать командные файлы (см. приложение «Ко- мандные файлы для Windows и Linux, автоматизирующие выполнение дымо- вого тестирования»
    {281}
    ).
    3)
    Для основных проверок использовать файлы из пункта 1 и следующие идеи
    (
    таблица 2.4.h).
    Таблица 2.4.h — Основные проверки для приложения «Конвертер файлов»
    1   ...   18   19   20   21   22   23   24   25   ...   38


    написать администратору сайта