пятница, 9 ноября 2012 г.

Почему 100%-е прохождение тестов - это плохо.[перевод]


Why 100% Test Pass Rates Are Bad by Andrew Schiano

Когда тест показывает оценку 100%, как правило есть причина для ликования. Это означает, что у вашего продукта высокое качество. Тесты, которые так тщательно разработаны, проходят, доказывая, что продукт работает так, как ожидалось. Также показывает, что ваши тестовые случаи высокого качества; результаты воспроизводимы, и они успешно проверяют функциональность продукта. Эта та цель, к которой ты стремился с начала тестирования, правильно? Если это так, то вы выбрали неверную цель.
100%-е прохождение подразумевает, что ваш продукт работает точно, как ожидалось. Задача тестирования, однако, не доказывать, что приложение работает, как ожидалось. В сущности, эта цель может даже не достижима, потому что все сложные приложения имеют дефекты. Какой смысл всё это делать, имея цель, которая не может быть достигнута? Ваша цель должна быть в написании тестов, которые обнажают эти дефекты так, чтобы можно было сделать обоснованное решение об их исправлении.
Другая причина неверной цели 100%-го прохождения в заключается том что, когда все ваши тесты последовательно проходят, они прекращают обеспечивать вас новой информацией. Вы можете наблюдать прекрасный проход тестов каждое утро, и в дальнейшем не обращать внимание на них. Другими словами, как только вы достигнете своей "цели", ваши тесты перестанут помогать вам улучшить ваш продукт.
Чтобы быть справедливым, с точки зрения управления 100%-й проход тестов это верная цель. Так как это убеждает менеджера в качестве продукта. Но если менеджер и тестировщик оба стремятся к совершенному проходу тестов, это не вызывает доверия. В этом случае, никто не ищет баги и 100% проход тестов мало чего значит.
Теперь предположим у вас прекрасный проход тестов, но тестировщики должны стремится доказать, что приложение не работает как ожидалось. Прекрасный проход тестов показывает руководству, что несмотря на факт о том, что вы ищете баги, вы всё ещё не можете найти их. Это дает уверенность руководству в области качества программного обеспечения.
Если у вас 100%-й проход тестов, и есть ещё время до Завершения Всего Тестирования, не думайте что это конец игры. В продукте есть ошибки, и ваши тесты не могут найти их. Измените тесты. Напишите новые. Но продумайте каждый тестовый случай с целью доказать, что программное обеспечение не работает как ожидалось.  Рекомендации могут показаться очевидными, а некоторые тестировщики не подумают в таком плане; они очень сильно заинтересованны иметь гладкий тест и по плану.
Edsger Dijkstra писал, "Тестирование может показать присутствие ошибок, но не их отсутствие." Как только вы измените ваш тип мышления и напишите тесты доказывающие, что продукт не работает, вместо того, чтобы доказывать, что он работает, вы будете удивлены, как насколько больше ошибок вы обнаружите. Это простое изменение сделает из вас лучшего тестировщика, и вашим продуктам будет лучше от этого.

вторник, 6 ноября 2012 г.

Page Object Pattern быстрая визуализация

Сценарий нашего будущего приложения будет вот такой, заметьте я ещё не написал ни строчки кода [Есть такая умная мысль: "A carelessly planned project takes three times longer to complete thanexpecteda carefully planned project takes only twice as long."], Итак приступим:
1. заходим на страницу google.ru;
2. набираем в поиске Selenium;
3. дёргаем список все найденные ответы, возможно бегаем ещё на пять страниц в глубину(организуем постраничный переход), при нахождении Хабрахабра  переходим по его ссылке;
4. проверяем действительно ли мы туда попали, куда хотели, проверяем жёстко с вылетом теста если будет коллизия;
5. на странице habrahabra выбираем статью с названием "Что такое Selenium?";
6. собираем все комментарии к этой статье и сохраняем в файл.

Вот такую схему я быстро накидал в paint, сам я делаю это обычно на бумажке карандашиком, быстренько и без затей. Читается она очень просто, прямоугольники - это страницы сайта, а овалы - это методы которые либо ведут к другой странице[как например:Set Search Request, Gone Link Text], либо остаются на той же странице[как например: Gone On Number Page, Comments Save File]. В схему я намеренно не включаю проверки, они просто захламляют, да и надобавлять их уже после написания "кода" не проблема.