çevik testler

21
Çevik Testler Buğra Gökalp Okçu UDEMY [email protected] 09.12.2015

Upload: bugra-gokalp-okcu

Post on 13-Jan-2017

97 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Çevik testler

Çevik Testler

Buğra Gökalp Okç[email protected]

09.12.2015

Page 2: Çevik testler

Ajanda● Geleneksel Geliştirme Yaklaşımı● Çevik Geliştirme ve Çevik Testler● Udemy’de Çevik Geliştirme ve Testler

○ Geliştirme Akışı○ CI & Github○ Testler○ İzleme Sistemleri

Page 3: Çevik testler

Geleneksel Geliştirme Yaklaşımı Gereksinim

hazırlama

Tasarım

Kodlama

Test hazırlık / güncelleme

Kalite birimi gözden geçirmesi

İlgili güncelleme

Test koşumu

TestTest Raporu

Durum toplantısı

...

Page 4: Çevik testler

Çevik Geliştirme

Analiz

Tasarım

Kodlama

Test

ler

Çalısan Bileşen

Page 5: Çevik testler

Çevik Testler

Birim Testleri

Birim Entegrasyon Testleri

Uçtan Uca Testler(Arayüz Testleri)

Kabul Testleri

Elle Test

Müh

endi

sM

ühen

dis

+ Ü

rün

Sor

umlu

su● Geleneksel yaklaşım: Hata bulmak / yakalamak. Çevik yaklaşım: Hata engellemek!

● Geleneksel yaklaşım: Test kendi başına bir süreçÇevik yaklaşım: Test baştan itibaren geliştirme sürecinin bir parçası

Page 6: Çevik testler

Udemy● ~ 70 Mühendis● Web Uygulaması: 2 depo

○ PHP + Python (Django)

● SCRUM - 2 haftalık Sprint:○ ~290 yayın (python) + ~65 yayın (php)

Page 7: Çevik testler

Udemy Web Uygulaması / udemy.com● Arka uç: PHP + Python (Django)

● Ön uç: Angular, Jquery, HandlebarsJS, ...

Page 8: Çevik testler

Geliştirme Akışı Github Akışı

master

dal

Birleştirme isteği (PR)

Kod gözden geçirme

Page 9: Çevik testler

Geliştirme AkışıTestler

● Birim testleri● Birim Entegrasyon Testleri● Uçtan Uca Testler

Statik Analizler

● isort● flake8● eslint

Page 10: Çevik testler

Geliştirme Akışı

Kodlama

Workspace Local repo

Remote repo

Pull Request

-isort-flake8 -unit tests

- unit tests- integration tests- JS unit tests

local local CI (Circleci)pre-commit pre-push

commit push pull-request

-Peer Code Review

github

Merged Branch

merge

Git hooks

Page 11: Çevik testler

CI

Jenkins● github ile entegre

○ Github PR Builder

● Birim ve entegrasyon testleri -python (django), php, js

Circle CI● Docker tabanlı ortamlar● Paralel testler

● Bağımlılık önbellekleme● Github entegrasyonu

Haziran 2015

Biri

m t.

JS b

irim

t.fla

ke8,

isor

tes

lint entegrasyon testleri

Page 12: Çevik testler

CI + Github● Birleştirme İsteği:

○ Test sonuçları, kapsam raporu (codecov.io)○ Güncel kod kapsamı: % 89

Page 13: Çevik testler

Test KapsamıTest kapsamı: > %89

Testler kodun ne kadarını kapsıyor?

Page 14: Çevik testler

Uçtan Uca Test Otomasyonu + + +

● ~100 test● Yerel ya da Saucelabs üzerinden● ~30 dk ya da paralel çalışarak ~10 dk

Page 15: Çevik testler

Uçtan Uca Testler

Zorlaştırıcı unsurlar

● Farklı şablon sistemleri (PHP şablonları, Django şablonları)● Angular, jquery, handlebars, ...● Aynı işlev, farklı html (A/B Testler)

2 desen

● “Page objects/ Sayfa nesneleri” Deseni● “data-” özellikleri

Page 16: Çevik testler

Uçtan Uca Testlerdata- özellikleri<h1 class="course-title" data-purpose="course-title">Mastering HTML5 Programming - The Easier Way</h1>

<span class="title ellipsis" data-purpose="course-title">Mastering HTML5 Programming - The Easier Way</span>

//JSelement(By.css("[data-purpose='course-title']"));

İki farklı eleman, Tek seçici !

#pythondriver.find_element_by_css_selector("[data-purpose='course-title']")#ya dadriver.find_element(By.CSS_SELECTOR, "[data-purpose='course-title']")

Page 17: Çevik testler

Uçtan Uca Testler Sayfa Nesneleri Deseni

<input type="submit" name="submit" value="Login" class="btn btn-primary btn btn-success" id="submit-id-submit" data-purpose="do-login">

//login-page.js this.doLogin = function() { element(By.purpose("do-login")).click(); };

//login.spec.js loginPage.typeUserName("[email protected]"); loginPage.doLogin(); expect(userInfo.isDisplayed()).toBe(true);

Page 18: Çevik testler

İzleme Sistemleri● Datadog

○ Gerçek zamanlı

izleme sistemi

○ Ölçüt belirle. Örneğin

ortalama sayfa gösterimi,ortalama saatlik satın alım

○ İlgili gösterge,

ölçütü altında iseuyar.

Uyarı kanalları:

○ Hipchat, e-mail,PagerDuty

İşler iyi gitmedi ve bir şekilde hata, üretim ortamına düştü

Page 19: Çevik testler

İzleme SistemleriYazılım Analitiği

● New Relic○ Sorunları daha düşük seviyede gösterir

(sınıf bazında)

Page 20: Çevik testler

İzleme Sistemleri● Munin

○ Altyapı, ağ ve sistem seviyesinde izleme

Page 21: Çevik testler

Son

Teşekkürler.