Açıölçer - İletki İçin Stil Kılavuzu

Bu bölümde, iletki için stil kılavuzu hakkında detaylı bilgi edinelim.

Giriş

Stil kılavuzu, adlı iki yazılım mühendisi tarafından oluşturuldu, Carmen PopoviciuING'de kullanıcı arabirimi mühendisi ve Andres Dominguez, Google'da yazılım mühendisi. Bu nedenle, bu stil kılavuzuna Carmen Popoviciu ve Google'ın iletki için stil kılavuzu da denir.

Bu stil kılavuzu aşağıdaki beş ana noktaya ayrılabilir -

  • Genel kurallar
  • Proje Yapısı
  • Konum belirleme stratejileri
  • Sayfa Nesneleri
  • Test paketleri

Genel Kurallar

Aşağıdakiler, test için iletki kullanırken dikkat edilmesi gereken bazı genel kurallardır -

Daha önce birim test edilmiş olanları uçtan uca test etmeyin

Bu, Carmen ve Andres tarafından verilen ilk genel kuraldır. Zaten test edilmiş olan kod üzerinde e2e testi yapmamamızı önerdiler. Bunun arkasındaki ana sebep, birim testlerinin e2e testlerinden çok daha hızlı olmasıdır. Diğer bir neden de, zamandan tasarruf etmek için yinelenen testlerden kaçınmamız gerektiğidir (hem birim hem de e2e testi yapmayın).

Yalnızca bir yapılandırma dosyası kullanın

Önerilen bir diğer önemli nokta da, sadece bir yapılandırma dosyası kullanmamız gerektiğidir. Test ettiğiniz her ortam için yapılandırma dosyası oluşturmayın. Kullanabilirsinizgrunt-protractor-coverage farklı ortamlar kurmak için.

Testinizde mantık kullanmaktan kaçının

Test senaryolarımızda IF ifadelerini veya FOR döngülerini kullanmaktan kaçınmalıyız çünkü bunu yaparsak test hiçbir şey test etmeden geçebilir veya çok yavaş çalışabilir.

Testi dosya düzeyinde bağımsız yapın

İletki, paylaşım etkinleştirildiğinde testi paralel olarak çalıştırabilir. Bu dosyalar daha sonra farklı tarayıcılarda kullanılabilir olduklarında çalıştırılır. Carmen ve Andres, testin en azından dosya düzeyinde bağımsız olmasını önerdiler çünkü iletki tarafından çalıştırılma sırası belirsizdir ve dahası, tek başına bir test yürütmek oldukça kolaydır.

Proje Yapısı

Açıölçer'in stil rehberi ile ilgili bir diğer önemli kilit nokta, projenizin yapısıdır. Proje yapısı ile ilgili tavsiye aşağıdadır -

Duyarlı bir yapıda el yordamıyla e2e testi

Carmen ve Andres, e2e testlerimizi projenizin yapısına uygun bir yapıda gruplamamızı tavsiye etti. Bu tavsiyenin arkasındaki sebep, dosyaların bulunmasının kolay hale gelmesi ve klasör yapısının daha okunaklı olmasıdır. Bu adım ayrıca e2e testlerini birim testlerinden ayıracaktır. Aşağıdaki türden yapılardan kaçınılması gerektiğini önerdiler -

|-- project-folder
   |-- app
      |-- css
      |-- img
      |-- partials
         home.html
         profile.html
         contacts.html
      |-- js
         |-- controllers
         |-- directives
         |-- services
         app.js
         ...
      index.html
   |-- test
      |-- unit
      |-- e2e
         home-page.js
         home-spec.js
         profile-page.js
         profile-spec.js
         contacts-page.js
         contacts-spec.js

Öte yandan, aşağıdaki türden bir yapı önerdiler:

|-- project-folder
   |-- app
      |-- css
      |-- img
      |-- partials
         home.html
         profile.html
         contacts.html
      |-- js
         |-- controllers
         |-- directives
         |-- services
         app.js
         ...
      index.html
   |-- test
      |-- unit
      |-- e2e
         |-- page-objects
            home-page.js
            profile-page.js
            contacts-page.js
         home-spec.js
         profile-spec.js
         contacts-spec.js

Konum Belirleme Stratejileri

Aşağıdakiler, test için iletki kullanırken dikkat edilmesi gereken bazı konum belirleme stratejileridir -

Asla XPATH kullanmayın

Bu, iletki stili kılavuzunda önerilen ilk konum belirleme stratejileridir. Bunun arkasındaki nedenler, XPath'in çok fazla bakım gerektirmesidir, çünkü işaretleme çok kolay bir şekilde değiştirilebilir. Dahası, XPath ifadeleri en yavaş ve hata ayıklaması çok zordur.

Her zaman by.model ve by.binding gibi iletkiye özel konum belirleyicileri tercih edin

By.model ve by.binding gibi açıölçere özel konum belirleyicileri kısa, spesifik ve okunması kolaydır. Onların yardımıyla yer bulucumuzu da yazmak çok kolay.

Misal

View

<ul class = "red">
   <li>{{color.name}}</li>
   <li>{{color.shade}}</li>
   <li>{{color.code}}</li>
</ul>

<div class = "details">
   <div class = "personal">
      <input ng-model = "person.name">
   </div>
</div>

Yukarıdaki kod için aşağıdakilerden kaçınmanız önerilir -

var nameElement = element.all(by.css('.red li')).get(0);
var personName = element(by.css('.details .personal input'));

Öte yandan, aşağıdakilerin kullanılması önerilir -

var nameElement = element.all(by.css('.red li')).get(0);
var personName = element(by.css('.details .personal input'));
var nameElement = element(by.binding('color.name'));
var personName = element(by.model('person.name'));

Açıölçer bulucu bulunmadığında, by.id ve by.css'yi tercih etmeniz önerilir.

Sık değişen metinler için her zaman metin buluculardan kaçının

By.linkText, by.buttonText ve by.cssContaningText gibi metin tabanlı konumlandırıcılardan kaçınmalıyız çünkü düğmeler, bağlantılar ve etiketler için metinler zaman içinde sıklıkla değişir.

Sayfa Nesneleri

Daha önce tartışıldığı gibi, sayfa nesneleri uygulama sayfamızdaki öğeler hakkında bilgi içerir ve bu nedenle daha temiz test senaryoları yazmamıza yardımcı olur. Sayfa nesnelerinin çok yararlı bir avantajı, birden fazla testte yeniden kullanılabilmeleridir ve uygulamamızın şablonu değiştirilmişse, yalnızca sayfa nesnesini güncellememiz gerekir. Aşağıda, test için iletki kullanırken dikkat edilmesi gereken sayfa nesneleri için bazı öneriler bulunmaktadır -

Test edilen sayfayla etkileşim kurmak için sayfa nesnelerini kullanın

Test edilen sayfadaki öğeyle ilgili bilgileri kapsülleyebildikleri ve yeniden kullanılabilecekleri için test edilen sayfayla etkileşimde bulunmak için sayfa nesnelerinin kullanılması önerilir.

Her zaman dosya başına bir sayfalık nesne bildirin

Her sayfa nesnesini kendi dosyasında tanımlamalıyız çünkü kodu temiz tutar ve bir şeyler bulmak kolaylaşır.

Sayfanın sonunda nesne dosyası her zaman tek bir modül kullanır.

Her sayfa nesnesinin tek bir sınıf bildirmesi önerilir, böylece yalnızca bir sınıfı dışa aktarmamız gerekir. Örneğin, aşağıdaki nesne dosyası kullanımından kaçınılmalıdır -

var UserProfilePage = function() {};
var UserSettingsPage = function() {};
module.exports = UserPropertiesPage;
module.exports = UserSettingsPage;

Ancak diğer yandan, aşağıdakilerin kullanılması önerilir -

/** @constructor */
var UserPropertiesPage = function() {};

module.exports = UserPropertiesPage;

En üstte gerekli tüm modülleri bildirin

Gerekli tüm modülleri sayfa nesnesinin en üstünde beyan etmeliyiz çünkü modül bağımlılıklarını net ve kolay bulunmasını sağlar.

Test paketinin başında tüm sayfa nesnelerinin örneğini oluşturun

Tüm sayfa nesnelerinin test paketinin başında başlatılması önerilir çünkü bu, bağımlılıkları test kodundan ayıracak ve bağımlılıkları paketin tüm spesifikasyonları için kullanılabilir hale getirecektir.

Beklenti () kullanma sayfa nesnelerinde

Beklenti () 'yi sayfa nesnelerinde kullanmamalıyız, yani sayfa nesnelerimizde herhangi bir iddia yapmamalıyız çünkü tüm iddialar test durumlarında yapılmalıdır.

Diğer bir neden de, test okuyucusunun sadece test olaylarını okuyarak uygulamanın davranışını anlayabilmesi gerektiğidir.