Программист. с чего начать?

User avatar
stenking
Уже с Приветом
Posts: 14407
Joined: 26 May 2006 02:39

Re: Программист. с чего начать?

Post by stenking »

crypto5 wrote:
dotcom wrote:
crypto5 wrote: Как уже неоднократно писали user interaction и работа с сетью легко эмулируется, чем больше вы покроете таких кейсов тем качественнее ваши тесты.
Я бы не горячился по поводу "легко".
Приведите пример когда тяжело?
Ну вот например в том примере что я приводил ( а это довольно стандарт ) используется

1. http://imperavi.com/redactor/

2. http://ivaynberg.github.io/select2/ с тагами и подсказками через аджакс.

3. Добавление новых полей ( add new )

4. Флеш загрузка файлов.

Можно конечно просто сделать самбит полей но это даст вам иллюзию что форма работает.
Бога нет.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Программист. с чего начать?

Post by crypto5 »

dup
Last edited by crypto5 on 02 Jun 2013 05:51, edited 1 time in total.
In vino Veritas!
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Программист. с чего начать?

Post by crypto5 »

dotcom wrote:
crypto5 wrote: Приведите пример когда тяжело?
Я работал на системой Video Quality Monitoring'а. Свит для тестов у нас по сложности был примерно равен production инфраструктуре. Качество надо было мониторить на клиенте и на сервере одновременно. Свой собственный UI, логгер, бэкенд с тестовыми хуками, трафик шейпер, свой собственный VPN с симуляцией разных сетевых конфигураций, мегабайты тестовых пакетов, видео файлов разных форматов, клиентов под все платформы... Все только для тестов. Это не unit, а system/integration testing, но mocking UI и сети там был совсем непростой и, я бы сказал, мучительный.
В разработке мобильного UI тоже не все так просто. Простые формочки без навороченной навигации смокировать не так сложно. Динамические интерфейсы с анимацией, OGL компонентами... - good luck.
Это к сожалению абстрактные примеры, и похоже что проблемы возникали из-за архитектурной сложности кода, поэтому тяжело понять, процесс упирался в прямоту рук или все таки какую то технологическую проблему.
In vino Veritas!
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Программист. с чего начать?

Post by crypto5 »

stenking wrote:
crypto5 wrote:
dotcom wrote:
crypto5 wrote: Как уже неоднократно писали user interaction и работа с сетью легко эмулируется, чем больше вы покроете таких кейсов тем качественнее ваши тесты.
Я бы не горячился по поводу "легко".
Приведите пример когда тяжело?
Ну вот например в том примере что я приводил ( а это довольно стандарт ) используется

1. http://imperavi.com/redactor/

2. http://ivaynberg.github.io/select2/ с тагами и подсказками через аджакс.

3. Добавление новых полей ( add new )

4. Флеш загрузка файлов.

Можно конечно просто сделать самбит полей но это даст вам иллюзию что форма работает.
Попозже посмотрю или селениум способен такое проглотить
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

Boriskin wrote:Может проще работать чуть качественне, чтобы просто не делать тривиальных ошибок? :wink:
Да-да. Кодировать так, чтобы не было багов. Звучит заманчиво, конечно...
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

АццкоМото wrote: А вот в правильных командах собирается статистика, изменения в каких местах потенциально ломают какую функциональность. Причем не только на уровне файлов, но и на уровне функций в них. Тулзом, автоматизированно. И если выходит новая метка, в которой 50 коммитов, ТУЛЗА аггрегирует эти данные и рекомендует, что тестировать. А тестеры еще и смотрят в описание коммитов - подробные, а не разгильдяйские и примерно прикидывают, что ЕЩЕ могло сломаться если корявые ручки кодеров меняли такую-то функциональность.
По сравнению с тупенькими юнит-тестами, это rocket science
Ну видишь - только наверняка это очень дорого выходит. А покрыть код юнит тестами - это золотая середина между ценой/трудоемкостью процесса (написание юнит тестов) и предотвращением того, что добавится новый баг или сломается старая функциональность.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Программист. с чего начать?

Post by Мальчик-Одуванчик »

stenking wrote: QA смотрит что поменялось с коммита ХХХХХХХХХХХХХХ по сегодня и старается понять где это всё используется. Если видит что поменялась функция "сожрать яблоко" то делает поиск по коду что бы посмотреть где она используется. Если логика в файле то тестирует эту функциональность. Если css то смотрит как оно с изменениями. Т.е. всё ноу хау оказалось в том что бы писать нормальные имена и комментами обяснять что это делает и показать QA как пользоватся гит хабом и как там комментировать :)
oxrenet! I eto vsego za 20 baksov v chas?
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Программист. с чего начать?

Post by dotcom »

crypto5 wrote: Это к сожалению абстрактные примеры, и похоже что проблемы возникали из-за архитектурной сложности кода, поэтому тяжело понять, процесс упирался в прямоту рук или все таки какую то технологическую проблему.
Это конкретный пример. Сам свит, кстати, разрабатывался изначально профессором из Berkeley, который сам пишет cтатьи по тестированию, и он в ваш Гугль ходил читать лекции тоже. :D Архитектурные кривости, конечно, были, не без этого. Но это отдельный разговор. Во-первых, там большой объем тестовых данных, которые надо тщательно собрать. Кстати, реальная проблема для unit и любых других тестов network'а. Во-вторых, сам environment, включающий кучу компонентов, работающих вместе. Система сложная. В-третьих, UI с тестовыми видое плеерами с кучей хуков и навороченным timing'ом. Такой видео плеер надо сесть и написать. Простого там ничего не было.
Пример с OGL еще более конкретный. Найдите мне mocked компоненты под OGL. Ага?
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

dotcom wrote:[Пример с OGL еще более конкретный. Найдите мне mocked компоненты под OGL. Ага?
Для таких вещей как OpenGL не нужны mock компоненты. А вот использовать какой-нибудь Андроидовский monkeyrunner (ну или аналогичные инструменты), где заскриптовать нажатия кнопок и использовать встроенную функциональность для сравнения скриншотов - самое оно. Аналогично, если тестируется какая-то функциональность по рендерингу твоего OpenGL, то точно так же делается - запускается тест, где рендерятся компоненты в различных конфигурациях и автоматизируется процесс сравнения скриншотов для этих компонент. По крайней мере потом видно, что если при сравнении скриншотов вылетит ошибка, то что-то в рендеринге изменилось.
Ес-но никто не пытается довести тестирование до абсурда и ес-ли юнит тесты очень сложно имплементировать для какого-то компонента - то скорее всего это и не нужно делать. Но вот покрыть по максимуму все остальное - очень даже полезно.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

Мальчик-Одуванчик wrote:
stenking wrote: QA смотрит что поменялось с коммита ХХХХХХХХХХХХХХ по сегодня и старается понять где это всё используется. Если видит что поменялась функция "сожрать яблоко" то делает поиск по коду что бы посмотреть где она используется. Если логика в файле то тестирует эту функциональность. Если css то смотрит как оно с изменениями. Т.е. всё ноу хау оказалось в том что бы писать нормальные имена и комментами обяснять что это делает и показать QA как пользоватся гит хабом и как там комментировать :)
oxrenet! I eto vsego za 20 baksov v chas?
Меня удивило другое, что таким толковым QA нужно обьяснять и показывать, как пользоваться github :)
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Программист. с чего начать?

Post by dotcom »

Интеррапт wrote:запускается тест, где рендерятся компоненты в различных конфигурациях и автоматизируется процесс сравнения скриншотов для этих компонент. По крайней мере потом видно, что если при сравнении скриншотов вылетит ошибка, то что-то в рендеринге изменилось.
Направление понятно. Вопрос был про простоту.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

dotcom wrote:
Интеррапт wrote:запускается тест, где рендерятся компоненты в различных конфигурациях и автоматизируется процесс сравнения скриншотов для этих компонент. По крайней мере потом видно, что если при сравнении скриншотов вылетит ошибка, то что-то в рендеринге изменилось.
Направление там понятно. Вопрос был про простоту.
Ну в данном случае, когда нужно сравнить, что рендерится одно и то же после внесения изменений - то это довольно просто.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Программист. с чего начать?

Post by crypto5 »

dotcom wrote:
Интеррапт wrote:запускается тест, где рендерятся компоненты в различных конфигурациях и автоматизируется процесс сравнения скриншотов для этих компонент. По крайней мере потом видно, что если при сравнении скриншотов вылетит ошибка, то что-то в рендеринге изменилось.
Направление там понятно. Вопрос был про простоту.
Если заменить сравнение скриншотов на чекание каких то состояний программы и вызов моков API OGL то возможно простота присутствует?
Ну и речь шла про простоту эмуляции ползовательского ввода, вроде ж как поднимаемая задача?
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

crypto5 wrote: Если заменить сравнение скриншотов на чекание каких то состояний программы и вызов моков API OGL то возможно простота присутствует?
Так даже сравнению скриншотов - это штатная функция в том же monkeyrunner (причем можно указывать конкретные регионы экрана или конкретные компоненты, а если нужно, то указывать в процентном отношении - насколько скриншоты могут не совпадать). Так что тоже очень простая функциональность. Налепил скриншоты для разных компонент (опять же используя штатные функции) и дальше все это автоматизируется несколькими строчками кода.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Программист. с чего начать?

Post by crypto5 »

Интеррапт wrote:
crypto5 wrote: Если заменить сравнение скриншотов на чекание каких то состояний программы и вызов моков API OGL то возможно простота присутствует?
Так даже сравнению скриншотов - это штатная функция в том же monkeyrunner (при чем можно указывать конкретные регионы или конкретные компоненты, а также даже в процентном отношении - насколько скриншоты могут не совпадать). Так что тоже очень простая функциональность. Налепил скриншоты для разных компонент (опять же используя штатные функции) и дальше все это автоматизируется несколькими строчками кода.
Мне такой подход не нравится потому что на каждое изменение в УИ не относящееся к тематике теста нужно перегенерить все скриншоты.
In vino Veritas!
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Программист. с чего начать?

Post by dotcom »

crypto5 wrote: Ну и речь шла про простоту эмуляции ползовательского ввода, вроде ж как поднимаемая задача?
Тут не спорю. Это просто. Сложнее потом проверить вывод.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Программист. с чего начать?

Post by dotcom »

Интеррапт wrote:Так что тоже очень простая функциональность. Налепил скриншоты для разных компонент (опять же используя штатные функции) и дальше все это автоматизируется несколькими строчками кода.
Monkeyrunner не пользовался, но почему-то люди его больше ругают, могу уточнить почему. В iOS проекте мы в одном проекте начали Automation, но там пока только самое элементарное тестируется.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

crypto5 wrote: Мне такой подход не нравится потому что на каждое изменение в УИ не относящееся к тематике теста нужно перегенерить все скриншоты.
А с custom UI (где отрисовываешь собственные компоненты) - по другому сложно что-то придумать. И не нужно все скриношты заново генерить, только те, которые планово изменились и только для отдельных компонент (а не для всех экранов, где используется эта компонента). Так что вполне нормальный подход, Гугл не зря эту функциональность добавил в андроидовский monkeyrunner.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Программист. с чего начать?

Post by Интеррапт »

dotcom wrote:
Интеррапт wrote:Так что тоже очень простая функциональность. Налепил скриншоты для разных компонент (опять же используя штатные функции) и дальше все это автоматизируется несколькими строчками кода.
Monkeyrunner не пользовался, но почему-то люди его больше ругают, могу уточнить почему. В iOS проекте мы в одном проекте начали Automation, но там пока только самое элементарное тестируется.
Monkeyrunner - это один из примеров. Для Андроид и iOS вот этот проектик набирает популярность:
http://appium.io/

К тому же там интеграция с selenium есть (WebDriver протокол поддерживается), а также с другими сторонними инструментами.
Но честно скажу, что я только-только с ним начал разбираться, так что никаких конкретных оценок от меня пока не будет.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Программист. с чего начать?

Post by dotcom »

Не видел его раньше. Спасибо. Посмотрю.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Программист. с чего начать?

Post by АццкоМото »

Интеррапт wrote: Так даже сравнению скриншотов - это штатная функция в том же monkeyrunner (причем можно указывать конкретные регионы экрана или конкретные компоненты, а если нужно, то указывать в процентном отношении - насколько скриншоты могут не совпадать). Так что тоже очень простая функциональность. Налепил скриншоты для разных компонент (опять же используя штатные функции) и дальше все это автоматизируется несколькими строчками кода.
Я напоминаю, что юнит-тесты пишутся до кода. Откуда возьмутся скриншоты?
Вся эта возня с манкираннером и скриншотами ВООБЩЕ никакого отношения к юнит-тестированию не имеет
Мат на форуме запрещен, блдж!
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Программист. с чего начать?

Post by АццкоМото »

crypto5 wrote: Как уже неоднократно писали user interaction и работа с сетью легко эмулируется, чем больше вы покроете таких кейсов тем качественнее ваши тесты.
На форуме любую чушь пишут неоднократно. В некоторых случаях действительно что-то легко эмулируется, но жизнь как правило сильно сложнее
Мат на форуме запрещен, блдж!
User avatar
Boriskin
Уже с Приветом
Posts: 18862
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Программист. с чего начать?

Post by Boriskin »

Интеррапт wrote:
Boriskin wrote:Может проще работать чуть качественне, чтобы просто не делать тривиальных ошибок? :wink:
Да-да. Кодировать так, чтобы не было багов. Звучит заманчиво, конечно...
Баги будут всегда, особенно в системах больших размеров и высокой сложности, но большую часть банальных багов действительно можно тупо "не написать".
Тупизна как Энтропия. Неумолимо растет.
User avatar
Ljolja
Уже с Приветом
Posts: 2924
Joined: 01 Apr 2004 04:22

Re: Программист. с чего начать?

Post by Ljolja »

crypto5 wrote:
Ljolja wrote: свое врема нужно економить не за чей-нибудь счет, а путем правильной архитектуры проекта :oops:
т.е. раньше ты сначала писал абы что, а потом задумывался (и задумывалсйа ли) о спецификации и ожиданиях от того или иного метода? :roll:
п.с. опять про код, нет что бы о жизнеутверждаюшем :(
Может пример какой накарябается для ликбеза студентов?
по поводу архитектуры или жизнеутверждаюшего :-) ? Пчему-то мне кажется, что Вас больше архитектура интересует.
1. Прежде чем что-то писать, сесть и немножко подумать:
а) ultimate goal (что приложение должно делать, чего в рамках етого проекта предполагатся достичь)
б) какие шаги А,Б,Ц нужно предпринять
ц) деление на простое и сложное
д) в чем возникнут сложности
2. Оценка имеюшихся ресурсов (люди, их знания, ентузиазм и способность к обучению), имеюшиеся готовые или полу-готовые решения, кот. м-но задействовать (frameworks в класическом смысле), известные технологии кот. м-но использовать (библиотеки)
3. Как лучше всего разруливать сложности
4. делается обший spec, распределение ролей и пр.
...
смотрим на разницу м/у желаемым и действительным, производим соответствуюший adjustment
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
User avatar
Ljolja
Уже с Приветом
Posts: 2924
Joined: 01 Apr 2004 04:22

Re: Программист. с чего начать?

Post by Ljolja »

Boriskin wrote:
Интеррапт wrote:
Boriskin wrote:Может проще работать чуть качественне, чтобы просто не делать тривиальных ошибок? :wink:
Да-да. Кодировать так, чтобы не было багов. Звучит заманчиво, конечно...
Баги будут всегда, особенно в системах больших размеров и высокой сложности, но большую часть банальных багов действительно можно тупо "не написать".
Boriskin, посмотрите на ето чуть с другой точки зрения. К вам на проект пришел новый человек, вы его совсем не знаете, может он "индус". имхо слишком самонадеяно с самого начала предполагать, что он будет сильно напрягаться на вашем проекте, может будет просто писать, как рука легла на клавиатуру. Вам хочется потом тыкать его носом в возникшие баги (common you're a nice guy and excellent team player :D ), так пусть уж лучше пишет унит тесты и система ему сразу просигналит где и что надо подпилить :wink:
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)

Return to “Работа и Карьера в IT”