Хорошо. Наши работы продукта. Бета-тестеры на самом деле делали свой материал. Время для следующего повторения. Но как гарантировать качество? Нам нужен тестер!
Как я ограждаю кого-то нового от улицы, запущенной в тестировании? У меня нет подсказки о том, как сделать это сам (я - разработчик, не тестер)!
Мы - крошечная команда:
Ни один из нас не имею подсказку о том, как сделать это профессионально. До сих пор мы имеем:
Я ожидаю, что нам будет нужен сценарий тестирования. Но как? Кто? Что? Когда?
Хотя вы говорите, что вам нужна структура для произвольных, несвязанных функций, вы привели пример класса 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-Почему вы ищете «кого-то с улицы»? Для меня это звучит как вопрос «Я хочу нанять нового программиста, как я могу вытащить кого-то с улицы и заставить его ускорить программирование моего программного обеспечения?». Почему вы хотели бы сделать это, наняв человека, который уже является программистом?
В вашей ситуации, которая заключается в том, что вы мало знаете о тестировании, я бы определенно подумал о найме кого-то с опытом работы в этой области.
В частности, я бы, вероятно, искал:
Последний пункт является необязательным, но, надеюсь, ваша команда будет расти по мере роста вашего программного обеспечения, поэтому, возможно, будет иметь смысл привлечь кого-то, кто может расти и в роли (не говоря уже о том, что у вас есть опыт, чтобы помочь вам решить, когда и как развивать команду по обеспечению качества).
Некоторые стандарты кодирования утверждают, что первая ветвь должна быть той, которая более вероятна, в то время как другая ветвь должна справляться с более исключительными вещами.
Но это совершенно эзотерически, выбирайте все, что хотите.
По моему личному мнению, скорее используйте
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 Джефф и Джоэл обсуждают (среди прочего), какими навыками должен обладать хороший тестер. Стенограмма также доступна (примерно на половине страницы)
В идеале вам нужно дать тестировщику:
Прежде чем пригласить кого-нибудь для тестирования, убедитесь, что вы соответствуете требованиям для тестирования. Как минимум вам необходимо:
Спецификация: некоторый авторитетный источник информации о том, что приложение должно делать. Это может быть эксперт, который может ответить на любые вопросы о том, что именно должно делать приложение, но чем больше записано и чем более формально оно определено, тем лучше.
Время: Для тестирования нужно время. Вы не можете передать приложение тестеру за 30 минут до его запуска и ожидать каких-либо значимых результатов. Если вы занимаетесь каскадной разработкой, тестирование в конце потребует много времени. Многие другие модели разработки позволяют проводить тестирование параллельно с разработкой, что экономит много времени, но независимо от модели, которую вы используете, тестирование потребует больше времени, чем тестирование.
Если у вас нет этих двух вещей, гарантия качества - просто несбыточная мечта.
Теперь, если вы встретились с ними и пытаетесь обучить кого-нибудь тестированию, вот мой ускоренный курс по тестированию.
По сути, тестирование приложения означает, что вы пытаетесь убедиться в двух вещах:
Программа выполняет то, что она должна делать.
Программа не делает того, чего не должна.
Это основной образ мышления, который я использую. Основываясь на этом, я подхожу к вещам с точки зрения действий и пытаюсь проверить:
Пункт 1 взят непосредственно из спецификации: вы должны убедиться, что программа выполняет то, что она должна делать.
Пункты 2 и 3 - вот где приходит искусство тестирования. Какие неожиданные действия и предварительные условия я могу выполнить? Я мог попытаться ввести неправильный пароль. Я мог бы попытаться напрямую ввести URL-адрес предположительно защищенной страницы. Я мог бы попытаться вставить нечетные символы Юникода в текстовое поле. Я мог бы попытаться поместить код SQL или javascript в текстовое поле.
Пункт 4 - это бесконечная нейтральная зона тестирования, часть, которая делает полное тестирование невозможным. (2 и 3 тоже бесконечны, но думать об этом не так удручающе.) Это не значит, что вы игнорируете это. Вы всегда следите за всем необычным. Кроме того, иногда приходит вдохновение, и вы думаете о возможном способе вызвать неожиданный эффект: «Что произойдет, если я войду в систему между 23:59:59 и 12:00:00 утра в третий вторник месяца? я администратор ". Технические знания и возможность заглянуть внутрь черного ящика помогают придумывать подобные сценарии.
О тестировании можно сказать гораздо больше, но это самый минимум, о котором я могу думать: технические требования и подход к проблеме.
Ну, не хотите ли вы расширить свою команду тестировщиком? Вы думали о том, чтобы просто нанять специалиста по тестированию из консалтинговой фирмы?