Как повредить кого-то в тестирование?

Хорошо. Наши работы продукта. Бета-тестеры на самом деле делали свой материал. Время для следующего повторения. Но как гарантировать качество? Нам нужен тестер!

Как я ограждаю кого-то нового от улицы, запущенной в тестировании? У меня нет подсказки о том, как сделать это сам (я - разработчик, не тестер)!

Мы - крошечная команда:

  • 2 архитектора (как в зданиях, не программном обеспечении, они - специалисты по проблемной области здесь), выясняющий, что создать
  • я создающий его
  • и новый парень, чтобы сделать некоторое тестирование, прежде чем мы выставим выпуски

Ни один из нас не имею подсказку о том, как сделать это профессионально. До сих пор мы имеем:

  • набор виртуальных машин, охватывающих конфигурации, мы хотели бы протестировать
    • различные версии окон
    • немецкий и английский язык, эти два языка, вероятно, для использований нашими клиентами
    • программное обеспечение хоста, для которого мы пишем (Архитектура Autodesk Revit 2010, мы создаем плагин для энергетических вычислений),
  • текстовый документ, описывающий некоторые тесты, которые я сделал (установленный выпуск xyz, сделал это, сделал это, и т.д.),
  • система отслеживания ошибок тестер может добавить все ошибки, которые он находит

Я ожидаю, что нам будет нужен сценарий тестирования. Но как? Кто? Что? Когда?

9
задан Daren Thomas 3 February 2010 в 10:52
поделиться

5 ответов

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

class DateTime {

    public static function getNow() {
        return new self();
    }

    public function __construct() {
        $this->setDateTime('now');
    }

    public function setDateTime($value) {
        #...
    }

}

Но кроме этого, уже существует класс builtin DateTime в PHP .

-121--4407474-

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

-121--3348325-

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

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

В частности, я бы, вероятно, искал:

  1. Кто-то с некоторым опытом выполнения тестов под поясом (так как вы хотите, чтобы он действительно делал тесты).
  2. Кто-то с некоторым опытом написания планов испытаний/и т.д.
  3. Кто-то с определенным опытом работы в группе по обеспечению качества.

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

7
ответ дан 4 December 2019 в 19:33
поделиться

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

Но это совершенно эзотерически, выбирайте все, что хотите.

По моему личному мнению, скорее используйте

function is_numeric($number)
{
    return preg_match("/^[0-9]+$/",$number);
}

, когда preg_match возвращает логическое значение.

-121--4537506-

PHP имеет встроенную функцию is_numeric (): http://php.net/manual/en/function.is-numeric.php почему бы не использовать эту функцию.

-121--4537513-

В своем подкасте # 64 Джефф и Джоэл обсуждают (среди прочего), какими навыками должен обладать хороший тестер. Стенограмма также доступна (примерно на половине страницы)

0
ответ дан 4 December 2019 в 19:33
поделиться

В идеале вам нужно дать тестировщику:

  • обучение , чтобы убедиться, что он знает продукт, который нужно тестировать.
  • документация об ожидаемых результатах.
  • планы тестирования - что нужно тестировать и как
  • система отслеживания тестов отслеживать, что тестируется, что прошло тесты, что нужно исправить и т. Д. Система не обязательно должна быть слишком сложной, в зависимости от размера проекта может быть достаточно электронной таблицы Excel.
1
ответ дан 4 December 2019 в 19:33
поделиться

Прежде чем пригласить кого-нибудь для тестирования, убедитесь, что вы соответствуете требованиям для тестирования. Как минимум вам необходимо:

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

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

Если у вас нет этих двух вещей, гарантия качества - просто несбыточная мечта.

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

По сути, тестирование приложения означает, что вы пытаетесь убедиться в двух вещах:

  • Программа выполняет то, что она должна делать.

  • Программа не делает того, чего не должна.

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

  1. Ожидаемое действие с ожидаемыми предварительными условиями дает ожидаемый эффект.
  2. Ожидаемое действие с неожиданными предусловиями не дает результата или обрабатывается соответствующим образом.
  3. Неожиданное действие не производит никакого эффекта или обрабатывается соответствующим образом.
  4. Никаких неожиданных эффектов не происходит.

Пункт 1 взят непосредственно из спецификации: вы должны убедиться, что программа выполняет то, что она должна делать.

Пункты 2 и 3 - вот где приходит искусство тестирования. Какие неожиданные действия и предварительные условия я могу выполнить? Я мог попытаться ввести неправильный пароль. Я мог бы попытаться напрямую ввести URL-адрес предположительно защищенной страницы. Я мог бы попытаться вставить нечетные символы Юникода в текстовое поле. Я мог бы попытаться поместить код SQL или javascript в текстовое поле.

Пункт 4 - это бесконечная нейтральная зона тестирования, часть, которая делает полное тестирование невозможным. (2 и 3 тоже бесконечны, но думать об этом не так удручающе.) Это не значит, что вы игнорируете это. Вы всегда следите за всем необычным. Кроме того, иногда приходит вдохновение, и вы думаете о возможном способе вызвать неожиданный эффект: «Что произойдет, если я войду в систему между 23:59:59 и 12:00:00 утра в третий вторник месяца? я администратор ". Технические знания и возможность заглянуть внутрь черного ящика помогают придумывать подобные сценарии.

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

2
ответ дан 4 December 2019 в 19:33
поделиться

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

2
ответ дан 4 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

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