Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Kotlin
в автоматизации
тестирования
первые впечатления
О себе Андрей
Хверось
Test Automation Team Lead
At EPAM Systems
5+ years in Test Automation
Java
Leader
ship
Sauce
LabsLin...
О чём пойдёт речь
• Почему мы обратили внимание на Kotlin
• Где мы его попробовали
• Что из этого получилось
• Какие вывод...
Сложность проектов
растёт
Решения на уровне
архитектуры
• 481 stars at
GitHub
• 47 questions at
StackOverflow
• 16 publications
at HabraHabr
• 1946 ...
Решение на уровне
языка?
С чем едят Kotlin
Statically typed programming language
for the JVM, Android and the browser
Kotlin: второй язык
разработки под Android!
Интерес мира к Kotlin:
строки кода на GitHub
(март 2017)
10 million lines in 8K+ repositories
Интерес мира к Kotlin:
запросы в Google
(на март 2017)
Мировое сообщество
6.4k+
Уже используется
лидерами индустрии
Сообщество в EPAM
• 3+ production проекта (Mobile, Backend)
• 5 tech talk-ов в 2016 году (ежемесячные
встречи в этом)
• 15...
А что есть в Kotlin
чего нет в Java?
• Data classes
• Smart casts
• Null safety
• Extension functions
• String templates (...
Как мы пробовали
Kotlin?
• Web UI tests – senior QE
• Web Services tests – senior QE
• Web UI tests – junior QE
• Web Serv...
Библиотеки на Kotlin
для тестирования
Data classes
public class Person {
final String firstName;
final String lastName;
public JavaPerson(...) {
...
}
// Getter...
Optional method parameters
class Account {
void update (String email,
String fBiD, Boolean active){
…
}
void update (Strin...
Smart casts
if (expr instanceof Number) {
System.out.println((Number)expr).getValue());
}
if (expr is Number) {
println(ex...
Types inference
final AccessDeniedException myExceptionInst = new
AccessDeniedException(“Msg");
val myExceptionInst = Acce...
Null safety
var a: String = "abc“
// compilation error
a = null
// will never fail
val l = a.length
----------------------...
Extensions
fun <T : BasePage> WebDriver.open(page: KClass<T>): T {
waitForPageOpened(page)
return HtmlElementLoader.create...
String patterns
val myWord: String = "Test"
println("Length of word '$myWord' is ${myWord.length}")
No checked exceptions
val a: Int? = try {
parseInt(input)
} catch (e: NumberFormatException) {
null
}
workaround
‘try’ ret...
Our DriverManager
Выводы: где косяки?
• Пересечение Java-Kotlin (null safety issue)
• Сложно тем кто в первый раз видит код
• Сырой плагин д...
Выводы: что хорошо?
• 100% совместимость с Java
• Отличная работа в Intellij IDEA
без плагинов
• Быстрое изучение самостоя...
Совместимость с Java
• Можно использовать любые Java-
библиотеки
• Можно создать проект с Java и Kotlin
кодом
• Даже есть ...
Написание кода в
IntelliJ IDEA
Изучение: результаты
эксперимента
Изучение: результаты
эксперимента
Изучение: результаты
эксперимента
Демо Web и UI тесты с нуля
• Junior-ы : за 20 часов (70% времени на
изучение Kotlin)
• S...
Выводы: что с этим
делать?
• Может сократить время на поддержку
кода фреймворков с большим Business и
Test Layers
• Риски ...
Вопросы
Полезные ссылки
• Kotlin Programming language official site:
http://kotlinlang.org
• Kotlin Koans
https://kotlinlang.org/d...
Kotlin в
автоматизации
тестирования
Андрей Хверось,
май 2017 года
You’ve finished this document.
Download and read it offline.
Upcoming SlideShare
What to Upload to SlideShare
Next
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

Share

. Kotlin для Автоматизации тестирования – первые впечатления

Download to read offline

. Kotlin для Автоматизации тестирования – первые впечатления

Related Books

Free with a 30 day trial from Scribd

See all

. Kotlin для Автоматизации тестирования – первые впечатления

  1. 1. Kotlin в автоматизации тестирования первые впечатления
  2. 2. О себе Андрей Хверось Test Automation Team Lead At EPAM Systems 5+ years in Test Automation Java Leader ship Sauce LabsLinkedIn: andreikhveras
  3. 3. О чём пойдёт речь • Почему мы обратили внимание на Kotlin • Где мы его попробовали • Что из этого получилось • Какие выводы были сделаны
  4. 4. Сложность проектов растёт
  5. 5. Решения на уровне архитектуры • 481 stars at GitHub • 47 questions at StackOverflow • 16 publications at HabraHabr • 1946 stars at GitHub • 458 questions at GitHub • 7 publications at HabraHabr
  6. 6. Решение на уровне языка?
  7. 7. С чем едят Kotlin Statically typed programming language for the JVM, Android and the browser
  8. 8. Kotlin: второй язык разработки под Android!
  9. 9. Интерес мира к Kotlin: строки кода на GitHub (март 2017) 10 million lines in 8K+ repositories
  10. 10. Интерес мира к Kotlin: запросы в Google (на март 2017)
  11. 11. Мировое сообщество 6.4k+
  12. 12. Уже используется лидерами индустрии
  13. 13. Сообщество в EPAM • 3+ production проекта (Mobile, Backend) • 5 tech talk-ов в 2016 году (ежемесячные встречи в этом) • 150+ упоминаний в профайлах сотрудников
  14. 14. А что есть в Kotlin чего нет в Java? • Data classes • Smart casts • Null safety • Extension functions • String templates (easy) • Lambda’s • no checked exceptions • Singletons
  15. 15. Как мы пробовали Kotlin? • Web UI tests – senior QE • Web Services tests – senior QE • Web UI tests – junior QE • Web Services tests – junior QE • Kotlin libs – senior QE
  16. 16. Библиотеки на Kotlin для тестирования
  17. 17. Data classes public class Person { final String firstName; final String lastName; public JavaPerson(...) { ... } // Getters ... // Hashcode / equals ... // toString ... // Egh... } data class Person( val firstName: String, val lastName: String )
  18. 18. Optional method parameters class Account { void update (String email, String fBiD, Boolean active){ … } void update (String email, boolean active){ update (email, “NA”, active) } … } class Account { fun update( email: String, fBiD : String = “NA", active : Boolean = true){ … } } account.update (“a@b.com”) account.update (“a@b.com”, fbId = “john”) account.update (“a@b.com”, fbId = “john”, active = false)
  19. 19. Smart casts if (expr instanceof Number) { System.out.println((Number)expr).getValue()); } if (expr is Number) { println(expr.getValue()); }
  20. 20. Types inference final AccessDeniedException myExceptionInst = new AccessDeniedException(“Msg"); val myExceptionInst = AccessDeniedException(“Msg");
  21. 21. Null safety var a: String = "abc“ // compilation error a = null // will never fail val l = a.length ------------------------- var b: String? = "abc“ b = null // ok // will fail val l = b.length // safe call result = b?.length // safe call if (null!=bd) result = bd.length // quick check for null val l = if (b != null) b.length else -1 // using Elvis operator val l = b?.length ?: -1 // safe casts …
  22. 22. Extensions fun <T : BasePage> WebDriver.open(page: KClass<T>): T { waitForPageOpened(page) return HtmlElementLoader.createPageObject(page.java, this) } ------------------------- driver.open(LoginPage::class)
  23. 23. String patterns val myWord: String = "Test" println("Length of word '$myWord' is ${myWord.length}")
  24. 24. No checked exceptions val a: Int? = try { parseInt(input) } catch (e: NumberFormatException) { null } workaround ‘try’ returns value!
  25. 25. Our DriverManager
  26. 26. Выводы: где косяки? • Пересечение Java-Kotlin (null safety issue) • Сложно тем кто в первый раз видит код • Сырой плагин для Eclipse • Слабее Reflection (w/around: any Kotlin класс может быть сконвертирован в Java класс через .java()) • Конфликты ключевых слов языка с ключевыми словами сторонних библиотек (w/around: используй `косые кавычки`)
  27. 27. Выводы: что хорошо? • 100% совместимость с Java • Отличная работа в Intellij IDEA без плагинов • Быстрое изучение самостоятельно (learning curve 1-4 weeks) • KDoc (поддержка MarkDown)
  28. 28. Совместимость с Java • Можно использовать любые Java- библиотеки • Можно создать проект с Java и Kotlin кодом • Даже есть конвертер Java-Kotlin
  29. 29. Написание кода в IntelliJ IDEA
  30. 30. Изучение: результаты эксперимента
  31. 31. Изучение: результаты эксперимента
  32. 32. Изучение: результаты эксперимента Демо Web и UI тесты с нуля • Junior-ы : за 20 часов (70% времени на изучение Kotlin) • Senior-ы: 12 часов • Самообучение для того чтобы сделать Code Review: 10 часов • Сокращение кода по сравнению с Java: 0- 70%
  33. 33. Выводы: что с этим делать? • Может сократить время на поддержку кода фреймворков с большим Business и Test Layers • Риски минимальны: можно разарабатывать на Kotlin только ту часть кода, где это имеет смысл • Есть демо проекты и отличный online учебник, благодаря которым можно сделать быстрый старт своего фреймворка
  34. 34. Вопросы
  35. 35. Полезные ссылки • Kotlin Programming language official site: http://kotlinlang.org • Kotlin Koans https://kotlinlang.org/docs/tutorials/koans.html • Excuse me, sir, do you have a moment to talk about tests in Kotlin https://www.slideshare.net/leonsabr/excuse-me-sir-do- you-have-a-moment-to-talk-about-tests-in-kotlin
  36. 36. Kotlin в автоматизации тестирования Андрей Хверось, май 2017 года
  • alexsun

    Oct. 29, 2019

. Kotlin для Автоматизации тестирования – первые впечатления

Views

Total views

1,122

On Slideshare

0

From embeds

0

Number of embeds

197

Actions

Downloads

3

Shares

0

Comments

0

Likes

1

×