Тестирование UI без запуска приложения на устройстве
От: kurel  
Дата: 26.01.13 21:17
Оценка:
НА собеседовании однажды меня спрашивали, как бы я написал код, чтобы его можно было тестировать без запуска на реальном устройстве.
Т.е. получается, нужно протестировать, в самом ли деле при нажатии на кнопку надпись текстовой метки стала требуемой. При запуске на реальном устройстве надпись текстовой метки меняется, а при тестировании без запуска на устройстве ведь метки реальной-то нет, но все равно можно как-то проверить, какой точно будет надпись текстовой метки при запуске на реальном устройстве.
Человек, который у меня это спрашивал, работал с .Net, но он мне сказал, что это реализуемо и на Java, и на C++. Это делается для того, чтобы запуск и прохождение большого количества тестов происходили быстро.
Надеюсь понятно объяснил, что я хочу узнать.
По каким ключевым словам искать в гугле информацию об этом? И какие подобные инструменты есть, например, для Android разработчика?
Re: Тестирование UI без запуска приложения на устройстве
От: Nikolay_Ch Россия  
Дата: 26.01.13 21:41
Оценка: 2 (1)
Здравствуйте, kurel, Вы писали:

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

Может имелось ввиду обычное разделение бизнем-логики и пользовательского интерфейса. Т.е. в реальность смотрят не на то, что надпись стала красной, а что был вызван метод, делающий эту надпись красной.
Re[2]: Тестирование UI без запуска приложения на устройстве
От: kurel  
Дата: 29.01.13 22:52
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:
N_C>Может имелось ввиду обычное разделение бизнем-логики и пользовательского интерфейса. Т.е. в реальность смотрят не на то, что надпись стала красной, а что был вызван метод, делающий эту надпись красной.
Может быть. А как тогда проверяется, вызывался ли этот метод.
Допустим имеем метод:
void doSomething() {
    button.setColor(red);
    // etc.
}

как проверить?, что вызывался метод button.setColor() с аргументом red? Ведь не будут же они в коде писать что-то вроде
void doSomething() {
    if (testMode) {
        button.setColor(red);
    } else {
        test.buttonChangeColor(button, red);
    }
}
Re[3]: Тестирование UI без запуска приложения на устройстве
От: dilmah США  
Дата: 29.01.13 23:05
Оценка: 2 (1)
K>как проверить?, что вызывался метод button.setColor() с аргументом red? Ведь не будут же они в коде писать что-то вроде

?может быть http://en.wikipedia.org/wiki/Mock_object

По собственному опыту -- в С++ это приводит к тому что писать код нужно изначально по другому, получается bloated.
Re: Тестирование UI без запуска приложения на устройстве
От: Visor2004  
Дата: 12.06.13 21:26
Оценка:
Здравствуйте, kurel, Вы писали:

имхо, просто у человека очень большие проблемы с формулировкой вопросов, никаких волшебных способов не существует.
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[2]: Тестирование UI без запуска приложения на устройстве
От: kurel  
Дата: 13.06.13 18:41
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Здравствуйте, kurel, Вы писали:


V>имхо, просто у человека очень большие проблемы с формулировкой вопросов, никаких волшебных способов не существует.


ну как бы он мне что-то в Visual Studio показывал, то ли дотнетовское, то ли html, только я мельком глянул.
Возможно он имел ввиду какие-то инструменты, специфичные для .Нет и студии. Но он сказал, что такие способы тестирования могут использоваться независимо от языка\среды (или про большинство языков\сред он говорил). И помню я он даже показал вроде бы код немного. Но он был сильноспецифичный для Сишарп, и я не понял как такое можно использовать в Java или например в С++, а шел я тогда на собеседование android-разработчика. При объяснении этого кода он вроде бы употребил какое-то подмножество из этого множества слов: { "замыкание", "делегат" }
Re: Тестирование UI без запуска приложения на устройстве
От: Jack128  
Дата: 15.06.13 20:30
Оценка: 2 (1)
Здравствуйте, kurel, Вы писали:

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

K>Т.е. получается, нужно протестировать, в самом ли деле при нажатии на кнопку надпись текстовой метки стала требуемой. При запуске на реальном устройстве надпись текстовой метки меняется, а при тестировании без запуска на устройстве ведь метки реальной-то нет, но все равно можно как-то проверить, какой точно будет надпись текстовой метки при запуске на реальном устройстве.
K>Человек, который у меня это спрашивал, работал с .Net, но он мне сказал, что это реализуемо и на Java, и на C++. Это делается для того, чтобы запуск и прохождение большого количества тестов происходили быстро.

ну первое что приходит на ум — это MVVM-паттерн. Но более менее красиво он будет выглядить на языках с рефлексией, ну и ГУИ фреймвоки нужны соответствующие. В реале это дело используется в C# при использовании WPF и в JavaScript (Knockoutjs)
Что там в Java / C++ — не в курсах.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.