Споры о тестировании программного обеспечения - Software testing controversies
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Значительный разнообразие среди тестирование программного обеспечения писатели и консультанты о том, что составляет ответственное тестирование программного обеспечения. Выдающиеся члены Школы контекстно-ориентированного тестирования[1] Считайте, что большая часть написанного о тестировании программного обеспечения - это доктрина, мифология и фольклор. Некоторые утверждают, что это убеждение прямо противоречит стандартам, таким как IEEE 829 стандарт тестовой документации и такие организации, как Управление по контролю за продуктами и лекарствами кто их продвигает. Ответ Школы, основанной на контексте, заключается в том, что Уроки, полученные при тестировании программного обеспечения один урок поддерживает использование IEEE 829, а другой - против него; что не все тестирование программного обеспечения происходит в регулируемой среде и что методы, подходящие для таких сред, были бы чрезвычайно дорогими, ненужными и неподходящими для других контекстов; и что в любом случае FDA обычно продвигает принцип наименее обременительного подхода.
Некоторые из основных противоречий включают:
Лучшие практики
Многие члены Школы тестирования, основанной на контексте, считают, что передовых методов тестирования не существует, а скорее, что тестирование - это набор навыков, которые позволяют тестировщику выбирать или изобретать методы тестирования, подходящие для каждой уникальной ситуации. Джеймс Бах писал: «... нет практики лучше, чем все другие возможные практики, независимо от контекста».[2] Однако некоторые специалисты по тестированию не видят проблем с концепцией «лучших практик» и не считают, что этот термин подразумевает универсальное применение практики.[3]
Agile vs. традиционное
Примерно с 1990 года новый стиль описания тестирования начал ставить под сомнение то, что было раньше. Основополагающая работа в этом отношении широко считается Тестирование компьютерного программного обеспечения, к Джем Канер.[4] Вместо того, чтобы предполагать, что тестировщики имеют полный доступ к исходному коду и полным спецификациям, эти авторы, включая Канера и Джеймс Бах, утверждал, что тестировщики должны научиться работать в условиях неопределенности и постоянных изменений. Между тем, противоположная тенденция к «зрелости» процессов также получила распространение в виде Модель зрелости возможностей. Движение по гибкому тестированию (которое включает, помимо прочего, формы тестирования, практикуемые на гибкое развитие projects) пользуется популярностью в основном в коммерческих кругах, тогда как CMM была принята правительственными и военными поставщиками программного обеспечения.
Однако утверждение, что «модели зрелости», такие как CMM, набирают силу против или противодействуют Agile-тестированию, может быть неверным. Гибкое движение - это «способ работы», а CMM - это идея улучшения процесса.
Но необходимо учитывать другую точку зрения: операционную культуру организации. Хотя может быть правдой, что тестировщики должны уметь работать в мире неопределенности, верно также и то, что их гибкость должна иметь направление. Во многих случаях тест-культуры являются самостоятельными, и в результате могут быть получены бесплодные и непродуктивные результаты. Более того, предоставление положительных свидетельств дефектов может указывать либо на то, что вы обнаружили вершину гораздо более серьезной проблемы, либо на то, что вы исчерпали все возможности. Фреймворк - это тест тестирования. Он обеспечивает границу, которая может измерить (подтвердить) производительность нашей работы. Обе стороны имеют и будут продолжать спорить о достоинствах своей работы. Однако доказательством этого является каждая оценка качества доставки. Если вы слишком узко сфокусированы, систематические проверки не принесут пользы. С другой стороны, обнаружение множества ошибок не означает, что Agile-методы были движущей силой; Возможно, вы просто наткнулись на заведомо плохую работу.
Исследовательские против сценариев
Исследовательское тестирование означает одновременное создание и выполнение тестов с упором на обучение. Тестирование по сценариям означает, что обучение и разработка тестов происходят до выполнения теста, и довольно часто обучение приходится повторять во время выполнения теста. Исследовательское тестирование очень распространено, но в большинстве статей и тренингов о тестировании оно почти не упоминается и обычно неправильно понимается. Некоторые авторы считают это основной и необходимой практикой. Структурированное исследовательское тестирование - это компромисс, когда тестировщики знакомы с программным обеспечением. Составлен расплывчатый план тестирования, известный как устав тестирования, в котором описывается, какие функции необходимо протестировать, но не как, что позволяет отдельным тестировщикам выбирать метод и этапы тестирования.
Есть два основных недостатка, связанных с преимущественно исследовательским подходом к тестированию. Во-первых, нет возможности предотвратить дефекты, которые могут произойти, если предварительное планирование тестов служит формой структурированного статического тестирования, которое часто выявляет проблемы в системных требованиях и дизайне. Во-вторых, даже с использованием уставов тестирования сложно продемонстрировать покрытие тестами и добиться повторяемости тестов с использованием чисто исследовательского подхода к тестированию. По этой причине часто используется смешанный подход к тестированию по сценариям и исследовательскому тестированию, чтобы извлечь выгоду и при этом устранить недостатки каждого подхода.
Ручное или автоматическое
Некоторые писатели считают, что автоматизация тестирования настолько дорого по сравнению с его стоимостью, что его следует использовать экономно.[5] Другие, например сторонники гибкое развитие, рекомендую автоматизировать 100% всех тестов. Проблема с автоматизацией заключается в том, что для автоматизированного тестирования требуются автоматизированные тестовые оракулы (оракул - это механизм или принцип, по которому можно распознать проблему в программном обеспечении). Такие инструменты имеют ценность в программном обеспечении для нагрузочного тестирования (при одновременном входе в приложение с сотнями или тысячами экземпляров) или при проверке периодических ошибок в программном обеспечении. Успех автоматизированного тестирования программного обеспечения зависит от полного и всестороннего планирования тестирования. Стратегии разработки программного обеспечения, такие как разработка через тестирование полностью совместимы с идеей посвящения значительной части ресурсов тестирования организации автоматизированному тестированию. Многие крупные программные организации проводят автоматическое тестирование. Некоторые разработали собственные автоматизированные среды тестирования специально для внутренней разработки, а не для перепродажи.
Дизайн программного обеспечения против реализации программного обеспечения
[non sequitur ]
если тестирование программного обеспечения собирает информацию о продукте или программе для заинтересованных сторон, из этого не следует, что существует выбор между реализацией тестирования или дизайном - т.е. это ошибочное предположение.[требуется разъяснение ]В идеале тестировщики программного обеспечения не должны ограничиваться только тестированием реализации программного обеспечения, но и тестированием дизайна программного обеспечения. При таком предположении роль и участие тестировщиков резко изменятся. В такой среде изменится и цикл тестирования. Чтобы протестировать дизайн программного обеспечения, тестировщики вместе с дизайнером и программистом будут проверять требования и спецификации проекта, что потенциально может помочь выявить ошибки на более раннем этапе разработки программного обеспечения.
Кто наблюдает за сторожами?
Эта секция нужны дополнительные цитаты для проверка.Январь 2008 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Один из принципов тестирования программного обеспечения резюмируется классическим латинским вопросом, заданным Ювеналом:Quis Custodiet Ipsos Custodes (Кто наблюдает за сторожами?), Или неофициально упоминается как "Heisenbug "концепция (распространенное заблуждение, которое сбивает с толку Гейзенберг с принцип неопределенности с эффект наблюдателя ). Идея состоит в том, что любая форма наблюдения - это также взаимодействие, что акт тестирования также может повлиять на то, что проверяется.
На практике инженер-тестировщик тестирует программное обеспечение (а иногда и оборудование или прошивка ) с другим программным обеспечением (а также оборудованием и прошивкой). Процесс может дать сбой, который не является результатом дефектов в целевом объекте, а скорее является результатом дефектов (или даже предполагаемых функций) инструмента тестирования.
Разрабатываются метрики для измерения эффективности тестирования. Один из методов - анализировать покрытие кода (Это очень спорно) - где каждый может согласиться, что районы не охвачены вообще и попытаться улучшить покрытие в этих областях.
Ошибки также могут быть специально помещены в код, и количество ошибок, которые не были обнаружены, можно предсказать, основываясь на проценте обнаруженных намеренно размещенных ошибок. Проблема в том, что он предполагает, что преднамеренные ошибки являются ошибками того же типа, что и непреднамеренные.
Наконец, есть анализ исторической активности находок. Измеряя количество обнаруженных ошибок и сравнивая их с прогнозируемыми числами (на основе прошлого опыта с аналогичными проектами), можно сделать определенные предположения относительно эффективности тестирования. Хотя это и не является абсолютным показателем качества, но если проект наполовину завершен и дефектов не обнаружено, то могут потребоваться изменения в процедурах, используемых QA.
Рекомендации
- ^ context-driven-testing.com
- ^ Бах, Джеймс (8 июля 2005 г.). «Нет передовой практики». Получено 5 февраля 2018.
- ^ Колантонио, Джо (13 апреля 2017 г.). "Передовой опыт против передового опыта - работа с Рексом Блэком". Получено 5 февраля 2018.
- ^ Канер, Джем; Джек Фальк; Хунг Куок Нгуен (1993). Тестирование компьютерного программного обеспечения (Третье изд.). Джон Уайли и сыновья. ISBN 1-85032-908-7.
- ^ Примером может служить Марк Фьюстер, Дороти Грэм: Автоматизация тестирования программного обеспечения. Эддисон Уэсли, 1999, ISBN 0-201-33140-3