Тестирование проекта "Новости" (Case study)
#1
Отправлено 10 июля 2005 - 15:32
Автор: Баранцев Алексей, 09/07/2005
Abstract
Это эссе описывает учебный пример создания тестов для веб-приложения. Сначала показано, как создается и как выглядит план тестирования. Затем рассматривается модель, которая будет определять критерий отбора тестов. После чего строится собственно набор тестов.
Содержание:
Введение
Описание тестируемой системы, SRS
План тестирования, TP
Модель тестирования, TDS
Комплект тестов, TCS
Заключение
Читать полностью: http://software-test...esting_news.htm
Редактор портала www.it4business.ru
#2
Отправлено 11 июля 2005 - 12:09
Если параметр не указан или имеет пустое значение, скрипт выдает список последних десяти новостей.
Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?
Я бы не сказал, что небольшая и более того, очень типичная (параметр пуст). Не вижу смысла её игнорировать, даже в рамках учебного примера.
2. По поводу понятия "блок-схема". Я понимаю, что это схема на базе блоков - очень универскальное, так сказать, средство. Однако в нашем случае, когда на схеме изображается алгоритм программы, более привычным выглядит использование общеприятого термина "схема алгоритма (программы)", как это рекоммендует ГОСТ.
ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
Единая система программной документации
СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И СИСТЕМ
Обозначения условные и правила выполнения
Unified system for program documentation. Data, program and system flowcharts, program network charts and system resources charts. Documentation symbols and conventions for flowcharting
ОКСТУ 5004
ГОСТ 19.701-90 (ИСО 5807-85)
Дата введения 01.01.92
Настоящий стандарт распространяется на условные обозначения (символы) в схемах алгоритмов, программ, данных и систем и устанавливает правила выполнения схем, используемых для отображения различных видов задач обработки данных и средств их решения.
Стандарт не распространяется на форму записей и обозначений, помещаемых внутри символов или рядом с ними и служащих для уточнения выполняемых ими функций.
Требования стандарта являются обязательными.
А в целом - статья нужная и очень доходчивая. Я понял
IT-конференции: www.it-conf.ru
IT-тренинги в Беларуси: www.it-study.by
#3
Отправлено 11 июля 2005 - 12:22
Хе-хеДанные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?Если параметр не указан или имеет пустое значение, скрипт выдает список последних десяти новостей.
Я бы не сказал, что небольшая и более того, очень типичная (параметр пуст). Не вижу смысла её игнорировать, даже в рамках учебного примера.
...И кто-нибудь обязательно спросит: почему не протестирован вот этот аспект? почему я считаю, что мой набор тестов полон? почему... И вот тут я с довольным видом скажу — смотрите в план!
Пункт 5 плана четко указывает на то, что от тестирования в режиме (R2) я сознательно отказался. Это не ошибка, это моё решение, документально зафиксированное. Почему я его принял -- это отдельный разговор. Может быть, на аутсорсинг отдам, а может ещё почему.
Вот видите, дошло таки дело до отмазок. А ошибка в другом месте.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#4
Отправлено 11 июля 2005 - 12:53
Почему проигнорированы?Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?
http://software-test...ru/news/?topic= равно как и
http://software-testing.ru/news/ выдаёт последние 10 новостей.
Редактор портала www.it4business.ru
#5
Отправлено 11 июля 2005 - 13:04
Сергей имел в виду, что тестов для этой функциональности нет. Таки да, нет тестов. Нарочно не сделал. Сначала в план написал, что не буду делать. И не сделал в полном соответствии с планом.Почему проигнорированы?Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?
http://software-test...ru/news/?topic= равно как и
http://software-testing.ru/news/ выдаёт последние 10 новостей.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#6
Отправлено 11 июля 2005 - 13:21
Пункт 5 плана четко указывает на то, что от тестирования в режиме (R2) я сознательно отказался. Это не ошибка, это моё решение, документально зафиксированное. Почему я его принял -- это отдельный разговор. Может быть, на аутсорсинг отдам, а может ещё почему.
О, круто, у нас ещё будет статья про аутсорсинг!
Искусство быть скушным - это рассказывать сразу всё до конца?!
IT-конференции: www.it-conf.ru
IT-тренинги в Беларуси: www.it-study.by
#7
Отправлено 11 июля 2005 - 15:15
[SRS] Software Requirement Specefication вместо Specification
Не думаю, что это преднамеренная ошибка ;)
#8
Отправлено 12 июля 2005 - 08:26
Редактор портала www.it4business.ru
#9
Отправлено 15 июля 2005 - 09:14
1. Система работает с СУБД. Где обработка исключительных ситуаций при работе с базой? Я уж не говорю об обработке исключений типа отсутствия коннекта к базе или ошибки конкуррентного доступа, но хотя-бы, что будет если в качества параметра укажем число, не влезающее в размерность поля БД?
2. Что такое чило? 10E5 - число? А 12.000? Если да, то это 12 тысяч или просто 12 ?(может точка это разделитель тысяч? А что, в нектотрых локалях, вроде русской это вполне возможно)
3. И наконец, почему этот набор тестов является исчерпывающим? Можно придумать сколько угодно скриптов (в смысле, тестовых систем), которые будут проходить данные тесты но при этом не удовлетворять требованиям.
Майк.
#10
Отправлено 15 июля 2005 - 09:22
Да, на это мне уже указали, я признал, что не слишком хорошо восстановил требования к приложению. Нужно пополнять SRS. Но относительно изложенных требований -- всё в порядке, набор полон (почти, см. ниже).1. Система работает с СУБД. Где обработка исключительных ситуаций при работе с базой? Я уж не говорю об обработке исключений типа отсутствия коннекта к базе или ошибки конкуррентного доступа, но хотя-бы, что будет если в качества параметра укажем число, не влезающее в размерность поля БД?
Да, это как раз та ошибка, которую я сознательно оставил в статье, чтобы читатели не расслаблялись, а думали над тем, что читают2. Что такое чило? 10E5 - число? А 12.000? Если да, то это 12 тысяч или просто 12 ?(может точка это разделитель тысяч? А что, в нектотрых локалях, вроде русской это вполне возможно)
Вы, вероятно, имели в виду "тестируемых систем", а не "тестовых систем". Можно попросить Вас привести пример такой системы (не подробно, эскизно), прежде, чем мы продолжим дискуссию?3. И наконец, почему этот набор тестов является исчерпывающим? Можно придумать сколько угодно скриптов (в смысле, тестовых систем), которые будут проходить данные тесты но при этом не удовлетворять требованиям.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#11
Отправлено 15 июля 2005 - 10:01
Да, на это мне уже указали, я признал, что не слишком хорошо восстановил требования к приложению. Нужно пополнять SRS. Но относительно изложенных требований -- всё в порядке, набор полон (почти, см. ниже).
Cогласен, что это дырка в спецификации, а не в наборе тестов. НО: есть требования, которые не указываются в спецификации прямо, но подразумеваются. Например, что будет если в качестве параметра указать такую длинную строку, которая вызовет переполнение буффера? Или число, больше размерности переменной, которая его хранит? Кроме того, вряд-ли вы укажете в спецификации, что система не должна делать никаких посторонних действий (например, изменять записи), но Вам вряд-ли понравится если система будет это делать. А что, если систему отдали на аутсорсинг?
Да, это как раз та ошибка, которую я сознательно оставил в статье, чтобы читатели не расслаблялись, а думали над тем, что читают2. Что такое чило? 10E5 - число? А 12.000? Если да, то это 12 тысяч или просто 12 ?(может точка это разделитель тысяч? А что, в нектотрых локалях, вроде русской это вполне возможно)
3. И наконец, почему этот набор тестов является исчерпывающим? Можно придумать сколько угодно скриптов (в смысле, тестовых систем), которые будут проходить данные тесты но при этом не удовлетворять требованиям.
Кстати, в спецификации не сказано что число должно быть целым. И как обрабатывать ситуацию когда число дробное- тоже не указано...
Вы, вероятно, имели в виду "тестируемых систем", а не "тестовых систем". Можно попросить Вас привести пример такой системы (не подробно, эскизно), прежде, чем мы продолжим дискуссию?
Да, я имел в виду тестируемую систему, сорри. Пример - запросто Зачемм ходить далеко, пусть размерность целочисленной переменной которая хранит параметр будет меньше чем размерность соответствующего поля БД...
Майк.
#12
Отправлено 15 июля 2005 - 10:29
Да, есть такие ограничения, которые не описаны явно, но подразумеваются. Например, ограничения HTTP-протокола или конкретного HTTP-сервера. Однако, попробуйте указать очень большое число (скажем, состоящее из сотни девяток) -- получите сообщение о том, что нет новости с таким идентификатором. Всё честно, никакого подвоха.Cогласен, что это дырка в спецификации, а не в наборе тестов. НО: есть требования, которые не указываются в спецификации прямо, но подразумеваются. Например, что будет если в качестве параметра указать такую длинную строку, которая вызовет переполнение буффера? Или число, больше размерности переменной, которая его хранит? Кроме того, вряд-ли вы укажете в спецификации, что система не должна делать никаких посторонних действий (например, изменять записи), но Вам вряд-ли понравится если система будет это делать. А что, если систему отдали на аутсорсинг?Да, на это мне уже указали, я признал, что не слишком хорошо восстановил требования к приложению. Нужно пополнять SRS. Но относительно изложенных требований -- всё в порядке, набор полон (почти, см. ниже).
Да, побочные эффекты не проверяются. Но вернемся к цели -- мы строим набор тестов, проверяющих вполне определенные требования. Если бы у меня была цель сделать тесты, проверяющие, что приложение не менят никакие записи в БД, я, во-первых, написал бы это в план. А во-вторых, я бы не стал решать эту задачу средствами тестирования, анализировать код более эффективно.
Ай-яй-яй, это невнимательность Всё написано. Цитирую SRS: "Новости на самом деле берутся из специальной ветки форума, и идентификатор новости — это идентификатор темы в форуме. Идентификатор — положительное целое число, если значение параметра не является положительным целым числом, скрипт выдает сообщение об ошибке."Кстати, в спецификации не сказано что число должно быть целым. И как обрабатывать ситуацию когда число дробное- тоже не указано...
Да, этот набор тестов не обнаружит такую ошибку. Поскольку построен на основе требований, в которых нет информации о "границах" размерностей. Каковы требования -- таковы и тесты. Если предположить, что такая информация известна, следовало бы опять же пополнить требования -- указать, что идентификатор не просто целое положительное число, но и более точно определить интервал, при этом конечно же модель изменилась бы и тесты соответственно тоже.Да, я имел в виду тестируемую систему, сорри. Пример - запросто Зачемм ходить далеко, пусть размерность целочисленной переменной которая хранит параметр будет меньше чем размерность соответствующего поля БД...Вы, вероятно, имели в виду "тестируемых систем", а не "тестовых систем". Можно попросить Вас привести пример такой системы (не подробно, эскизно), прежде, чем мы продолжим дискуссию?
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#13
Отправлено 15 июля 2005 - 10:34
Майк.
#14
Отправлено 15 июля 2005 - 10:39
Положительное целое число -- это не тип переменной, это абстрактное (логическое/математическое) свойство идентификатора.То, какой тип переменной используется внутри скипта это в чистом виде implementation details, и по этой причине никаким образом это не должно быть в спецификации.
И вообще, не мог я такое написать про реализацию, будучи в здравом уме, потому что PHP -- нетипизированный язык
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#15
Отправлено 15 июля 2005 - 10:40
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#16
Отправлено 15 июля 2005 - 11:12
Давайте приведу другой пример. Скажем, скрипт блокирует таблицу на чтение, но забывает её потом разблокировать(Зачем он это делает, другой вопрос, ну, скажем, программисту показалось, что это будет надёжнее). В результате, когда мы запустим скрипт второй раз подряд, он работать не будет. (Таблица будет разблокирована базой автоматически, скажем, через 30 секунд, поэтому далеко не факт, что тестировщик наткнется на эту проблему при выпонении Вашего набора тестов).
Майк.
#17
Отправлено 15 июля 2005 - 11:48
Да, когда я говорил о гарантиях, я сознательно слегка перегибал палку (чтобы подогреть страсти :)). Если функция умножения всегда работает правильно, за исключением одного случая 2*2=5, никакой метод тестирования не гарантирует успеха.
Тестирование базируется на гипотезе о равновероятности возникновения ошибок внутри интервалов, определенных требованиями. Эта гипотеза лежит в основе выбора тестовых данных -- почему выбираются данные на границе, вблизи границы, и какие-нибудь "типичные"? Потому что предполагается, что "типичные" данные все равноправны, либо ошибка проявляется на них всех, либо не проявляется, но тогда опять же на всех.
И любая система, нарушающая этот принцип "равновероятности" будет тем самым "контрпримером", который Вы хотите привести. Чтобы бороться с этим, нужно либо уточнять требования, внося в них все эти "особенности", либо смириться с тем, что тесты имею право пропускать такие ошибки.
В первом случае Вы пытались сказать, что не все положительные целые числа "равноправны", есть некое значение, такое что система ведет себя по разному, если параметр не превосходит или превосходит это значение.
Во втором случае Вы проделали тот же фокус со временем -- меньше 30 секунд между выполнением тестов или больше. Опять "неравноправие". Либо вносим в требования и учитываем явно, либо смиряемся.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#18
Отправлено 15 июля 2005 - 12:04
Майк.
#19
Отправлено 15 июля 2005 - 12:06
<li><a href="#2">Введение</a></li> <li><a href="#2"> Описание тестируемой системы, SRS</a></li>
#20
Отправлено 15 июля 2005 - 12:24
Конечно!!! Первое, что нужно делать -- это exploratory testing! Ковбойство, романтика, охота на жуков... А потом, когда "сливки" сняты, когда надо делать пакет регрессионного тестирования -- что делать тогда? Нужно садиться и кропотливо, расчетливо сочинять тесты. Тут уж понадобится всё -- и план, и систематичный подход, и метрики. Но вообще-то не надо тонуть в рутине -- я двумя руками за то, что надо время от времени вставть и ещё и ещё раз отправляться в кавалерийский рейд exploratory testing. Чтобы форму не терять, так сказать.Как мне представляется, работа тестера , кроме всего прочего, в том и состоит, чтобы искать такие "неявные" требования и учитывать их при составлении набора тестов (в особенности же, при "explaratory testing", который, как я убеждён, должен проводится вне зависимости от того, есть тест план, или его нету).
Ну уж нет! Провоцировал, и буду провоцироватьТолько вот той самой категоричности-бы чуть поменьше .
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных