Тестирование-книга. Ю. Н. Артеменко Научный редактор
Скачать 6.27 Mb.
|
Контроль версий и идентификаторов Если предполагается, что ваша версия программы имеет номер 2.43, и при этом одни ее составляющие относятся к версии 2.42, а другие — к версии 2.44, то у вас, скорее всего, проблемы. Тестировщик должен знать, что у него за версия, и это должно быть возможно определить на основа нии программного кода. Если это не так, документируйте ошибку. Некоторые люди называют подобные ошибки бюрократическими. Ведь только бюрократы станут беспокоиться о таких вещах, как версии файлов. Однако беспокоиться об этом надо, иначе пользователи могут получить не то, что ожидали. Таинственным образом появляются старые ошибки Старые проблемы могут появиться по той простой причине, что про- граммист скомпоновал старую версию одной подпрограммы с новыми вер сиями остальных. Многие программы состоят из десятков и сотен файлов — не мудрено запутаться в их версиях. Программисты, которые сохраня ют старые версии файлов, часто компонуют их с новыми. Обновление не всех копий данных или программных файлов Некоторые программисты включают один и тот же код во множество программных модулей. Изменив этот код, они должны обновить несколь ко десятков его копий. Не удивительно, если в некоторые из них они за будут внести изменения. В результате ошибка может быть исправлена в двадцати местах и остаться еще в пяти. Отсутствие заголовка Запустив программу, пользователь должен видеть, с чем он работает. В ее верхней строке должно быть написано, что на экране электронная таб лица Сергея Петрова, а не база данных Василия Иванова. Приложение: Распространенные программные ... 5 3 7 Отсутствие номера версии Программа должна предоставить пользователю возможность узнать номер ее версии. Обычно номер версии отображается в заставке в процессе запуска программы, а также по специальной команде пользователя. Необ ходимо, чтобы эту команду можно было легко найти, тогда пользователь или тестировщик сможет сообщить программисту об обнаруженной ошиб ке. Если программный продукт состоит из нескольких достаточно незави симых компонентов, желательно, чтобы у каждого из них был свой номер версии, который также легко было бы определить. Однако если у вас нет твердой поддержки руководства, не настаивайте, чтобы программисты на значали компонентам продукта отдельные номера версий. Неверный номер версии в заголовке экрана Обычно номер версии программы отображается в ее заголовке или в диалоговом окне "О программе". Меняя код, программист иногда забывает менять отображаемые номера версий. Отсутствующая или неверная информация об авторских правах Информация об авторских правах на программу обычно отображается при ее первом запуске, а также в диалоговом окне "О программе". Она должна быть достоверной. Программа, скомпилированная из архивной копии, не соответствует проданному варианту Перед выпуском продукта его исходный код архивируется. Если пользо ватель находит ошибку, программисты исправляют ее в исходном коде и повторно компилируют программу. Однако для начала исходный код ком пилируется как есть, и проверяется совпадение результата с имеющейся у пользователя программой. Если программы не одинаковы, как вносить изменения? Все это кажется очевидным, но вы не поверите, как много компаний не могут воссоздать проданные ими продукты. Архивные копии исходного кода у них есть, но не той версии программы. Это очень серьезная проблема. Составляя отчет о несовпадении архивной копии кода с той, которая предназначена для продажи, назначьте ему наивысший приоритет. Готовые диски содержат неверный код или данные После массового производства дисков, когда продукт будет практичес ки готов к выпуску, проверьте несколько из них. Если на дисках имеются ошибки, их поиск входит в обязанности группы тестирования. 5 3 8 Часть III: Управление проектами и группами Дупликаторы могут выпускать чистые диски — такое случается. И слу чается даже, что эти чистые диски уходят в продажу. За последние три года я трижды получал как пользователь чистые диски (от различных компа ний). Производственный отдел может размножить не ту версию програм мы или даже вообще не ту программу. Ошибки тестирования В этом разделе рассказывается о технических и процедурных ошибках и ошибках в документации, допускаемых сотрудниками группы тестирова ния. Хотя это и не ошибки программы, вам не раз придется столкнуться с ними в ходе работы. Пропущены ошибки в программе Вы всегда будете пропускать ошибки, поскольку все возможные тесты выполнить невозможно. Однако пропущенных ошибок будет больше, чем ожидается. Поэтому, обнаружив ошибку, которая давно могла быть выяв лена, особенно на поздних стадиях тестирования, ищите пути усовершен ствования процедуры тестирования. Не замечена проблема Выявленную тестом ошибку можно не увидеть по следующим причи нам. • Тестировщик не знает, каким должен быть правильный результат. По возможности включайте в описания тестов и предполагаемые резуль таты. Если тест автоматизирован, лучше всего рядом с его результа том вывести образец правильных данных. • Ошибка затерялась в большом объеме выходных данных. Постарайтесь, чтобы выходные данные тестов были как можно более короткими. Если это невозможно, направьте их в файл и подготовьте програм му, которая проверяет их автоматически. • Тестировщик не ожидал такого результата теста. Бывает, что тест, предназначенный для одной маленькой части программы, выявляет ошибку совсем в другой ее части. Будьте к этому готовы. • Тестировщик устал и невнимателен, ему скучно. Старайтесь организо- вать работу так, чтобы никто не выполнял один и тот же тест больше трех раз. Передавайте тесты между сотрудниками по кругу. • Механизм выполнения теста настолько сложен, что тестировщик уде ляет ему больше внимания, чем результатам. Пропуск ошибок на экране Не легко заметить такие вещи, как ошибки правописания, пропущен ные элементы меню и невыровненный текст, если вы сосредоточенны Приложение: Распространенные программные ошибки 5 3 9 главным образом на правильности выводимых программой данных и ее действий. Поэтому выделяйте время специально для внимательного изуче ния всего содержимого экрана. Не документирована проблема Отчет о найденной проблеме может быть не составлен по следующим причинам. • Тестировщик неаккуратно ведет записи. • Тестировщик не уверен в том, что данные действия программы являются ошибочными, и боится выглядеть глупым. • Ошибка показалась тестировщику слишком незначительной, или он считает, что она не будет исправлена. • Тестировщика просили не документировать больше подобные ошиб ки. Все эти причины неприемлемы. Если вы не уверены, что видите ошиб ку, напишите об этом в отчете. Обратитесь к руководству за разрешением споров о незначительных или политически неугодных ошибках. Вы отве чаете за то, чтобы о каждой найденной в программе ошибке был составлен отчет. Намеренное же сокрытие ошибок приводит к недоразумениям, пор тит моральный климат в коллективе, а в конечном счете ведет к снижению качества продукта. Кроме того, вы немедленно вовлекаетесь в политичес кие дрязги и интриги, от которых всегда лучше держаться подальше. Не выполнен запланированный тест Запланированный тест может быть не выполнен по следующим причи нам. • Тестовые материалы и записи плохо организованы. Последовательность действий нарушена, и тесты перепутаны. • Тестировщику скучно. Серии тестов повторяются по многу раз, из-за чего тестировщик выполняет некоторые из них в сокращенном виде или пропускает те, которые кажутся ему похожими на предыдущие. Постарайтесь сократить количество повторений, комбинируя приме ры, сокращая менее важные тесты или выполняя их только на каж дом втором или третьем цикле. • В одном тесте объединено слишком много действий. Если один тест включен в другой и один из них не удается, второй тоже, скорее всего, не будет выполнен. Постарайтесь избегать сложных комбина ций тестов, ведущих к пропускам некоторых из них. 5 4 0 Часть III: Управление проектами и группами Не использован самый "обещающий" тест Если два теста предназначены для проверки одного и того же фрагмента кода, должен быть выполнен тот, который с большей вероятностью может выявить ошибку (см. главу 6). Проигнорированы предложения программистов Программист знает свою программу как никто другой и может точно сказать, какие ее области он меньше всего тестировал и какие из них наи более слабые. Он знает, какие функции кодировались слишком быстро. Знает, какие тесты выявляли наиболее важные ошибки до сих пор и где еще в программе могут быть подобные ошибки. Не игнорируйте его сове ты. Выявление ошибок, которых на самом деле нет Документируется ошибка. Потом обнаруживается, что проблема связана с неверной тестовой процедурой, непониманием программы, неправильны ми действиями тестировщика. Такие вещи не только ведут к потере време ни, но и подрывают вашу репутацию. Ошибки в тестовых программах Автоматизированный тест выполняется специально написанной для этого программой. В ней могут быть ошибки. Программа может не выпол- нить тест или прервать его раньше времени. Она может представить пра вильные результаты теста как неправильные. Часто для сравнения данных берется неверный "образец". Вероятность того, что ваши собственные данные правильны, не больше, чем вероятность правильности данных программы. Испорчен файл данных Некоторые ошибки происходят из-за использования испорченных фай лов данных. Программы могут разрушать входные и выходные файлы, а равно и файлы образцов. Файлы могут разрушаться даже теми фрагментами программы, которые вообще не должны были бы к ним обращаться. Одна ко, пока программа тестируется, не имеет значения, что она не должна трогать данный файл. Если бы она делала только то, что должна, ее не за чем было бы тестировать. Лучше всего хранить три резервные копии тестовых файлов на трех разных носителях. Прежде чем документировать ошибку, проверьте, с правильной ли копией файла вы работали (сравнив ее с резервной). Приложение: Распространенные программные ошибки 5 4 1 Не правильно интерпретирована спецификация или документация Тестировщик может неправильно понять документацию и из-за этого посчитать, что программа работает неверно. Такие ошибки неизбежны. Спецификации корректируются, их старые версии могут быть неверными. Едва ли у вас будет время постоянно перечитывать вносимые в докумен тацию поправки. Обнаружив несоответствие программы своему пониманию ее задач, перечитайте спецификацию и документацию. Если и после этого вы не будете уверены в том, что имеет место ошибка, пометьте отчет как Вопрос. Если данная функция описана в документации нечетко, сошлитесь в отчете на этот раздел документации. Непонятный отчет Если программисту трудно разобраться в отчете, он будет игнорировать его как можно дольше. Это наиболее распространенная ошибка документи рования проблем. Пропуск подробностей экономит время, но помните, что первым делом программист попытается воспроизвести проблему по ваше му описанию. Если он не сможет этого сделать, он не сможет ничего ис править. Поэтому для наиболее сложных случаев следует прилагать к отчету копии файлов данных, записи нажатий клавиш, копии экранов и любые другие материалы, которые могут облегчить задачу программиста. В отчете не сказано, что проблему не удается воспроизвести Если тестировщик не может воспроизвести проблему, он должен обя зательно написать об этом в отчете. Это сэкономит время программиста и поможет ему в поиске решения. Не стоит думать, что безответственный программист просто отложит отчет, если в нем написано, что проблема не вос производится. Он и так это сделает, если не сможет воспроизвести ее сам. Отчет не проверен Написав отчет, следует выполнить все описанные в нем действия. На это, конечно, уйдет несколько минут, но зато вы будете уверены, что в отчете все правильно. Нередко тестировщики забывают или неверно опи сывают важные детали, особенно когда отчет составляется по ранее сделан ным заметкам. 5 4 2 Часть III: Управление проектами и группами Не описаны временные зависимости Тестировщик может не заметить, что для воспроизведения ошибки необходимо нажимать клавиши с интервалами в миллисекунды, или наобо рот, ждать как минимум пять минут перед нажатием следующей клавиши. Иногда он даже не понимает, что имеет дело с ситуацией гонок или дру гой ошибкой, связанной со временем. Заметив зависимость работы про граммы от времени, обязательно напишите об этом в отчете. А столкнувшись с невоспроизводимой ошибкой, подумайте, не вызвана ли она ситуацией гонок. Сложные условия Тестировщики часто выполняют сложные комбинированные тесты ради экономии времени. Однако, выявив ошибку, следует найти как можно более простой способ ее воспроизведения и именно его и опи сать в отчете. Преувеличения Не делайте из маленького недостатка большую проблему. Старайтесь сохранять объективность и здравый смысл, иначе вы заслужите репутацию нудного и придирчивого человека. Личные выпады Не отзывайтесь плохо о работе программиста. Не жалуйтесь, что он не исправляет ошибки, даже если они достаточно серьезны. Старайтесь сохра нять с сотрудниками мирные и деловые отношения и искать конструктив ные пути решения проблем. Ошибка выявлена и забыта Найдя ошибку, недостаточно просто составить о ней отчет. Необходи мо проследить за дальнейшей судьбой этого отчета и гарантировать, что об ошибке узнают все заинтересованные сотрудники и она не останется в программе просто потому, что о ней забыли. Не составлен итоговый отчет Не думайте, что, если вы передали программисту отчет об ошибке, он его прочел и принял необходимые меры. Некоторые программисты теря ют отчеты. Другие делают из них самолетики или заворачивают в них рыбу. А кое-кто даже прячет отчеты от руководителя. Каждую неделю или две обязательно составляйте и передавайте руководству сводные отчеты с пе речнем всех нерешенных проблем и неисправленных ошибок. Эта проце- Приложение: Распространенные программные ошибки 5 4 3 дура должна быть стандартной. Отчет должен охватывать абсолютно все ошибки и быть составлен в безличностной некритической форме. Серьезная проблема не документирована повторно Если ошибка серьезна, не удовлетворяйтесь резолюцией Отложено или Соответствует спецификации. Подумайте, как описать ее в такой форме, чтобы руководитель проекта понял ее важность, и составьте новый отчет. Если это не сработает, передайте отчет вышестоящему руководству. Не проверено исправление Программист сообщает, что ошибка исправлена. Не верьте ему на сло во. До трети всех исправлений либо неправильны, либо решают лишь часть проблемы. Кроме того, программист может исправить не то, что нужно. Иногда вместо истинной причины ошибки исправляются ее последствия, и тогда ошибка может проявиться где-нибудь еще. Если не провести тща тельного регрессионного тестирования, нельзя гарантировать, что ошибка исправлена и больше ничего не нарушено. Перед выпуском не проанализирован список нерешенных проблем Непосредственно перед выпуском продукта еще раз проанализируйте список всех неисправленных ошибок и отложенных проблем. Мы настоя тельно рекомендуем взять это за твердое правило и убедиться, что по всем отчетам о проблемах, по крайней мере, приняты определенные решения. Это ваш последний шанс напомнить людям о серьезных ошибках. |