Как поблочное тестирование работает, когда программа не предоставляет себя функциональному стилю?

Если вам удобно использовать mysql, просто экспортируйте таблицу wp_user и импортируйте ее на другой сайт

8
задан Instance Hunter 4 March 2009 в 03:19
поделиться

10 ответов

На основе Вашего описания это места, я обратился бы к модульному тесту:

  • Делает работу проверки формы работы ввода данных пользователем правильно
  • Учитывая допустимый вход от формы внешняя программа, названная правильно
  • Канал во вводе данных пользователем к внешней программе и видит, получаете ли Вы правильный вывод

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

2
ответ дан 5 December 2019 в 22:20
поделиться

Я не эксперт по этому, но был смущен некоторое время по той же причине. Так или иначе приложения, которые я делаю просто, не соответствуют к примерам, данным для Поблочного тестирования (очень асинхронный и случайный в зависимости от взаимодействия активного пользователя), я недавно понял (и сообщите мне, неправ ли я), что не имеет смысла делать своего рода глобальный тест, а скорее несметное число маленьких тестов для каждого компонента. Самое легкое должно создать тест в то же время или даже прежде, чем создать фактические процедуры.

2
ответ дан 5 December 2019 в 22:20
поделиться

У Вас есть 3 000 строк кода в единственной процедуре/методе? Если так, затем, вероятно, необходимо осуществить рефакторинг код в меньшие, более понятные части для создания этого удобным в сопровождении. Когда Вы сделаете это, у Вас будут те части, что Вы можете и если модульный тест. В противном случае затем у Вас уже есть те части - отдельные процедуры/методы, которые называет Ваша основная программа.

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

1
ответ дан 5 December 2019 в 22:20
поделиться

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

Может случиться так, что меры, принятые Вашей системой, не заметны, пока что-то не поражает файловую систему. Вот несколько идей:

  • Настройте что-то как репозиторий мерзавца для начального состояния файловой системы, выполните форму и посмотрите на вывод различного мерзавца. Вероятно, что это собирается чувствовать больше как регрессионное тестирование, чем поблочное тестирование.

  • Создайте новый модуль, чей только цель состоит в том, чтобы сделать действия Вашей программы заметными. Это может быть столь же просто как запись соответствующего текста к файлу журнала или столь сложный, как Вам нравится. При необходимости можно использовать условную компиляцию или соединение, чтобы гарантировать, что этот модуль делает что-то только, когда система находится под тестом. Это ближе к традиционному поблочному тестированию, поскольку можно теперь записать тесты, которые говорят относительно получения формы A, система должна взять последовательность действий B. Очевидно, необходимо решить, какие действия, как должны наблюдать, формируют разумный тест.

Я подозреваю, что Вы мигрируете к чему-то, что больше походит на регрессионное тестирование, чем поблочное тестирование по сути. Это не обязательно плохо. Не пропускайте покрытие кода!

(Заключительный вводный комментарий: в плохие былые времена интерактивных консольных приложений Don Libes создал инструмент под названием, Ожидают, который был чрезвычайно полезен в разрешении Вам написать сценарий программы, которая взаимодействовала как пользователь. По-моему, нам отчаянно нужно что-то подобное для взаимодействия с веб-страницами. Я думаю, что отправлю вопрос об этом :-)

1
ответ дан 5 December 2019 в 22:20
поделиться

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

Кроме того, единица должна не обязательно быть отдельной функцией (хотя это часто имеет место). Единица является сегментом функциональности, которая может быть протестирована с помощью исходных данных и измерив выводы. Я видел это, чтобы использование JUnit протестировало API Java. Отдельные методы не могли бы обязательно обеспечить гранулярность, в которой я нуждаюсь для тестирования, хотя серия вызовов метода будет. Поэтому функциональность, которую я рассматриваю как "единицу", немного больше, чем отдельный метод.

0
ответ дан 5 December 2019 в 22:20
поделиться

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

Я предполагаю, что Вы вручную тестируете свое приложение в настоящее время, раз так затем думайте о том, как Вы могли автоматизировать это и работать оттуда. Со временем необходимо смочь повредить тесты в прогрессивно меньшие блоки, которые тестируют меньшие разделы кода. Любой вид автоматизированного тестирования обычно намного лучше чем ничего.

0
ответ дан 5 December 2019 в 22:20
поделиться

Необходимо, по крайней мере, осуществить рефакторинг материал, который похож на него, могла бы быть проблема и модульный тест это. Но как правило, функция не должна быть этим долго. Вы могли бы найти что-то, что является модульным тестом, достойным, после того как Вы начинаете осуществлять рефакторинг

Хорошая объектная статья наставника о TDD

0
ответ дан 5 December 2019 в 22:20
поделиться

Я думаю, что волна тестирования паранойи распространяется :) Его польза для исследования вещей видеть, имели ли тесты смысл, иногда ответ, будет нет.

Единственная вещь, которую я протестировал бы, удостоверяется, что поддельный вход формы обрабатывается правильно.. Я действительно не вижу, где еще автоматизированный тест помог бы. Я думаю, что Вы хотели бы, чтобы тест был не агрессивен (т.е. никакая запись на самом деле не сохраняется во время тестирования), так, чтобы мог бы исключить другие немного возможностей.

0
ответ дан 5 December 2019 в 22:20
поделиться

Как некоторые ответили прежде, существует несколько способов, которыми можно протестировать то, что Вы обрисовали в общих чертах. Сначала вход формы, может быть протестирован несколькими способами. Что происходит, если недопустимые данные введены, допустимые данные, и т.д. Затем каждая функция может быть протестирована, чтобы видеть, реагируют ли функции при предоставлении различными формами корректных и неправильных данных надлежащим способом. Затем можно дразнить приложение, которые называют так, чтобы можно было удостовериться, что приложение отправляет и обрабатывает данные к внешним программам правильно. Не делайте для, добираются для проверки соглашений о программе с неожиданными данными из внешней программы также.

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

0
ответ дан 5 December 2019 в 22:20
поделиться

Если Вы не можете протестировать что-то, как Вы знаете, что это работает? Ключ к разработке программного обеспечения - то, что код должен быть тестируемым. Это может сделать фактическую запись программного обеспечения более трудной, но это окупается в более легком обслуживании позже.

0
ответ дан 5 December 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: