Система тестирования функциональных тестов FuncTest_Для_1cv8.1 - версия 1.17

30.01.2008 10:14 [13.02.2010 00:00] artbear 45 [+] [−] Перейти к комментариям (36)

Конфигурации: 1C: Предприятие 8
Внешний отчет, обработка для 1С: Предприятие 8.1

или посмотреть и скачать все файлы (3)

 Система тестирования функциональных тестов FuncTest_Для 1C v81 - версия 1.17

Основана на системе FuncTest для 1С 7.7 - http://1c.alterplast.ru/functest/functest.html

Возможности
Реализована только для 8.1

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

В дальнейшем можно сравнивать текущие ожидания из справочника/документа/запроса/печ.формы/т.д. с сохраненными ожиданиями из теста.

Есть возможность написания самостоятельных классов - произвольных расчетчиков ожиданий.

Интерфейс подобных классов описан в обработке-заготовке Классы/РасчетчикОжиданий_Базовый.epf

Также примера написания можно посмотреть в вложенной папке Классы

История изменений

1.10 - добавлена автогенерация тестов с ожиданиями для документов и автоматическое обновление ожиданий для всех тестов

1.11 - выполнен сильный рефакторинг системы

1.12 - логика тестов отделена от интерфейса, рефакторинг системы

1.13 - выделены классы тестирования и расчетчиков ожиданий, рефакторинг системы

Появилась возможность написания самостоятельных классов - произвольных расчетчиков ожиданий

1.14:
Появилась возможность получать ожидания из запросов 1С.

К базовому интерфейсу классов-расчетчиков ожиданий добавлен метод "ОбработатьНачалоВыбораОбъектаТестирования"

Исправлен баг - нельзя было сделать произвольный класс-расчетчик с произвольным объектом тестирования.
Поведение браузера тестов сделано более "вменяемым".

1.15:
Переделана структура хранения данных тестов - тест хранится в одном файле test_NNN.txt.
Работа с ожиданиями из запросов 1С сделана более стабильной.

Сильно ускорена и оптимизирована работа системы тестирования.
Исправлен различные баги в работе браузера тестов.

Приложены простые демо-тесты с простыми запросами - папка "НезависимыеТесты".

Для нормальной работы с запросами рекомендуется использовать
подсистему "Инструменты разработчика"
http://infostart.ru/projects/1274/
В этом случае появляются максимально удобные возможности
редактирования запросов и их параметров.
Если в конфигурацию включена данная подсистема, то система
тестирования автоматически начинает использовать консоль запросов из этой подсистемы.

1.16:
 [+] имена используемых классов-расчетчиков ожидания хранятся в файле Классы\main.ini (кодировка Win1251)

 [+] изменен/доработан интерфейс классов-расчетчиков ожиданий;

 [+] для класса-расчетчика ожидания добавлена возможность программного управления работой с таблицей "
  Условия теста" - начало выбора, обработка выбора;
 [+] для класса-расчетчика ожидания добавлена возможность программного управления элементом управления
   элементом управления значения условия тестирования;
 [+] добавлена возможность вывода сообщений из теста в общий лог тестирования;

 [+] добавлена спец.условие тестирования "Тест_ФлагНеУчитыватьРазноеКоличествоСтрок";

 [+] доработана работа пользователя со списком тестов;
 [-] если в выбранном пользователе каталоге нет тестов, не все таблицы на экране очищались;
 [*] перед открытием браузера тестов выполняются проверки на существование необходимых классов;

 [-] в условиях тестирования нельзя было использовать значения с типом Булево;

 [+] исправлены наименования колонок списка тестов;

 [*] Расчетчик-ожиданий Запрос - более точная обработка ошибок в тексте запроса;

    Исправлены различные баги в работе браузера тестов.

    [*] - возможно программное тестирование всех тестов,  получение  ожиданий  для  всех
    тестов и распечатка данных тестов из внешнего кода.

 [+] Добавлен новый вид тестирования -
  получение всех движений документа на базе типового отчета ДвиженияДокумента, встроенного в конфигурацию

  файл - РасчетчикОжиданий_ВсеДвиженияДокумента.epf

 [+] Добавлен новый вид тестирования -
  получение печатных форм различных объектов в типовых конфигурациях 1С и подобных им
  Внимание: необходима доработка конфигурации, подробнее в начальных комментариях к тексту модуля

  файл - РасчетчикОжиданий_Печать.epf

 [+] Добавлен новый вид тестирования -
  получение печатных форм из файлов-обработок *.epf аналогично типовым конфигурациям 1С и подобных им
  Используется метод обработки "Печать"

  файл - РасчетчикОжиданий_ВнешняяПечатнаяФорма.epf

 [+] Добавлен новый вид тестирования -
  получение печатных форм из файлов-обработок, хранящихся в справочнике печатных форм, в типовых конфигурациях 1С и подобных им;
  Используется метод обработки "Печать"

  файл - РасчетчикОжиданий_ВнешняяПечатнаяФормаИзСправочникаПечатныхФорм.epf

 [+] Добавлен новый вид тестирования -
  Получение ожиданий на базе произвольных файлов обработок *.epf
  Может использоваться для работы с юнит-тестами - см. папку ПроизвольныеЮнитТесты

  файл - РасчетчикОжиданий_ПроизвольныйТестИзФайлаОбработки.epf

 [+] Добавлена возможность работы с юнит-тестами -
  при использовании расчетчика РасчетчикОжиданий_ПроизвольныйТестИзФайлаОбработки.epf
  необходимо использовать на базе данного файла создать свой вариант юнит-теста

 [+] Рабочий пример юнит-теста -
  для системы 1С:УПП получает данные из книги покупок и
  дает возможность автоматически, на лету сформировать документ "Формирование книги покупок",
  и проверить сохраненную книгу покупок с автоматически сформированной

1.17:
  [-] при прохождении тестирования могло выдаваться исключение из-за ошибки в коде класса Тест и работа тестирования останавливалась.
  [-] при получении ожиданий из печатной таблицы не учитывалась последняя строка таблицы
  [+] новый метод класса Тест::ЗаполнитьРеквизитыПриемникаУсловиямиТеста(Приемник)


Дополнительные возможности

По кнопке Печать можно распечатать список тестов и т.д.

Исходная обработка - http://itland.ru/forum//index.php?showtopic=11542&view=findpost&p=71126
Автор SA_KGB - ему большое спасибо !!

Полезные ссылки по тестированию я выложил в форуме другой своей разработки

FuncTest

FuncTest

Исправление конфы для возможности тестирования любой печатной (внешней или внутренней) формы объектов


artbear Артур 18.02.2010 14:04:00

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

 // начало метода Процедура НапечататьДокумент(......) Экспорт
  
 // -- Артур -- 05.12.2008 - для возможности тестирования универсальной печати документов/справочников
  Попытка
     лПараметрСеанса_глТестированиеЗапущено = глЗначениеПеременной("глТестированиеЗапущено");
     Если лПараметрСеанса_глТестированиеЗапущено <> Неопределено Тогда
        Если лПараметрСеанса_глТестированиеЗапущено Тогда
           глЗначениеПеременнойУстановить("глТестирование_ПоследнийПечатныйДокумент", ПечДокумент);
           Возврат;
        Иначе
           глЗначениеПеременнойУстановить("глТестирование_ПоследнийПечатныйДокумент", Неопределено);
        КонецЕсли; 
     КонецЕсли;  
  Исключение
     //ОписаниеОшибки()
  КонецПопытки;
 // --завершение

Читать полностью

Возможность простого юнит-тестирования


artbear Артур 13.02.2010 22:53:00

Изучал Консоль выполнения произвольных текстов модуля

обнаружил, что версию 2.0.0.18 (текущая на сегодня, 14.02.2010) довольно легко превратить в среду по созданию и тестирования юнит-тестов для 1С 8

Прокомментировал в (61)

Текущую редакцию довольно легко можно превратить в простую среду по созданию, отладке и тестированию юнит-тестов в 1С.

Принимаем следующие предположения:
1. если код/текст/юнит-тест не работает, он выбрасывает исключение
2. несколько юнит-тестов могут быть объединены в группы
при этих предположениях легко сделать исправления в модуле основной формы браузера блоков кода
и по кнопке Выполнить будут выполняться целые группы тестов.
.
Код ниже вставляем вместо процедуры КоманднаяПанельФормыВыполнить(Кнопка) в модуле основной формы
.
// Артур
Функция ВыполнитьОдинБлокКода(текстМодуля, ДанныеДляКода)
//Процедура КоманднаяПанельФормыВыполнить(Кнопка)

    // Поместим параметры, алгоритмы и запросы в структуры,
    // чтобы к ним можно было обратиться, например Алгоритмы.ОбработкаСправочника

   
Параметры = Новый Структура;
    Для каждого
ПараметрСтрока Из ДанныеДляКода.ТаблицаПараметров Цикл
       
Параметры.Вставить(ПараметрСтрока.Параметр, ПараметрСтрока.ЗначениеПараметра);
    КонецЦикла;

   
Алгоритмы = Новый Структура;
    Для каждого
АлгоритмСтрока Из ДанныеДляКода.ТаблицаАлгоритмов Цикл
       
Алгоритмы.Вставить(АлгоритмСтрока.АлгоритмИмя, АлгоритмСтрока.Алгоритм);
    КонецЦикла;

   
Запросы = Новый Структура;
    Для каждого
ЗапросСтрока Из ДанныеДляКода.ТаблицаЗапросов Цикл
       
Запросы.Вставить(ЗапросСтрока.ЗапросИмя, Новый Запрос(ЗапросСтрока.Запрос));
    КонецЦикла;

   
// Выполнение текста

   
ТаблицаРезультат.Очистить();

    Если НЕ
ДанныеДляКода.ЭтоГруппа Тогда
        Выполнить(
текстМодуля); //Выполнить(ЭлементыФормы.ТекстМодуля.ПолучитьТекст());
       
Возврат Истина;
    Иначе
        Попытка
            Выполнить(
текстМодуля);
            Возврат Истина;
        Исключение
           
Сообщить("Код "+ДанныеДляКода.ТекущаяСтрока.ИмяТекста + " неверно отработал - <"+ОписаниеОшибки()+">");
            Возврат Ложь;
        КонецПопытки;
    КонецЕсли;

КонецФункции

// Артур
Процедура КоманднаяПанельФормыВыполнить(Кнопка)
   
ДанныеДляКода = Новый Структура;

   
текущаяСтрока = ЭлементыФормы.ДеревоТекстов.ТекущаяСтрока;
   
подчиненныеСтроки = текущаяСтрока.Строки;
   
количествоПодчиненныхСтрок = подчиненныеСтроки.Количество();
   
этоГруппаБлоковКода = количествоПодчиненныхСтрок <> 0;

    Если НЕ
этоГруппаБлоковКода Тогда
       
код = ЭлементыФормы.ТекстМодуля.ПолучитьТекст();

       
ДанныеДляКода.Вставить("ЭтоГруппа", Ложь);

       
ДанныеДляКода.Вставить("ТаблицаПараметров", ТаблицаПараметров);
       
ДанныеДляКода.Вставить("ТаблицаАлгоритмов", ТаблицаАлгоритмов);
       
ДанныеДляКода.Вставить("ТаблицаЗапросов", ТаблицаЗапросов);
       
ДанныеДляКода.Вставить("ТекущаяСтрока", текущаяСтрока);

       
ВыполнитьОдинБлокКода(код, ДанныеДляКода);
    Иначе
       
количествоПлохихТестов = 0;
        Для каждого
строка Из подчиненныеСтроки Цикл
           
код = строка.ТекстМодуля;

           
ДанныеДляКода.Вставить("ЭтоГруппа", Истина);

           
ДанныеДляКода.Вставить("ТаблицаПараметров", строка.Параметры);
           
ДанныеДляКода.Вставить("ТаблицаАлгоритмов", строка.ТаблицаАлгоритмов);
           
ДанныеДляКода.Вставить("ТаблицаЗапросов", строка.ТаблицаЗапросов);
           
ДанныеДляКода.Вставить("ТекущаяСтрока", строка);

           
успешно = ВыполнитьОдинБлокКода(код, ДанныеДляКода);
            Если НЕ
успешно Тогда
               
количествоПлохихТестов = количествоПлохихТестов + 1;
            КонецЕсли;
        КонецЦикла;

        Если
количествоПлохихТестов = 0 Тогда
           
Сообщить("ОК");
        Иначе
           
Сообщить("Не выполнено <"+количествоПлохихТестов+"> тестов/блоков кода из <"+количествоПодчиненныхСтрок+">");
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
// завершение
.
ИМХО очень удобно использовать для тестирования.

ЗЫ в данной редакции кода возможна редакция только на 2-х уровнях иерархии - код и группа кодов. но доработать на любую иерархию несложно.

 

Читать полностью

Страницы: 1
Новая тема
Темы
Ответы Обновление
0
Как пользователь может указать каталог, где хранятся тесты? · автор: fez
0
Делимся опытом :) · автор: Anything
14
30.11.2009 15:47:00 artbear Артур
3
20.11.2009 11:03:00 artbear Артур
Страницы: 1

Публикация ссылается на:

На публикацию ссылаются:

Оценка сообщества

45

Поставьте плюс, если вы рекомендуете данную публикацию к прочтению и использованию.
Плюс добавляет публикацию в Мои рекомендации.

[+] Рекомендую   [−] Не тратить время
Если рейтинг упадет до -5, то публикация автоматически скроется.