2013-09-11 5 views
-1

Приносим извинения, если это было ранее, но у меня возникли проблемы с поиском инструмента, который соответствует моим потребностям.Какие существуют инструменты для управления большим набором тестовых программ?

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

До сих пор я использовал для этого оригинальный сценарий. Основная проблема, с которой я сталкиваюсь, заключается в том, что отдельная тестовая программа может принимать 5-10 параметров, каждая из которых имеет несколько значений. Хотя было бы легко написать что-то, что просто сделало бы вложенный цикл и охватило бы каждую комбинацию параметров, сложность состоит в том, что не каждая комбинация параметров имеет смысл, и не каждый параметр имеет смысл для каждой тестовой программы. Нет общего способа (то есть, который работает для всех параметров), чтобы кодифицировать то, что имеет смысл, а что нет, поэтому решения, которые я пробовал раньше, включают перечисление каждого разумного случая. Хотя перечисление выполняется со сценарием, оно все же приводит к огромному перекрестному продукту тестовых примеров, который громоздкий для поддержания. Мы также не хотим запускать гигантский кросс-продукт случаев каждый раз, поэтому у меня есть другие механизмы для выбора подмножеств, которые становятся еще более громоздкими.

Я уверен, что я не первый человек, столкнувшийся с такой проблемой. Есть ли какие-нибудь инструменты, которые могли бы помочь в этом? Или даже идеи для написания?

Спасибо.

Добавление разъяснении ---

Например, если у меня есть параметры А, В и С, что каждый представляет собой диапазон значений от 1 до 10, я мог бы иметь ограничение как: если А = 3 , то важны только нечетные значения B, а C должно быть 7. Ограничения обычно можно кодифицировать, но я не нашел инструмент, где я мог бы указать что-то подобное. Что касается самодельного инструмента, я должен либо перечислить кортежи параметров (что я и делаю), либо поставить или реализовать что-то довольно сложное, чтобы иметь возможность указывать и понимать такие ограничения.

+0

Не могли бы вы быть более конкретными в том, что вы ищете? Поскольку «нет общего способа кодирования» ваших требований, это сводится к поддержанию списка кортежей параметров, которые имеют смысл. Независимо от того, будет ли это происходить как исходный код (под управлением версиями) или в электронной таблице (для упрощения редактирования), зависит от ваших предпочтений/экосистемы/потребностей. – ojdo

+0

Как подсказывает @ojdo, на самом деле нет способа ответить на это, не зная больше о конкретных инструментах, которые вы используете. До тех пор вам нужно делать именно то, что вы делаете, - перебирайте различные комбинации ваших параметров и вызывайте свои сценарии. Возможно, в вашей раковине. –

ответ

0

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

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

Наши испытания считаются пройденными или провальными. критерии прохождения/сбоя определяются автором индивидуального теста, но инфраструктура хочет видеть либо прохождение, либо неудачу. Вам нужно определить, каковы ваши возможные результаты, такие же простые, как pass/fail, или вы можете захотеть добавить пропуск и продолжить, пройти, но прекратить тестирование, провалиться, но продолжать идти, и терпеть неудачу и прекратить тестирование. Остановить тестовое значение, если запланировано 20 тестов, а тест 5 не удался, вы остановите свое действие. 6.

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

Чтобы сократить мой ответ, я не знаю о существующей инфраструктуре, но я создал свой собственный и работал с домашними, которые были адаптированы к нашему бизнесу/лаборатории/процессу. Вы не нажмете домой запустить в первый раз, не ожидайте. но попытайтесь предсказать управляемый набор правил для отдельных тестов, сколько типов возвращаемых значений pass/fail возвращаются. Типы фильтров, которые вы хотите установить. Тип ведения журнала, который вы можете захотеть, и где вы хотите сохранить эти данные. затем создайте инфраструктуру и мандатную оболочку/фрейм для каждого теста, затем отдельные тестеры должны работать в этой оболочке. Наша нынешняя инфраструктура находится в python, которая хорошо подходила к этому, и мы не ограничиваемся только тестированием на основе python, с которым мы можем использовать C или python, и цель может запускать любые языки/программы, которые она может запускать. Уровни абстракции хороши, мы используем простое чтение/запись адреса для доступа к тестируемому модулю, и с этим мы можем протестировать против симуляции цели или против реального оборудования, когда приходит оборудование. Мы можем получить доступ к оборудованию через последовательный отладчик или jtag или pcie, и большинство тестов не знают или не заботятся, потому что они находятся на другой стороне абстракции.

+0

Спасибо! У нас есть инструмент для запуска индивидуального теста, который имеет наш журнал и определяет условия прохождения/сбоя, поэтому мы в порядке. Основная проблема - выяснить, какие тесты следует выполнять. Если вы разберете все возможные случаи, у нас будет десятки тысяч тестов (и много миллионов, если бы у нас не было возможности ограничить перекрестные продукты), но мы можем захотеть запускать всего несколько сотен за раз (с использованием механизма сетки, поэтому мы не ограничены возможностью их запуска через jtag). Есть ли у вас предложения по управлению списком тестов и выбору тех, которые нужно запустить? – user1806566

+0

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

+0

вам все равно придется решить, как вы собираетесь выполнять репликацию, и в то же время решить, как вы собираетесь разделить это на управляемые тестовые группы. –

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