Споры о тестировании программного обеспечения - 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 ]

если тестирование программного обеспечения собирает информацию о продукте или программе для заинтересованных сторон, из этого не следует, что существует выбор между реализацией тестирования или дизайном - т.е. это ошибочное предположение.[требуется разъяснение ]В идеале тестировщики программного обеспечения не должны ограничиваться только тестированием реализации программного обеспечения, но и тестированием дизайна программного обеспечения. При таком предположении роль и участие тестировщиков резко изменятся. В такой среде изменится и цикл тестирования. Чтобы протестировать дизайн программного обеспечения, тестировщики вместе с дизайнером и программистом будут проверять требования и спецификации проекта, что потенциально может помочь выявить ошибки на более раннем этапе разработки программного обеспечения.

Кто наблюдает за сторожами?

Один из принципов тестирования программного обеспечения резюмируется классическим латинским вопросом, заданным Ювеналом:Quis Custodiet Ipsos Custodes (Кто наблюдает за сторожами?), Или неофициально упоминается как "Heisenbug "концепция (распространенное заблуждение, которое сбивает с толку Гейзенберг с принцип неопределенности с эффект наблюдателя ). Идея состоит в том, что любая форма наблюдения - это также взаимодействие, что акт тестирования также может повлиять на то, что проверяется.

На практике инженер-тестировщик тестирует программное обеспечение (а иногда и оборудование или прошивка ) с другим программным обеспечением (а также оборудованием и прошивкой). Процесс может дать сбой, который не является результатом дефектов в целевом объекте, а скорее является результатом дефектов (или даже предполагаемых функций) инструмента тестирования.

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

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

Наконец, есть анализ исторической активности находок. Измеряя количество обнаруженных ошибок и сравнивая их с прогнозируемыми числами (на основе прошлого опыта с аналогичными проектами), можно сделать определенные предположения относительно эффективности тестирования. Хотя это и не является абсолютным показателем качества, но если проект наполовину завершен и дефектов не обнаружено, то могут потребоваться изменения в процедурах, используемых QA.

Рекомендации

  1. ^ context-driven-testing.com
  2. ^ Бах, Джеймс (8 июля 2005 г.). «Нет передовой практики». Получено 5 февраля 2018.
  3. ^ Колантонио, Джо (13 апреля 2017 г.). "Передовой опыт против передового опыта - работа с Рексом Блэком". Получено 5 февраля 2018.
  4. ^ Канер, Джем; Джек Фальк; Хунг Куок Нгуен (1993). Тестирование компьютерного программного обеспечения (Третье изд.). Джон Уайли и сыновья. ISBN  1-85032-908-7.
  5. ^ Примером может служить Марк Фьюстер, Дороти Грэм: Автоматизация тестирования программного обеспечения. Эддисон Уэсли, 1999, ISBN  0-201-33140-3