Перейти к содержимому

Фотография

Тестирование проекта "Новости" (Case study)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 49

#1 Case

Case

    Основатель

  • Members
  • PipPipPipPipPipPip
  • 7 071 сообщений
  • ФИО:Панкратов Вячеслав
  • Город:Украина, Киев.

Отправлено 10 июля 2005 - 15:32

Case study: тестирование проекта "Новости" на сервере Software-Testing.Ru
Автор: Баранцев Алексей, 09/07/2005

Abstract

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

Содержание:

Введение
Описание тестируемой системы, SRS
План тестирования, TP
Модель тестирования, TDS
Комплект тестов, TCS
Заключение

Читать полностью: http://software-test...esting_news.htm
  • 0
Слава Панкратов
Редактор портала www.it4business.ru

#2 Spy

Spy

    Опытный участник

  • Members
  • PipPipPipPip
  • 378 сообщений
  • ФИО:Полаженко Сергей Владимирович
  • Город:Minsk, Belarus

Отправлено 11 июля 2005 - 12:09

1.

Если параметр не указан или имеет пустое значение, скрипт выдает список последних десяти новостей.


Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?
Я бы не сказал, что небольшая и более того, очень типичная (параметр пуст). Не вижу смысла её игнорировать, даже в рамках учебного примера. :dirol:

2. По поводу понятия "блок-схема". Я понимаю, что это схема на базе блоков - очень универскальное, так сказать, средство. Однако в нашем случае, когда на схеме изображается алгоритм программы, более привычным выглядит использование общеприятого термина "схема алгоритма (программы)", как это рекоммендует ГОСТ. :good:

ГОСУДАРСТВЕННЫЙ  СТАНДАРТ  СОЮЗА  ССР
Единая система программной документации
СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И СИСТЕМ
Обозначения условные и правила выполнения
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
Настоящий стандарт распространяется на условные обозначения (символы) в схемах алгоритмов, программ, данных и систем и устанавливает правила выполнения схем, используемых для отображения различных видов задач обработки данных и средств их решения.
Стандарт не распространяется на форму записей и обозначений, помещаемых внутри символов или рядом с ними и служащих для уточнения выполняемых ими функций.
Требования стандарта являются обязательными.


А в целом - статья нужная и очень доходчивая. Я понял :ok:
  • 0
Полаженко Сергей, проект "Тестирование безопасности"
IT-конференции: www.it-conf.ru
IT-тренинги в Беларуси: www.it-study.by

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 11 июля 2005 - 12:22

Если параметр не указан или имеет пустое значение, скрипт выдает список последних десяти новостей.

Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?
Я бы не сказал, что небольшая и более того, очень типичная (параметр пуст). Не вижу смысла её игнорировать, даже в рамках учебного примера. :dirol:

Просмотр сообщения

Хе-хе :good:
...И кто-нибудь обязательно спросит: почему не протестирован вот этот аспект? почему я считаю, что мой набор тестов полон? почему... И вот тут я с довольным видом скажу — смотрите в план!

Пункт 5 плана четко указывает на то, что от тестирования в режиме (R2) я сознательно отказался. Это не ошибка, это моё решение, документально зафиксированное. Почему я его принял -- это отдельный разговор. Может быть, на аутсорсинг отдам, а может ещё почему.

Вот видите, дошло таки дело до отмазок. :ok: А ошибка в другом месте.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#4 Case

Case

    Основатель

  • Members
  • PipPipPipPipPipPip
  • 7 071 сообщений
  • ФИО:Панкратов Вячеслав
  • Город:Украина, Киев.

Отправлено 11 июля 2005 - 12:53

Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?

Почему проигнорированы?
http://software-test...ru/news/?topic= равно как и
http://software-testing.ru/news/ выдаёт последние 10 новостей.
  • 0
Слава Панкратов
Редактор портала www.it4business.ru

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 11 июля 2005 - 13:04

Данные требования (последних, десять, новостей) проигнорированны. Это и есть загадочная "намеренная, небольшая ошибка"?

Почему проигнорированы?
http://software-test...ru/news/?topic= равно как и
http://software-testing.ru/news/ выдаёт последние 10 новостей.

Просмотр сообщения

Сергей имел в виду, что тестов для этой функциональности нет. Таки да, нет тестов. Нарочно не сделал. Сначала в план написал, что не буду делать. И не сделал в полном соответствии с планом.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#6 Spy

Spy

    Опытный участник

  • Members
  • PipPipPipPip
  • 378 сообщений
  • ФИО:Полаженко Сергей Владимирович
  • Город:Minsk, Belarus

Отправлено 11 июля 2005 - 13:21

Пункт 5 плана четко указывает на то, что от тестирования в режиме (R2) я сознательно отказался. Это не ошибка, это моё решение, документально зафиксированное. Почему я его принял -- это отдельный разговор. Может быть, на аутсорсинг отдам, а может ещё почему.


О, круто, у нас ещё будет статья про аутсорсинг!
Искусство быть скушным - это рассказывать сразу всё до конца?! :dirol:
  • 0
Полаженко Сергей, проект "Тестирование безопасности"
IT-конференции: www.it-conf.ru
IT-тренинги в Беларуси: www.it-study.by

#7 Nadezhda

Nadezhda

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • Город:Харьков

Отправлено 11 июля 2005 - 15:15

1. Ссылки
[SRS] Software Requirement Specefication вместо Specification

Не думаю, что это преднамеренная ошибка ;)
  • 0

#8 Case

Case

    Основатель

  • Members
  • PipPipPipPipPipPip
  • 7 071 сообщений
  • ФИО:Панкратов Вячеслав
  • Город:Украина, Киев.

Отправлено 12 июля 2005 - 08:26

Исправили, кстати :)
  • 0
Слава Панкратов
Редактор портала www.it4business.ru

#9 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 15 июля 2005 - 09:14

Я бы не сказал, что в данном примере обеспечено полное покрытие системы (даже согласно п.5-8 тестплана).

1. Система работает с СУБД. Где обработка исключительных ситуаций при работе с базой? Я уж не говорю об обработке исключений типа отсутствия коннекта к базе или ошибки конкуррентного доступа, но хотя-бы, что будет если в качества параметра укажем число, не влезающее в размерность поля БД?
2. Что такое чило? 10E5 - число? А 12.000? Если да, то это 12 тысяч или просто 12 ?(может точка это разделитель тысяч? А что, в нектотрых локалях, вроде русской это вполне возможно)
3. И наконец, почему этот набор тестов является исчерпывающим? Можно придумать сколько угодно скриптов (в смысле, тестовых систем), которые будут проходить данные тесты но при этом не удовлетворять требованиям.
  • 0
Best regards,
Майк.

#10 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 июля 2005 - 09:22

1. Система работает с СУБД. Где обработка исключительных ситуаций при работе с базой? Я уж не говорю об обработке исключений типа отсутствия коннекта к базе или ошибки конкуррентного доступа, но хотя-бы, что будет если в качества параметра укажем число, не влезающее в размерность поля БД?

Просмотр сообщения

Да, на это мне уже указали, я признал, что не слишком хорошо восстановил требования к приложению. Нужно пополнять SRS. Но относительно изложенных требований -- всё в порядке, набор полон (почти, см. ниже).

2. Что такое чило? 10E5 - число? А 12.000? Если да, то это 12 тысяч или просто 12 ?(может точка это разделитель тысяч? А что, в нектотрых локалях, вроде русской это вполне возможно)

Просмотр сообщения

Да, это как раз та ошибка, которую я сознательно оставил в статье, чтобы читатели не расслаблялись, а думали над тем, что читают :friends:

3. И наконец, почему этот набор тестов является исчерпывающим? Можно придумать сколько угодно скриптов (в смысле, тестовых систем), которые будут проходить данные тесты но при этом не удовлетворять требованиям.

Просмотр сообщения

Вы, вероятно, имели в виду "тестируемых систем", а не "тестовых систем". Можно попросить Вас привести пример такой системы (не подробно, эскизно), прежде, чем мы продолжим дискуссию?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#11 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 15 июля 2005 - 10:01

Да, на это мне уже указали, я признал, что не слишком хорошо восстановил требования к приложению. Нужно пополнять SRS. Но относительно изложенных требований -- всё в порядке, набор полон (почти, см. ниже).


Cогласен, что это дырка в спецификации, а не в наборе тестов. НО: есть требования, которые не указываются в спецификации прямо, но подразумеваются. Например, что будет если в качестве параметра указать такую длинную строку, которая вызовет переполнение буффера? Или число, больше размерности переменной, которая его хранит? Кроме того, вряд-ли вы укажете в спецификации, что система не должна делать никаких посторонних действий (например, изменять записи), но Вам вряд-ли понравится если система будет это делать. А что, если систему отдали на аутсорсинг?

2. Что такое чило? 10E5 - число? А 12.000? Если да, то это 12 тысяч или просто 12 ?(может точка это разделитель тысяч? А что, в нектотрых локалях, вроде русской это вполне возможно)

Просмотр сообщения

Да, это как раз та ошибка, которую я сознательно оставил в статье, чтобы читатели не расслаблялись, а думали над тем, что читают :blush:

3. И наконец, почему этот набор тестов является исчерпывающим? Можно придумать сколько угодно скриптов (в смысле, тестовых систем), которые будут проходить данные тесты но при этом не удовлетворять требованиям.

Просмотр сообщения


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

Вы, вероятно, имели в виду "тестируемых систем", а не "тестовых систем". Можно попросить Вас привести пример такой системы (не подробно, эскизно), прежде, чем мы продолжим дискуссию?

Просмотр сообщения


Да, я имел в виду тестируемую систему, сорри. Пример - запросто :friends: Зачемм ходить далеко, пусть размерность целочисленной переменной которая хранит параметр будет меньше чем размерность соответствующего поля БД...
  • 0
Best regards,
Майк.

#12 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 июля 2005 - 10:29

Да, на это мне уже указали, я признал, что не слишком хорошо восстановил требования к приложению. Нужно пополнять SRS. Но относительно изложенных требований -- всё в порядке, набор полон (почти, см. ниже).

Cогласен, что это дырка в спецификации, а не в наборе тестов. НО: есть требования, которые не указываются в спецификации прямо, но подразумеваются. Например, что будет если в качестве параметра указать такую длинную строку, которая вызовет переполнение буффера? Или число, больше размерности переменной, которая его хранит? Кроме того, вряд-ли вы укажете в спецификации, что система не должна делать никаких посторонних действий (например, изменять записи), но Вам вряд-ли понравится если система будет это делать. А что, если систему отдали на аутсорсинг?

Просмотр сообщения

Да, есть такие ограничения, которые не описаны явно, но подразумеваются. Например, ограничения HTTP-протокола или конкретного HTTP-сервера. Однако, попробуйте указать очень большое число (скажем, состоящее из сотни девяток) -- получите сообщение о том, что нет новости с таким идентификатором. Всё честно, никакого подвоха.

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

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

Просмотр сообщения

Ай-яй-яй, это невнимательность :blush: Всё написано. Цитирую SRS: "Новости на самом деле берутся из специальной ветки форума, и идентификатор новости — это идентификатор темы в форуме. Идентификатор — положительное целое число, если значение параметра не является положительным целым числом, скрипт выдает сообщение об ошибке."

Вы, вероятно, имели в виду "тестируемых систем", а не "тестовых систем". Можно попросить Вас привести пример такой системы (не подробно, эскизно), прежде, чем мы продолжим дискуссию?

Просмотр сообщения

Да, я имел в виду тестируемую систему, сорри. Пример - запросто :friends: Зачемм ходить далеко, пусть размерность целочисленной переменной которая хранит параметр будет меньше чем размерность соответствующего поля БД...

Просмотр сообщения

Да, этот набор тестов не обнаружит такую ошибку. Поскольку построен на основе требований, в которых нет информации о "границах" размерностей. Каковы требования -- таковы и тесты. Если предположить, что такая информация известна, следовало бы опять же пополнить требования -- указать, что идентификатор не просто целое положительное число, но и более точно определить интервал, при этом конечно же модель изменилась бы и тесты соответственно тоже.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#13 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 15 июля 2005 - 10:34

То, какой тип переменной используется внутри скипта это в чистом виде implementation details, и по этой причине никаким образом это не должно быть в спецификации.
  • 0
Best regards,
Майк.

#14 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 июля 2005 - 10:39

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

Просмотр сообщения

Положительное целое число -- это не тип переменной, это абстрактное (логическое/математическое) свойство идентификатора.
И вообще, не мог я такое написать про реализацию, будучи в здравом уме, потому что PHP -- нетипизированный язык :friends:
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#15 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 июля 2005 - 10:40

Пардон, дубликат.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#16 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 15 июля 2005 - 11:12

Алексей, я не то имел в виду... Я привёл тип ошибки, который Вашим набором тестов не ловится. Вы говорите, что в спецификации не написано, какой должен быть тип переменной. Я говорю, что это и не должно быть написано в спеке, так как это - детали реализации. Ну а то, что такой тип ошибки на PHP не возможен... Ну сорри, можно другой какой-нибудь пример привести. Но вообще говоря, тестер (так же как и аналитик, который пишет спецификацию) в принципе не должен делать никаких предположений исходя из среды, на которой написпано приложение. Так как это, опять-таки, implementation details.

Давайте приведу другой пример. Скажем, скрипт блокирует таблицу на чтение, но забывает её потом разблокировать(Зачем он это делает, другой вопрос, ну, скажем, программисту показалось, что это будет надёжнее). В результате, когда мы запустим скрипт второй раз подряд, он работать не будет. (Таблица будет разблокирована базой автоматически, скажем, через 30 секунд, поэтому далеко не факт, что тестировщик наткнется на эту проблему при выпонении Вашего набора тестов).
  • 0
Best regards,
Майк.

#17 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 июля 2005 - 11:48

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

Да, когда я говорил о гарантиях, я сознательно слегка перегибал палку (чтобы подогреть страсти :)). Если функция умножения всегда работает правильно, за исключением одного случая 2*2=5, никакой метод тестирования не гарантирует успеха.

Тестирование базируется на гипотезе о равновероятности возникновения ошибок внутри интервалов, определенных требованиями. Эта гипотеза лежит в основе выбора тестовых данных -- почему выбираются данные на границе, вблизи границы, и какие-нибудь "типичные"? Потому что предполагается, что "типичные" данные все равноправны, либо ошибка проявляется на них всех, либо не проявляется, но тогда опять же на всех.

И любая система, нарушающая этот принцип "равновероятности" будет тем самым "контрпримером", который Вы хотите привести. Чтобы бороться с этим, нужно либо уточнять требования, внося в них все эти "особенности", либо смириться с тем, что тесты имею право пропускать такие ошибки.

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

Во втором случае Вы проделали тот же фокус со временем -- меньше 30 секунд между выполнением тестов или больше. Опять "неравноправие". Либо вносим в требования и учитываем явно, либо смиряемся.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#18 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 15 июля 2005 - 12:04

Как мне представляется, работа тестера , кроме всего прочего, в том и состоит, чтобы искать такие "неявные" требования и учитывать их при составлении набора тестов (в особенности же, при "explaratory testing", который, как я убеждён, должен проводится вне зависимости от того, есть тест план, или его нету). Аналитик просто не в состоянии, да и не обязан учесть все такие требования в спецификации. Метод тестирования по модели, который Вы описываете, безусловно, хорош, и является необходимым, НО не достаточным для обеспечения качества системы. Вот и всё, собственно, что я имел сказать :). За статью респект в любом случае - отлично написано :blush: . Только вот той самой категоричности-бы чуть поменьше :friends: .
  • 0
Best regards,
Майк.

#19 AIN

AIN

    Новый участник

  • Members
  • Pip
  • 18 сообщений

Отправлено 15 июля 2005 - 12:06

Если нажать на ссылку "Введение", то осуществляется переход к пункту "Описание тестируемой системы". :friends:

<li><a href="#2">Введение</a></li>
<li><a href="#2"> Описание тестируемой системы, SRS</a></li>

  • 0

#20 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 июля 2005 - 12:24

Как мне представляется, работа тестера , кроме всего прочего, в том и состоит, чтобы искать такие "неявные" требования и учитывать их при составлении набора тестов (в особенности же, при "explaratory testing", который, как я убеждён, должен проводится вне зависимости от того, есть тест план, или его нету).

Просмотр сообщения

Конечно!!! Первое, что нужно делать -- это exploratory testing! Ковбойство, романтика, охота на жуков... А потом, когда "сливки" сняты, когда надо делать пакет регрессионного тестирования -- что делать тогда? Нужно садиться и кропотливо, расчетливо сочинять тесты. Тут уж понадобится всё -- и план, и систематичный подход, и метрики. Но вообще-то не надо тонуть в рутине -- я двумя руками за то, что надо время от времени вставть и ещё и ещё раз отправляться в кавалерийский рейд exploratory testing. Чтобы форму не терять, так сказать.

Только вот той самой категоричности-бы чуть поменьше  :blush: .

Просмотр сообщения

Ну уж нет! :rtfm: Провоцировал, и буду провоцировать :friends:
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных