Çevik testler
- 2. 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
- 5. Çevik Testler
Birim Testleri
Birim Entegrasyon Testleri
Uçtan Uca Testler
(Arayüz Testleri)
Kabul Testleri
Elle Test
MühendisMühendis+
Ürün
Sorumlusu
● 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ı
- 6. Udemy
● ~ 70 Mühendis
● Web Uygulaması: 2 depo
○ PHP + Python (Django)
● SCRUM - 2 haftalık Sprint:
○ ~290 yayın (python) + ~65 yayın (php)
- 7. Udemy Web Uygulaması / udemy.com
● Arka uç: PHP + Python (Django)
● Ön uç: Angular, Jquery, HandlebarsJS, ...
- 11. 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
Birimt.
JSbirimt.
flake8,isort
eslint
entegrasyon testleri
- 12. CI + Github
● Birleştirme İsteği:
○ Test sonuçları, kapsam raporu (codecov.io)
○ Güncel kod kapsamı: % 89
- 14. Uçtan Uca Test Otomasyonu
+ + +
● ~100 test
● Yerel ya da Saucelabs üzerinden
● ~30 dk ya da paralel çalışarak ~10 dk
- 15. 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
- 16. Uçtan Uca Testler
data- ö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>
//JS
element(By.css("[data-purpose='course-title']"));
İki farklı eleman,
Tek seçici !
#python
driver.find_element_by_css_selector("[data-purpose='course-title']")
#ya da
driver.find_element(By.CSS_SELECTOR, "[data-purpose='course-title']")
- 17. 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);
- 18. İ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 ise
uyar.
Uyarı kanalları:
○ Hipchat, e-mail,
İşler iyi gitmedi ve bir şekilde hata, üretim ortamına düştü