Каковы различные методы обнаружения тестовых случаев
Все,
Я разработчик, но хотел бы узнать больше о процессе и методах тестирования. Я считаю, что это помогает мне писать более надежный код, поскольку это улучшает случаи, которые я могу протестировать с помощью своих модульных тестов, прежде чем доставлять продукт группе тестирования. Недавно я начал изучать тестовую разработку и исследовательский подход к программным проектам.
Теперь мне проще найти контрольные примеры для кода, который я написал. Но мне интересно знать, как выявлять тестовые случаи, когда я не являюсь разработчиком тестируемой функциональности. Скажем, например, давайте иметь базовую форму регистрации пользователей, которую мы видим на различных сайтах. Если предположить, что человек, который тестирует его, не является разработчиком формы, как следует проверять поля ввода в форме, какова будет ваша стратегия? Как бы вы обнаружили тестовые случаи? Я полагаю, что этот вид тестирования выигрывает от исследовательского подхода, хотя я могу ошибаться здесь.
Буду признателен за ваши взгляды на это.
Спасибо байт
10 ответов
Ошибок! Одно из моих любимых начальных мест в проекте для добавления новых тестовых случаев - взглянуть на систему отслеживания ошибок. Существующие ошибки сами по себе являются тестовыми примерами, но они также могут направить вас к новым тестовым случаям. Если конкретный модуль содержит ошибки, это может привести к разработке дополнительных тестовых случаев в этой области. Если конкретный разработчик вносит определенный класс ошибок, он может направлять тестирование будущих проектов этим разработчиком.
Еще одно полезное соображение - больше смотреть на методы тестирования, чем на тестовые случаи. В вашем примере формы регистрации, как бы вы атаковали ее с точки зрения требований бизнеса? Безопасность? Параллелизм? Допустимый / неверный ввод?
Тестирование компьютерного программного обеспечения - хорошая книга о том, как проводить всевозможные виды тестирования; черный ящик, белый ящик, дизайн тестового набора, планирование, управление проектом тестирования и, вероятно, многое другое, что я пропустил.
Для приведенного вами примера я бы сделал что-то вроде этого:
- Для каждого поля я бы подумал о возможных значениях, которые вы можете ввести, как допустимых, так и недействительных. Я бы искал граничные случаи; если поле числовое, что произойдет, если я введу значение на единицу меньше нижней границы? Что произойдет, если я введу нижнюю границу в качестве значения? И т.п.
- Затем я бы использовал такой инструмент, как инструмент парного независимого комбинаторного тестирования (PICT) от Microsoft, чтобы сгенерировать как можно меньше тестовых сценариев для всех полей ввода.
- Я также написал бы автоматический тест, чтобы вычислить форму, используя произвольный ввод, захватить результаты и посмотреть, имеют ли ответы смысл (виртуальные обезьяны на клавиатуре).
В случае формы я посмотрю, что я могу в нее ввести, и протестирую там различные граничные условия, например, что произойдет, если имя пользователя не указано? Мне напомнили о нескольких различных формах тестирования:
Тестирование черного ящика - здесь вы тестируете, не заглядывая в то, что тестируется. Проблема в том, что неспособность увидеть изнутри может вызвать проблемы с ограничением полезных тестов и количества полезных тестов. Это, конечно, то, на что может быть похоже некоторое тестирование по умолчанию.
Тестирование белого ящика. Здесь вы можете посмотреть на код и получить метрики, такие как охват кода, чтобы убедиться, что вы покрываете процент от базы кода. Как правило, это лучше, так как в этом случае вы знаете больше о том, что делается.
Есть также тесты производительности по сравнению с логическими тестами, которые также стоит где-то отметить, например, как быстро форма проверяет меня, а не просто делает ли форма это.
Задавать вопросы. Держите список слов с вопросами и заставляйте себя задавать вопросы о продукте или функции. Подобные списки могут помочь вам выбраться из пресловутой рамки или колеи. Не тратьте слишком много времени на вопросительные слова, если к вам ничего не приходит.
- Кто
- Чья
- Какие
- куда
- когда
- Зачем
- Как
- Сколько
Затем, когда вы отвечаете на них, задайте "другие" вопросы. Это заставляет вас не доверять, хотя бы на мгновение, вашим первоначальным выводам.
- Кто еще
- Чей еще
- так далее..
Затем задайте "не" вопросы - опровергните или опровергните свои предположения и оспаривайте их.
- Кто нет (например, кому может не понадобиться доступ к этой безопасной функции и почему?)
- Что нет (какие данные не будут заботить пользователя? Что пользователь не поместит в это текстовое поле? Вы уверены?)
- так далее...
Другие модификаторы к предложениям могут быть:
- W еще
- Не
- W риски
- W разные
- Объедините два вопросительных слова, например, кто и когда.
Определите ваши предположения с разных точек зрения:
- Как пользователи могут неправильно понять это?
- Почему я думаю, что это действует или должно действовать именно так?
- Какие у меня могут быть предубеждения относительно того, как это программное обеспечение должно работать?
- Как я узнаю, что требования / дизайн / реализация - это то, что нужно?
- Какие другие перспективы (пользователи, администраторы, менеджеры, разработчики, юристы) могут существовать в отношении приоритета, важности, целей и т. Д. Этого программного обеспечения?
- Правильное программное обеспечение строится?
- Я действительно знаю, как выглядит действительное имя / номер телефона / идентификационный номер / адрес / и т. Д.?
- Что мне не хватает?
- Как я могу ошибаться (вставьте существительное здесь)?
Кроме того, используйте любой из мнемоник и списков тестирования, отмеченных здесь:
Храните тестовые каталоги с общими вопросами и типами задач для различных видов задач, таких как целочисленная проверка, шаги рабочего процесса и т. Д.
Групповые мозговые штурмы. (или неофициально в парах, когда это необходимо)
- увидеть эти методы мозгового штурма
Составьте таблицы данных с основными характеристиками, перечисленными сверху и сбоку, и рассмотрите возможные взаимодействия между каждой парой. Делать это в трех измерениях может быть громоздким.
Воспользуйтесь Исследовательской динамикой тестирования и моделью стратегии удовлетворительного эвристического тестирования Джеймса Баха. Оба предлагают общие способы начать думать более широко или по-разному о продукте, что может помочь вам переключаться между блоками и эвристикой в тестировании.
Обсуждение идей теста с другими. Когда вы объясняете свои идеи кому-то еще, вы склонны искать способы усовершенствовать или расширить их.