2012-04-23 2 views
2

Я хочу написать алгоритм (кучу алгоритмов машинного обучения) в C/C++ или, возможно, в Java, возможно, на Python. Для меня это не имеет значения - я знаком со всем вышеперечисленным.Какую форму тестирования я должен выполнить?

Для меня важно проверить. Я хочу обучать свои модели с помощью данных обучения. Итак, у меня есть тестовый ввод, и я знаю, какой должен быть результат, и я сравниваю его с выходом модели. Что это за тест? Это единичный тест? Как я могу подойти к проблеме? Я вижу, что я могу написать код, чтобы проверить, что мне нужно проверить, но я хочу отделить тестирование от основного кода. Тестирование - хорошо развитая область, и я видел это раньше, но я не знаю названия и типа этого конкретного вида тестирования, чтобы я мог прочитать его, а не создавать беспорядок. Я был бы признателен, если бы вы могли сообщить мне, как называется этот метод тестирования.

ответ

0

Лучше смотреть психологию тестирования видео из tetsing Бог http://misko.hevery.com/

Ссылка на Мисько видео:

http://misko.hevery.com/presentations/

И прочтите это тестирование поддержки Google http://misko.hevery.com/code-reviewers-guide/

Отредактировано:

Любой может написать тесты, они действительно просто и нет никакой магии, чтобы написать тест, вы можете просто сделать что-то вроде:

var sut = new MyObject(); 
var res = sut.IsValid(); 
if(res != true) 
{ 
    throw new ApplicationException("message"); 
} 

То есть теория, конечно, в эти дни у нас есть инструменты для упрощения тестов и мы можем написать что-то вроде этого:

new MyObject().IsValid().Should().BeTrue(); 

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

Просто следуйте психологии тестирования видео из Мисько, чтобы вы начали

0

Это очень похоже на Test-Driven Development (TDD), где вы создаете unit-tests перед производственным кодом. На этом сайте есть много подробных ответов по этим темам. Я связался с несколькими подходящими вопросами, чтобы вы начали.

0

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

0

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

Например, я хочу создать сортировочную сеть. Моя система обучения - это программы, которые создают сети. Моя коэволюционная система генерирует входы, которые трудно сортировать. Сортировочные сети вознаграждаются за создание правильных сортов, а коэволюционные системы вознаграждаются за то, сколько неудач они запускают в сортировочных сетях.

Я сделал это с проектами генетического программирования, и это сработало достаточно хорошо.

0

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

0

Испытание модуля. контролеры тестируются, и код проверяется и отключается, не испортив код разработки. Этот процесс также называется Test Driven Development (TDD), в котором каждый ваш цикл разработки тестируется, прежде чем перейти к следующей итерации или фазе программного обеспечения.

Смежные вопросы