Çevik testler

Preview:

Citation preview

Çevik Testler

Buğra Gökalp OkçuUDEMYbugra@udemy.com

09.12.2015

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

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ı

...

Çevik Geliştirme

Analiz

Tasarım

Kodlama

Test

ler

Çalısan Bileşen

Ç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ı

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

○ PHP + Python (Django)

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

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

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

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

master

dal

Birleştirme isteği (PR)

Kod gözden geçirme

Geliştirme AkışıTestler

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

Statik Analizler

● isort● flake8● eslint

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

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

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

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

Test KapsamıTest kapsamı: > %89

Testler kodun ne kadarını kapsıyor?

Uçtan Uca Test Otomasyonu + + +

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

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

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']")

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("testuser@udemy.com"); loginPage.doLogin(); expect(userInfo.isDisplayed()).toBe(true);

İ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ü

İzleme SistemleriYazılım Analitiği

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

(sınıf bazında)

İzleme Sistemleri● Munin

○ Altyapı, ağ ve sistem seviyesinde izleme

Son

Teşekkürler.

Recommended