Upload
bugra-gokalp-okcu
View
96
Download
0
Embed Size (px)
Citation preview
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("[email protected]"); 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.