2009-12-18 11 views
4

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

(код действительно унаследованный код, он находился в разработке около 10 лет, и я только работаю здесь около года.)

Это не приводит к ошибке, или причине программа для сбоя, но если пользователь использовал программу и дублировал поведение, я уверен, что они будут поддерживать их «WTF»? флаг.

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

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

Теперь мое мышление в том, что простой шаблон наблюдателя мог решить эту проблему в первую очередь, но тогда я не написал код.

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

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

+0

Передайте его пользователю. Эти ублюдки найдут каждую мелочь, которая пойдет не так и о чем угодно, как о бизнесе. –

ответ

0

Assert() Также модульное тестирование с анализом покрытия.

1

Тест, тест, тест.

Неудивительные вещи. Начните делать одну задачу и переключите другую, чтобы увидеть, не идет ли что-нибудь. Используйте кнопку «Назад», когда вы не должны. Откройте его в двух окнах. Пусть это тайм-аут.

Тест во всех браузерах, особенно IE.

7

Для приложения для удобства использования он должен иметь определенный набор ожидаемых действий.

«Является ли это текстовое поле БЕСПЛАТНО ничего не делать при нажатии клавиши ввода?» Возможно, это возможно, возможно, это не так. Я видел приложения, в которых тестер/рецензент сообщает что-то, что они ДОЛЖНЫ работать другим способом, когда на самом деле клиент специально спросил, что они НЕ хотят, чтобы форма, представленная на клавишу возврата, нажала, но нажала только кнопка отправки.

Итак, вы должны определить правильное поведение, прежде чем сможете определить неправильное поведение.

+1

Абсолютно правильно, вы не можете протестировать без спецификаций. +1 – whiskeysierra

2

Если у него есть интерфейс, тогда один из моих любимых нетрадиционных тестов ставит перед собой 5-10-летних детей. Вы будете удивлены, что они могут придумать (особенно младшие). Хотя это может звучать как шутка, это не так - это действительно работает, потому что у детей нет мышления, проходящего только через пути «мышления».

И да, дети - эксперты в «нарушениях вещей» xP.

2

Проверка кода, то есть чтение исходного кода: если вы потратили время на чтение/проверку исходного кода, поиск «запахов» или даже поиск кода, поведение которого вы не сразу понимаете и соглашаетесь с ним, вы возможно, поднял ваш «WTF»? флаг тоже.

1

Вы можете найти соединение с базой данных/сессией, не освобождаются от:

  • разработки минимального количества соединений, что вам нужно сделать что-то
  • пределов настройки ресурсов для этого минимального количества
  • обеспечивая один «запустить» сценарий, который должен использовать именно это число (и отпустить его потом)
  • затем запустить его несколько раз ... у вас закончились соединения?

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

0

Это особенно в среде Visual Studio, хотя это, вероятно, относится и к другим:

Во время тестирования, всегда в какой-то момент запуска отладчика с «Break, когда исключение» включен.

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

0

В обзорах кодов всегда должны быть также рассмотрены единичный тестовый код.

Проблема заключается в том, что при специальном тестировании невозможно знать, насколько или насколько хорошо разработчик протестировал свой код. Итак, вы во власти разных разработчиков определения слова «сделано».

Если вы включаете обзоры единичного тестового кода одновременно с просмотром производственного кода, у вас должно быть хорошее представление о том, действительно ли код завершен; в том, что «полный» включает «проверенный». Не только «Эй, я брошу это через стену тестерам!».

1

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

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

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

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