Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Автоматическое тестирование 1С 8. С чего начать. (число прочтений - 10846 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Автоматическое тестирование 1С 8. С чего начать.
18. Ноября 2011 :: 06:48
Печать  
А может кто-нибудь описать механизм всего этого для тех, кто вообще автоматическим тестированием никогда не пользовался?
Если сделать несколько конкретных примеров для УТ под 8.2 было бы вообще супер.
« Последняя редакция: 25. Ноября 2011 :: 06:38 - trad »  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #1 - 24. Ноября 2011 :: 12:36
Печать  
Мне интересны какие-то бызовые механизмы и средства. Конкретно сейчас интересен вот такой случай:
Есть база с абонентами, которым предоставляются некие услуги и за эти услуги начисляются суммы по определенным алгоритмам.
Я хочу создать некую базу-шаблон с заполнеными абонентами, которые бы покрывали большенство вариаций расчетов начислений по услугам.
Т.е. я создаю Иванова с такими-то параметрами и точно знаю, что за Январь ему должно начислиться такие-то суммы.
Конфа активна правится. Далее, я накатываю её на эту "тестовую" базу и запускаю сформированные каким-то образом мои тесты, которые проверяют верность начислений.
Вот, пока хотя бы вот такое понять как делают умные люди.

Я так понимаю тестирование форм (нажатие определенных кнопок, выбор определенных элементов, т.е. эмуляция интерактива) невозможна в принципе. И оттестировать можно как бы только "код".

И хочу посмотреть подобный пример на какой-нить типовой, если возможно.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #2 - 24. Ноября 2011 :: 15:14
Печать  
JohnyDeath писал(а) 24. Ноября 2011 :: 12:36:
абонентами, которые бы покрывали большенство вариаций расчетов начислений по услугам.


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

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


Цитата:
Я так понимаю тестирование форм (нажатие определенных кнопок, выбор определенных элементов, т.е. эмуляция интерактива) невозможна в принципе. И оттестировать можно как бы только "код".


Ну почему же. Например, я использую TestComplete. Одна из проблем здесь в том, что невозможно считать свойства контролов, т.к. в восьмерке 1С использует свои, никому неизвестные, контролы. Поэтому, приходится выкручиваться - доставать значения полей через OLE.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #3 - 24. Ноября 2011 :: 17:07
Печать  
Спасибо за ответ.
Я себе все примерно так же и представлял. Но мне интересно как конкретно это происходит, желательно с примером.
Прям как для отсталых:
1. Берем последнюю обработку из данной ветки
2. Что-то создаем
3. Куда-то прикрепляем
4. Создаем таблицы-наборы ожидаемых данных
5. Куда-то прикрепляем
6. что-то еще шаманим.
Нажимаем и ждем чего-то

Можно пример?
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #4 - 24. Ноября 2011 :: 17:16
Печать  
Ну тут я не в курсе. Авторы/пользователи сабжа, наверно, подскажут.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #5 - 24. Ноября 2011 :: 17:36
Печать  
Ну а как делаешь ты? Неужели каждый новый тест - это отдельная обработка, где жестко кодом прописано абсолютно всё?
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #6 - 24. Ноября 2011 :: 17:38
Печать  
У нас в конторе своя разработка. В отдельной базе хранятся тесты в виде обработок.
Что тебя удивляет?
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #7 - 24. Ноября 2011 :: 17:55
Печать  
JohnyDeath писал(а) 24. Ноября 2011 :: 17:07:
Спасибо за ответ.
Я себе все примерно так же и представлял. Но мне интересно как конкретно это происходит, желательно с примером.

...

Можно пример?


Жень. Ты почти хочешь невозможного.  Смущённый Примеры они очень конкретные.

Но я попробую:

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

то есть (по сабжу)

0. У меня есть типовая/чужая конфигурация
0.1 Я решил добавить реквизит "Ромашка" к типовому Справочнику Тесть
1. я создаю тест в своем комплекте тестов ПроверитьСуществованиеРеквизитаРомашка()
2. запуская тестЫ - тесты падают: я же пока решил, а не добавил
3. Создаю реквизит Ромашка
4. запускаю тестЫ - тесты не падают

0. Я думаю что необходимо создать общий модуль РаботаСТестем и добавить туда функцию ПроанализироватьРомашкиТестей()
1. я создаю тест ПроверитьСуществованиеФункцииАнализРомашекТестей()
2. Прогоняю тестЫ: тесты падают - общего модуля нет, функции нет
3. создаю функцию.
4. прогоняю тесты - тесты не падают

0. я решил что функция анализРомашекТестя будет брать текущих Тестей и возвращать коллекцию Тестей с Ромашками или без Ромашек
0.1 прототип функции выглядит так ПроанализироватьРомашкиТестей(сРомашкей = Истина)
1. Пишу тест (последовательность)
1.1 Создать 20 элементов справочника Тесть с реквизитом Ромашка = Истина
1.2 Создать 30 элементов справочника Тесть с реквизитом Ромашка = Ложь
1.3.1 Тест - ПроверитьКоличествоТестьСРомашкой() = 20
1.3.2 Тест - ПроверитьКоличествоТестБезРомашки() = 30
1.4 Очистить справочник Тесть

и т.д.

P.S. когда мы около 1.5 года назад встречались с Федором - он мне сказал что библиотеку тестирования можно  "в принципе" написать под любую платформу, так как Workflow известен for each Test {preTest->test->afterTest}. Однако практика несколько сложней: что тестировать, как тестировать, что есть данные теста, а что есть данные настройки системы в целом - короче чем дальше в тестирование, тем толще партизаны.


P.S.S. Жень - для начала попробую простые вещи: загрузи cf в чистую базу, создай обработку которую назови тестирование: в ней создай три процедуры ПередТестом() Тест() ПослеТеста()

процедуру Тест() повесь на кнопку - ты будешь смеяться кнТест

код процедуры кнТестНажатие

Цитата:
ПередТестом()
Попытка
Тест()
ПослеТеста()
Исключение
Попытка
  ПослеТеста()
исключение
 ВызватьИсключение(""Ошибка очистки данных теста" + ОписаниеОшибки())
КонецПопытки
ВызватьИсключение(ОписаниеОшибки())
КонецПопытки



а в процедуре Тест() - попробуй сразу создай абонента "кодом", создай ему начисления, запусти расчет и проверь на ожидаемую сумму.

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


P.S.S.S. Непонятно написал.... Торопился.

  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #8 - 24. Ноября 2011 :: 18:53
Печать  
Палыч писал(а) 24. Ноября 2011 :: 17:38:
У нас в конторе своя разработка. В отдельной базе хранятся тесты в виде обработок.
Что тебя удивляет?

Я просто никогда с этим не сталкивался, но задумываюсь всё чаще.
Мне в очень грубом первом приближении видится что-то вроде некой обработки, в которой находится коллекция тестов. Каждый тест - это тест, созданный из шаблона теста. Шаблон - это некий набор входящих данных и связей, и ожидаемого результата (также набор данный в каком-либо виде, например ТЗ, таблица-моксель, соответствие и т.п.).

Но так как я ни разу не видел ничего подобного в действии, то скорее всего мои мыли - это просто плод союза фантазии, хотелок и лени. Поэтому очень хочется увидеть реальный пример.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #9 - 24. Ноября 2011 :: 19:27
Печать  
lustin писал(а) 24. Ноября 2011 :: 17:55:
...
P.S.S.S. Непонятно написал.... Торопился.

Алексей, спасибо! У тебя всегда очень красиво получалось объяснить "непонятное" понятным языком.
Немного даже стало проясняться.

Вопрос ко всем использующим инструменты автотестирования. С чего вы начинали? Как бы так въехать, чтоб не наступать на грабли и не изобретать велосипедов.
Ну и от примера я так и не отказываюсь Подмигивание Да, понимаю, что у всех специфичные конфы, но может кому-нибудь удасться смоделировать проблему и решить её на основе УТ.

Вот например есть задача для УТ: В документ "Реализация" добавить флаг "СуперЦена", при установке которого товару из ТЧ с максимальной ценой проставлялась бы цена по след. формуле:
НоваяЦена = Средняя цена товара с минимальной ценой из данной ТЧ за последние 5 месяцев, но не далее чем с начала года  Очень довольный

+ если копейки от общей стоимости заказа совпадают с четвертым и пятым числом из ИНН покупателя, то скидка составляет 50 % (применяется однократно, чтоб не попали в бесконечный цикл )) )

Т.е. есть у меня документ от 03.03.2011, где в ТЧ есть следующее:
1. Хлеб - 2 р.
2.  Батон - 5 р.
3. Пирожок - 4 р.
(все товары по 1 шт.)

МаксЦенаТЧ: Батон = 5 р.
МинЦенаТЧ: Хлеб = 2 руб. Нам нужно взять среднюю цену хлеба за последние пять месяцев, но не раньше начала года. В данном случае нужна средняя цена с промежутка 01.01.2011 по 03.03.2011. Допустим получили = 1,5 руб.

Т.о. при проведении в регистр хлеб упадет стоимостью = 1,5 руб. Все остальное как и предполагалось.
Далее. Общаяя стоимость по чеку получилась = 1,5 + 5 + 4 = 10,5 руб. Допустим, что у этого клиента 4-я и 5-я цифры ИНН равны ПЯТЬ и НОЛЬ соответственно. Т.е. клент еще попал и на 50-ти процентную скидку.
Итого он платит: 10,5 * 50% = 5,25 руб.
Со сжатыми губами

вот... не знаю, понял ли кто-нибудь поток моего бессознательного )

кто как подошел бы к тестированию этого "нового" функционала?
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #10 - 24. Ноября 2011 :: 20:21
Печать  
JohnyDeath писал(а) 24. Ноября 2011 :: 19:27:
lustin писал(а) 24. Ноября 2011 :: 17:55:
...
P.S.S.S. Непонятно написал.... Торопился.


вот... не знаю, понял ли кто-нибудь поток моего бессознательного )


оффТопик: несколько раз перечитал задачу, по тестированию попробую ниже описать чуть позже, но не мог не удержаться и не сказать вначале

"вот это у тебя комерцы отжигают"  Озадачен

P.S. Видимо для примеров тестов нужно какую-то тему/подфорум задать, а то придет fez и выскажет нам всем...
« Последняя редакция: 24. Ноября 2011 :: 21:48 - lustin »  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #11 - 25. Ноября 2011 :: 04:14
Печать  
Я вообще с торговлей не связан, это просто фантазия разыгралась  Улыбка
Да, отдельную тему можно, но боюсь, что туда никто не зайдет.
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #12 - 25. Ноября 2011 :: 04:26
Печать  
JohnyDeath писал(а) 24. Ноября 2011 :: 19:27:
Вопрос ко всем использующим инструменты автотестирования. С чего вы начинали? Как бы так въехать, чтоб не наступать на грабли и не изобретать велосипедов.


Дык, с теории начинали.
Вот, например, этот сайт оказался для меня очень полезен: http://software-testing.ru.

  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #13 - 25. Ноября 2011 :: 04:45
Печать  
Вот мой шаблон для создания любой обработки, основанной на тестировании.
Цитата:
// основная процедура для юнит-тестирования SnowTest
Функция ПолучитьСписокТестов() Экспорт
     Результат = Я_Тест.Новый_НаборТестов();
     
     Я_Тест.НаборТестов_Добавить(Результат, "Тесты_<?>");
     
     Возврат Результат;
КонецФункции

// ======================= ======================= ======================= =======================
//
// БЛОК ЮНИТ-ТЕСТОВ - сами тесты
//
// ======================= ======================= ======================= =======================

Процедура Тесты_() Экспорт
КонецПроцедуры

// ======================= ======================= ======================= =======================
//
// КОНЕЦ БЛОКА ЮНИТ-ТЕСТОВ
//
// ======================= ======================= ======================= =======================
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #14 - 25. Ноября 2011 :: 04:47
Печать  
Вот простейший код для тестирования, который упадет.
Этот код помещаем в обработку, сохраняем ее.
Далее в Предприятии запускаем ЗапускТестов.epf и выбираем папку, в которой сохранили обработку.
Получаем пакет из 2-х тестов.
Нажимаем Выполнить, получаем один упавший тест и один прошедший тест.
Все просто
Цитата:
// основная процедура для юнит-тестирования SnowTest
Функция ПолучитьСписокТестов() Экспорт
     Результат = Я_Тест.Новый_НаборТестов();
     
     Я_Тест.НаборТестов_Добавить(Результат, "Тесты_Падает");
     Я_Тест.НаборТестов_Добавить(Результат, "Тесты_Успешно");
     
     Возврат Результат;
КонецФункции

Функция Получить(исходныеДанные) Экспорт
 Возврат исходныеДанные * 10;
КонецФункции

// ======================= ======================= ======================= =======================
//
// БЛОК ЮНИТ-ТЕСТОВ - сами тесты
//
// ======================= ======================= ======================= =======================

Процедура Тесты_Падает() Экспорт
 исходныеДанные = 1;
 Я_Тест.ПроверитьРавенство(ЭтотОбъект.Получить(исходныеДанные), 11, "описание ЭтотОбъект.Получить() == 11");
КонецПроцедуры

Процедура Тесты_Успешно() Экспорт
 исходныеДанные = 2;
 Я_Тест.ПроверитьРавенство(ЭтотОбъект.Получить(исходныеДанные), 20, "описание ЭтотОбъект.Получить() == 20");
КонецПроцедуры

// ======================= ======================= ======================= =======================
//
// КОНЕЦ БЛОКА ЮНИТ-ТЕСТОВ
//
// ======================= ======================= ======================= =======================

  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #15 - 25. Ноября 2011 :: 05:31
Печать  
С этим куском кода вопросов стало еще больше )
Как он вообще выполняется и сохраняется без ошибок? Как я понял, этот код надо поместить в модуль объекта новой обработки. Если да, то:
1) Что такое "Я_Тест"? Это общий модуль, который надо добавить в конфу?
2)
Код
Выбрать все
ЭтотОбъект.Получить(исходныеДанные) 


У объекта "обработка" нет метода "Получить"
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #16 - 25. Ноября 2011 :: 05:41
Печать  
Жень, ты вообще инструкцию по сабжу не читал чтоли? Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #17 - 25. Ноября 2011 :: 05:42
Печать  
JohnyDeath писал(а) 25. Ноября 2011 :: 05:31:
С этим куском кода вопросов стало еще больше )
Как он вообще выполняется и сохраняется без ошибок? Как я понял, этот код надо поместить в модуль объекта новой обработки. Если да, то:
1) Что такое "Я_Тест"? Это общий модуль, который надо добавить в конфу?
2)
Код
Выбрать все
ЭтотОбъект.Получить(исходныеДанные) 


У объекта "обработка" нет метода "Получить"

Вышенаписанный код точно работает.
Вот тебе как раз задача заставить его заработать Улыбка
Настоящая задача для TDD - разработка через тестирование
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #18 - 25. Ноября 2011 :: 05:45
Печать  
JohnyDeath писал(а) 25. Ноября 2011 :: 05:31:
Код
Выбрать все
ЭтотОбъект.Получить(исходныеДанные) 


У объекта "обработка" нет метода "Получить"

А мой код
Функция Получить(исходныеДанные) Экспорт
ни о чем тебе не говорит? Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #19 - 25. Ноября 2011 :: 06:26
Печать  
ОК, щас буду пробовать прикрутить. Спасибо.
А вот как, например, сверить наборы записей регистров после проведения определенного документа?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #20 - 25. Ноября 2011 :: 06:36
Печать  
artbear писал(а) 25. Ноября 2011 :: 05:41:
Жень, ты вообще инструкцию по сабжу не читал чтоли? Улыбка

А она существует? Я поэтому и задаю здесь порой тупые вопросы, потому как не понимаю с какого угла зайти.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #21 - 25. Ноября 2011 :: 06:37
Печать  
JohnyDeath писал(а) 25. Ноября 2011 :: 06:26:
ОК, щас буду пробовать прикрутить. Спасибо.
А вот как, например, сверить наборы записей регистров после проведения определенного документа?

Как всегда, есть несколько вариантов.
Можно тупо:
в транзакции (в тестах SnowTest они автоматом делаются)
до проведения сохраняем движения в ТЗ
проводим док
после проведения сохраняем движения в другую ТЗ
отменяем транзакцию (в тестах SnowTest это автоматом делается)
далее сверяем обе ТЗ.
Код сравнения могу дать (вытащить из своего Functest.v8)
Можно сверить какие-то нужные итоги по движения, например. итоги по ресурсам регистра.
Можно вообще юзать запросы с какими-то итоговыми данными
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #22 - 25. Ноября 2011 :: 06:39
Печать  
JohnyDeath писал(а) 25. Ноября 2011 :: 06:36:
artbear писал(а) 25. Ноября 2011 :: 05:41:
Жень, ты вообще инструкцию по сабжу не читал чтоли? Улыбка

А она существует? Я поэтому и задаю здесь порой тупые вопросы, потому как не понимаю с какого угла зайти.

Самый первый пост исходной ветки - кратенько Федор описал Улыбка
http://www.1cpp.ru/forum/YaBB.pl?num=1267016427/0#0
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #23 - 25. Ноября 2011 :: 06:49
Печать  
artbear писал(а) 25. Ноября 2011 :: 06:37:
JohnyDeath писал(а) 25. Ноября 2011 :: 06:26:
ОК, щас буду пробовать прикрутить. Спасибо.
А вот как, например, сверить наборы записей регистров после проведения определенного документа?

Как всегда, есть несколько вариантов.
Можно тупо:
в транзакции (в тестах SnowTest они автоматом делаются)
до проведения сохраняем движения в ТЗ
проводим док
после проведения сохраняем движения в другую ТЗ
отменяем транзакцию (в тестах SnowTest это автоматом делается)
далее сверяем обе ТЗ.
Код сравнения могу дать (вытащить из своего Functest.v8)
Можно сверить какие-то нужные итоги по движения, например. итоги по ресурсам регистра.
Можно вообще юзать запросы с какими-то итоговыми данными

А, например, такой вариант возможен:
Я ожидаю, что после проведения документа в Регистрах Остатки и Взаиморасчеты будут такие-то движения и такие-то итоги. Всё это дело я рисую в мокселе (или еще где-то). Далее тесты после проведения этого документа сверяют движения и итоги в базе с моими ожидаемыми из файла.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Автоматическое тестирование 1С 8. С чего начать.
Ответ #24 - 25. Ноября 2011 :: 10:43
Печать  
Пока такой реализации в SnowTest нету, подобная схема возможна в моем Functest.v8
Это уже вопрос сервисных функций и системы тестирования.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kuntashov
Full Member
***
Отсутствует


1С:Специалист

Сообщений: 130
Местоположение: Саратов
Зарегистрирован: 13. Июня 2006
Пол: Мужской
Re: Для затравки. Юниттестирование на восьмерке. Очень сырой драфт.
Ответ #25 - 16. Декабря 2011 :: 05:13
Печать  
JohnyDeath писал(а) 24. Ноября 2011 :: 12:36:
Я так понимаю тестирование форм (нажатие определенных кнопок, выбор определенных элементов, т.е. эмуляция интерактива) невозможна в принципе. И оттестировать можно как бы только "код".


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

В ознакомительной версии распространялась свободно, но в один прекрасный момент они включили "Сценарное тестирование" в 1С:Корпоративный инструментальный пакет, и соответственно, теперь за это надо платить деньги.

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

Да и сама разработка своим появлением очень удивила.

Но на сегодня она работает только для Обычного приложения. С управляемыми формами, видимо, через SendKeys управляться сложнее что ли.
  

С уважением, &&Александр Кунташов&&http://kuntashov.ru/
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать