top 15 popular specflow interview questions
En Sık Sorulan Specflow Mülakat Soruları ve Cevapları:
Önceki Specflow Eğitimimiz, Test Raporları Nasıl Oluşturulur ve Seçici Testler Nasıl Yürütülür .
Bu eğitimde, yanıtlarıyla birlikte en popüler Specflow Mülakat Sorularına bir göz atacağız.
Baştan sona okuyun Eksiksiz Specflow Eğitim Serisi kavramın kolay anlaşılması için. Specflow, .NET çerçevesinde BDD uygulamalarını destekleyen bir araçtır. GitHub'da barındırılan açık kaynaklı bir çerçevedir. .NET için ATDD (Kabul Testi Sürücü Geliştirme) kullanımına yardımcı olur.
Specflow Mülakat Soruları ve Cevapları
Aşağıda, kolay anlamanız için cevaplar ve örneklerle birlikte en popüler Specflow Mülakat Soruları listelenmiştir.
S # 1) Özellik dosyası ile ciltleme dosyaları arasındaki fark nedir?
Cevap: Specflow'da BDD testleri yazmanın 2 ana bileşeni vardır:
- Özellik Dosyaları: Etki Alanına Özgü Dilde (DSL) Senaryolar olarak yazılan testleri içeren ve projenin tüm paydaşları için uygun ve anlaşılır olan temelde düz İngilizce dosyalar. Gerçekte, bunlar gerçek test dosyalarıdır ve bağlamalar veya adım tanımları aracılığıyla yorumlanırlar.
- Adım Bağlamaları: Bu kod dosyaları, test yürütmenin arkasındaki gerçek zeka mantığıdır. Senaryodaki (özellik dosyasının bir parçası olan) her adım, test çalıştırıldığında gerçekte yürütülen bir Adım tanımlama dosyasına bağlanır.
Bu nedenle, hem Özellik dosyalarının hem de Adım tanımının veya bağlamalarının bir kombinasyonu, Specflow (veya başka herhangi bir BDD) çerçevesinin testleri çalıştırmasını mümkün kılar.
S # 2) BDD nedir ve TDD veya ATDD'den farkı nedir?
Cevap: Tüm bu üç terim, yani BDD, TDD ve ATDD genel olarak bir şekilde Test Odaklı Geliştirme ile ilgilidir, ancak aslında birçok yönden farklıdırlar.
- TDD: TDD temelde geliştiricinin bakış açısından testler oluşturmaktır. Basit bir deyişle, bir geliştiricinin kodunun başarılı olması (veya başarısız olması) için yazdığı bir dizi testtir. Esasen, tüm özel gereksinimler ele alınana kadar kodunuzun başarısız olmasını sağlamak için bir tekniktir. Temel olarak, testlerin tümü yeşil olana kadar kod için bir yeniden düzenleme döngüsünü izler.
- BDD: BDD, TDD ile yakından ilgilidir, ancak “dışarıdan içeriye” bakış açısından daha uygundur, bu da aslında BDD testlerinin iş / ürün gereksinimlerine daha bağlı olduğu ve sistemin istenen davranışını Senaryolar biçiminde tanımladığı anlamına gelir. Buna karşılık TDD, daha ayrıntılı Birim testleri düzeyinde ilgilenir. Ayrıca, BDD spesifikasyonları genellikle anlaşılması kolay olan ve projenin tüm paydaşları arasında daha fazla işbirliğine izin veren düz İngilizce metinlerdir.
- ATDD: Kabul Testine Dayalı Geliştirmenin odak noktası, Kullanıcının kabul perspektifinden daha fazladır. Bu testler aynı zamanda müşteri davranışını da tanımlar ancak entegrasyon veya nihai ürün bakış açısından, bir müşterinin nihai Kullanım senaryosuna dönüştürülür ve tüm geliştirme çalışmaları bu gereksinimleri karşılamaya odaklanır.
S # 3) Specflow özelliği için otomatik olarak oluşturulan dosyada neler var?
Cevap: Specflow arka plan kod dosyaları, '.cs' uzantılı otomatik olarak oluşturulan dosyalardır. Bu dosyalar, Adımlardan gerçek Adım tanımına kadar bağlama mantığına sahiptir.
Otomatik oluşturulan dosyalarla ilgili birkaç nokta şunlardır:
- Bu dosyalar manuel olarak değiştirilmemeli veya düzenlenmemelidir. Bunu yapmaya çalışsanız bile, değişiklikler kaydedilmez.
- Özellik dosyasındaki her değişiklikten sonra derleyici, güncellemeleri yakalamak için bu dosyayı yeniden oluşturur.
S # 4) Adım bağlamalarına farklı kaynak dosyalara nasıl erişilir?
Cevap: Adım bağlama dosyaları, ayrı kaynak dosyalarda bulunsalar bile yeniden kullanılabilir ve bağlama eşlemesi bir normal ifade aracılığıyla gerçekleşir.
Adım bağlama dosyaları, esasen tarafından atfedilen kısmi sınıflardır. (Ciltleme) öznitelik. Bu, tüm adım bağlamalarının genel olarak kullanılabilir olmasını ve farklı veya aynı özellik dosyalarında Senaryo Adımları ile kullanılabilmesini sağlar.
S # 5) Belirsiz adım bağlama uygulamaları nasıl çözülebilir?
Cevap: Specflow, adı verilen bir kavramı kullanarak belirsiz Adım bağlama uygulamasından kaçınmak için bir mekanizma sağlar. Kapsamlı Bağlamalar.
Bu, Senaryolarda aynı veya farklı özellik dosyalarında benzer adımlara sahip olduğunuz senaryolarda ve her iki Adımı da farklı şekilde ele almak istiyorsanız yararlıdır.
Normal bir senaryoda, tüm adım eşleştirme Regex aracılığıyla gerçekleştiğinden ve bu açgözlü bir eşleşme olduğundan, etkiler olsa bile adımlar için biraz farklı bir metin yazdığınızdan (böylece aynı uygulamayla eşleşmeyeceklerinden) emin olmanız gerekir. okunabilirlik.
Kapsamlı Bağlamaları kullanarak, belirli bir bağlama uygulamasına veya tüm bağlama dosyasına sahip etiketleri belirleyebilir ve eşleşmenin ek bir kategori filtresine sahip olmasını sağlayabilirsiniz.
İzlenmesi gereken adımlar aşağıda listelenmiştir:
için) Senaryoyu sözdizimini kullanarak bir kategoriyle etiketleyin - @Etiket. Misal: Aşağıdaki senaryoyu @scopedBinding etiketiyle etiketliyoruz
@scopedBinding Scenario: Youtube should search for the given keyword and should navigate to search results page Given I have navigated to youtube website And I have entered India as search keyword When I press the search button Then I should be navigate to search results page b) Şimdi, normal ifade eşleşmesine ek olarak etiket veya kategori eşleşmesinin de gerçekleşmesini sağlayacak olan adım bağlamada aynı etiketi kullanın (ve normal ifade eşleşmesi başarılı olsa bile diğer adımların bu uygulamaya uymamasını sağlar)
Yukarıdaki örnekte, adım için bağlamanın kapsamını belirlemek istiyoruz. ' Ve arama anahtar kelimesi olarak Hindistan'ı girdim ', Scope özelliğini, Scope parametresini etiket olarak ekleyeceğiz.
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation } Etiketli kapsam belirlemeye benzer şekilde, Özellik ve Senaryo başlıkları ile kapsamlı bağlamalara sahip olmak da mümkündür.
S # 6) Farklı senaryolar çalıştırılırken test içeriği nasıl saklanabilir?
Cevap: Test bağlamı, specflow testleri çalıştırılırken farklı yaklaşımlar kullanılarak depolanabilir ve her yaklaşımın artıları ve eksileri vardır.
- ScenarioContext ve FeatureContext'i kullanma: FeatureContext ve ScenarioContext'i genel bir anahtar-değer çiftleri sözlüğü olarak düşünün ve sırasıyla özellik yürütme ve senaryo yürütme sırasında erişilebilir. Değer alanı, her tür Nesneyi depolayabilir ve geri alma sırasında, istenildiği gibi nesneye dönüştürülmesi gerekir.
- Dosyaları bağlamada alanları kullanma: Bu yaklaşım, bağlamı aynı ad alanındaki aynı ve / veya farklı bağlama dosyalarındaki bağlama uygulamaları arasında paylaşmaya izin verir. Durumun sınıf değişkenleri kullanılarak sürdürülmesinde farklı değildir ve gerektiği gibi bağlama uygulamaları arasında ayarlanabilir veya alınabilir.
- Specflow’un kendi DI çerçevesini kullanarak: Specflow, bir bağlam enjeksiyon çerçevesi sağlar ve bağlamı Basit POCO sınıfları / nesneleri biçiminde geçirmek için kullanılabilir. Bağlam nesneleri / sınıfları, yapıcı alanları aracılığıyla enjekte edilebilir ve farklı Step bağlama dosyaları boyunca iletilebilir.
Yapıcı enjeksiyon yoluyla enjekte edilen 2 nesneye sahip aşağıdaki Örneğe bakın.
(Binding) public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } } S # 7) Genel olarak Specflow veya BDD'nin sınırlamaları nelerdir?
Cevap: BDD, adından da anlaşılacağı gibi, esasen kullanım durumlarını test senaryolarına dönüştüren uygulama ile davranışı tanımlar.
Bu nedenle, bir işletme, ürün ve / veya müşteriler gibi paydaşların yokluğu, geliştiricilerin yazma testleri uygulayacakları gerçek özellikleri etkileyebilir ve bu nedenle, sağlayabileceği ve tüm paydaşlara sahip olabileceği gerçek değeri sağlamamakla sonuçlanabilir. senaryoları tanımlarken mevcuttu.
Çoğu zaman profesyonellerin BDD'nin eksilerini zekice aştığını ve spesifikasyonları test etmek / doğrulamak için gerçekten çok yararlı bir teknik olduğunu söyledik. Java için Cucumber, Ruby için RSpec ve .NET için Specflow gibi hemen hemen tüm büyük programlama dilleri için BDD çerçeveleri mevcut olduğundan az çok dilden bağımsız olduğu için.
S # 8) Adım Bağımsız Değişken Dönüşümleri nelerdir?
Cevap: Adından da anlaşılacağı gibi argüman dönüşümleri, senaryo adımını dönüştürmekten başka bir şey değildir.
Bunu, gerçek adım bağlama eşleşmesi gerçekleşmeden önce gerçekleşen fazladan bir eşleştirme katmanı olarak düşünün ve aynı türden girdi için farklı bireysel adım uygulamalarına sahip olmak yerine farklı türde bir kullanıcı girdisini dönüştürmek için yararlı olabilir.
Herhangi bir dönüştürme adımı için gerekli özellik şudur: StepArgumentTransformation
Örneğin, aşağıdaki kod örneğine bakın:
Given I have entered 50 days into the timestamp to minute converter Given I have entered 1 day, 2 hours, 3 minutes into the timestamp to minute converter Given I have entered 1 day, 1 hour, 1 minute, 30 seconds into the timestamp to minute converter Yukarıdaki kod örneğine bakıldığında, üç adımın tümü birbiriyle ilişkilidir. Ancak, olağan düzenli ifade eşleştirmesi yapılsaydı, üç farklı adım uygulaması yazmanız gerekirdi.
Step bağımsız değişken dönüşümleri ile değerleri dönüştürmek ve bir TimeStamp belirtilen parametrelerden nesne ve orijinal adım uygulamasına geri dönün.
deneyimli için sql server 2012 mülakat soruları ve cevapları
Dönüşümün uygulanmasına bakalım.
(StepArgumentTransformation(@'(?:(d*) day(?:s)?(?:, )?)?(?:(d*) hour(?:s)?(?:, )?)?(?:(d*) minute(?:s)?(?:, )?)?(?:(d*) second(?:s)?(?:, )?)?')) public TimeSpan convertToTimeSpan(String days, String hours, String minutes, String seconds) { // timestamp conversion logic } Bu nedenle, burada senaryo girdisini bir ara değere (TimeStamp gibi) dönüştürüyoruz ve dönüştürülen değeri aşağıdaki örnekte gösterildiği gibi gerçek bağlama uygulamasına geri döndürüyoruz.
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation } TimeSpan türünün dönüştürülmüş değerinin artık gerçek Step bağlama uygulama yöntemine nasıl geri döndüğüne dikkat edin.
S # 9) Specflow tarafından sağlanan farklı kanca türleri nelerdir?
Cevap:
Specflow, olay işleyicilerinin (esasen yöntemler / işlevler) bazı kurulum / sökme mantığını yürütmek için bağlanabileceği birçok özel Hook veya özel olay sağlar.
Specflow, aşağıdaki kancaları sağlar:
- BeforeFeature / AfterFeature: Özellikten önce ve sonra ortaya çıkan olay sırasıyla çalıştırmayı başlatır ve tamamlar.
- BeforeScenario / AfterScenario: Bir senaryo çalıştırmadan önce ve sonra ortaya çıkan olay sırasıyla başlar ve tamamlanır.
- BeforeScenarioBlock / AfterScenarioBlock: Bir Senaryo Bloğundan önce ve sonra ortaya çıkan olay, yani 'Verilen', 'Zaman' veya 'Sonra' ya ait senaryo bloklarından herhangi biri başladığında veya tamamlandığında.
- BeforeStep / AfterStep: Olay, senaryonun her adımından önce ve sonra ortaya çıktı.
- BeforeTestRun / AfterTestRun: Bu olay, tüm test yürütmesi sırasında yalnızca bir kez ve test yürütme tamamlandıktan sonra bir kez ortaya çıkar.
Burada, bu olayların varsayılan olarak ortaya çıkarıldığını ve ancak ve ancak bu kancalar için sağlanan bağlamalar varsa işlendiğini not etmek önemlidir. Ayrıca, bu kancaların çiftler halinde uygulanması zorunlu değildir ve her kanca birbirinden bağımsız olarak var olabilir.
S # 10) ScenarioContext'in FeatureContext'ten farkı nedir?
Cevap: Hem ScenarioContext hem de FeatureContext, Specflow çerçevesi tarafından sağlanan statik sınıflardır ve bağlamalar arasında bilgi aktarımı, özellik / senaryo yürütme bağlamı gibi önemli bilgileri alma gibi görevleri gerçekleştirmek için gerçekten yararlıdır.
İkisinin de nasıl farklı olduğunu görelim:
Adından da anlaşılacağı gibi, ScenarioContext, Senaryo yürütme düzeyinde veri veya bilgi sağlarken, FeatureContext özellik düzeyindeki şeylerle ilgilenir.
Basit bir ifadeyle, featureContext'te depolanan her şey, o özellik dosyasında bulunan tüm senaryolar için kullanılabilirken, ScenarioContext, senaryo yürütme devam edene kadar yalnızca bağlamalar için kullanılabilir olacaktır.
S # 11) Verilme sırası ne zaman ve sonra ne kadar önemlidir?
Cevap: Specflow, siparişe herhangi bir kısıtlama getirmez. Verilen, Ne Zaman ve Sonra . Daha çok, bir test senaryosunun mantıksal sıralaması ve genel olarak herhangi bir test uygulaması ile ilgilidir, yani birim testlerde olduğu gibi, genellikle üç A'nın yerini alırız ' Düzenleyin, Harekete Geçin ve Onaylayın ”.
Bu nedenle, specflow senaryoları için, siparişte herhangi bir kısıtlama yoktur ve ayrıca üç bölümün de mevcut olmasını zorunlu kılmaz.
Çoğu zaman kurulum minimalist olabilir ve hatta gerekli olmayabilir. Dolayısıyla bu senaryolar için, ' Verilen 'Senaryoyu engelleyin ve' Ne zaman ”Bloğu.
S # 12) ScenarioInfo ve FeatureInfo nedir?
Cevap: SpecflowContext ve FeatureContext ayrıca, ScenarioInfo ve FeatureInfo gibi yuvalanmış statik sınıflar sağlar.
ScenarioInfo, halihazırda yürütülmekte olan senaryo etrafındaki bilgilere erişim sağlar.
Bu ders ile öğrenebileceğiniz şeylerden bazıları aşağıda verilmiştir:
- Başlık: Senaryonun başlığı. Sözdizimi: ScenarioContext.Current.ScenarioInfo.Title
- Etiketler: Biçimindeki etiketlerin listesi Dize (). Sözdizimi: ScenarioContext.Current.ScenarioInfo.Tags
S benzer ScenarioInfo, FeatureInfo ayrıca şu anda yürütülmekte olan geçerli özellikle ilgili bilgi sağlar.
Başlık ve etiketlere ek olarak, dosyanın arkasındaki özellik kodunun kod ürettiği hedef Dilin ne olduğu, Özellik Dosyasının yazıldığı Dil ayrıntıları vb. Gibi başka yararlı şeyler de sağlar.
FeatureInfo değerlerini elde etmeye yönelik sözdizimi, aşağıdaki gibi ScenarioInfo ile aynı kalır:
FeatureContext.Current.FeatureInfo
S # 13) Senaryo Taslağı ve Specflow tabloları arasındaki fark.
Cevap:
Senaryo Anahat temelde, veri odaklı senaryoları Specflow kullanarak yürütmenin bir yoludur. Örnekler bölüm ve senaryo, sağlanan örneklerin sayısına bağlı olarak her biri bir kez yürütülür.
Daha net anlamak için aşağıdaki kod örneğine bakın.
Scenario Outline: Youtube keyword search And I have entered as search keyword When I press the search button Then I should be navigate to search results page Examples: | searchTerm | | India | | America Tablolar, senaryonun herhangi bir adımıyla birlikte tablo verisi sağlamak için bir araçtır ve adım uygulamasında daha sonra istenen nesne türüne gerektiği gibi ayrıştırılabilen Specflow tablo argümanı olarak iletilir.
Daha fazla ayrıntı için lütfen aşağıdaki kod örneğindeki 'kalın' bölümüne bakın:
Scenario: Pass data through Specflow tables for StudentInfo object Given I have entered following info for Student | FirstName | LastName | Age | YearOfBirth | | test | student | 20 | 1995 | When I press add Then i student should get added to database and entered info should be displayed on the screen Etiketler özniteliğine benzer şekilde - herhangi bir adım uygulamasının yürütme akışını kontrol etmek için ScenarioInfo tarafından sağlanan herhangi bir bilgiyi kullanabilirsiniz.
S # 14) Testin ScenarioInfo aracılığıyla yürütülmesini kontrol etme.
Etiketler aracılığıyla adım tanımını eşleştirirken fazladan bir filtre kriteri eklemeye izin verebilen kapsam bağlamalarına benzer şekilde, ScenarioInfo ile sağlanan bilgiler aracılığıyla test yürütmeyi kontrol etmekten de yararlanabilirsiniz.
Örneğin, Etiketleri olan 2 senaryonuz var, yani @ tag1 ve @ tag2 ve her ikisi de aynı adım tanımını içeriyor. Şimdi senaryo etiketlerine bağlı olarak özel mantık eklemeniz gerekiyor.
Bu nedenle, adım tanımı uygulamasında, bir senaryo ile ilişkili tüm etiketleri kullanarak basitçe elde edebilirsiniz. ScenarioContext.Current.ScenarioInfo.Tags ve çalıştırılan senaryoda bir etiketin varlığını kontrol edin ve hangi kodu çalıştırmak istediğinize karar verin.
Daha iyi bir anlayış için aşağıdaki kod örneğine bakın:
(When(@'I press add')) public void WhenIPressAdd() { String() tags = ScenarioContext.Current.ScenarioInfo.Tags; String expectedTag = 'tag1'; if(tags.Any(s => s == expectedTag)) { // do something } else { // do something else } } Etiketler özniteliğine benzer şekilde - herhangi bir adım uygulamasının yürütme akışını kontrol etmek için ScenarioInfo tarafından sağlanan herhangi bir bilgiyi kullanabilirsiniz.
S # 15) Specflow testleri sürekli bir Entegrasyon kurulum türünde nasıl yürütülebilir?
Cevap:
Modern yazılım geliştirme metodolojilerinde, sürekli entegrasyon bir tür moda kelimedir ve genellikle kaynak koduna yapılan her taahhüdün üretim sürümü için bir aday olarak kabul edildiği bir dizi uygulama olarak adlandırılır.
Bu nedenle, her kesinleştirme, gerçekleştirilmekte olan değişikliğin herhangi bir testin başarısız olmasına veya bozulmasına neden olmamasını sağlamak için kalite kapıları olarak temelde farklı türde testleri tetikler.
Specflow - bildiğimiz gibi, NUnit ve MSUnit gibi bilinen çerçevelerle çok iyi bütünleşir ve Specflow özelliklerine ve adım uygulamalarına sahip derlenmiş projenin DLL'si verildiğinde bu test çerçevelerinin konsol uygulamaları aracılığıyla kolayca çalıştırılabilir.
Bu nedenle, sürekli entegrasyon kurulumunun bir parçası olarak çalışan Specflow testlerini gerçekleştirmek için, takip edilebilecek üst düzey adımların bir listesi aşağıda verilmiştir:
# 1) Derlenmiş bir DLL almak için Specflow özelliğini ve adım tanımını içeren projeyi derleyin.
#iki) Şimdi NUnit veya MSUnit konsol çalıştırıcılarını kullanın ve derlenmiş DLL'yi test kaynağı olarak sağlayın (Bu çerçeveler diğer yetenekler sağlar ve kategorilere vb. Bağlı olarak test filtreleri sağlar).
Bu adım Sürekli Entegrasyon ardışık düzeni ile entegre edilebilir ve Jenkins veya Bamboo gibi CI aracı ile kabuk veya DOS komut dosyası aracılığıyla yürütülebilir.
# 3) Test yürütme tamamlandıktan sonra, oluşturulan çıktı raporu (kullanılan konsol çalıştırıcısına özgüdür) kullanılarak daha okunabilir bir HTML raporuna dönüştürülebilir. Specrun yürütülebilir dosya NugetPackage'ın bir parçası olarak mevcuttur.
Bu Adım, tüm ana sürekli entegrasyon çerçeveleri tarafından kutunun dışında sağlanan komut satırı aracılığıyla da yürütülebilir.
# 4) Yukarıdaki adım tamamlandığında, yürütülen testlerin raporu ve test yürütme ayrıntılarının özetlenmiş ölçümleri ile hazırız.
Bu Specflow eğitim serisindeki tüm eğitimlerden keyif aldığınızı umuyoruz. Bu eğitim dizisi, Specflow hakkındaki bilgilerini zenginleştirmek isteyen yeni başlayanlar veya deneyimli kişiler için gerçekten de en iyi rehber olacaktır!
PREV Eğitimi VEYAGeri Dön FIRST Eğitimi
Önerilen Kaynaklar
- Mülakat Soruları ve Cevapları
- Spock Mülakat Soruları ve Cevapları (En Popüler)
- Bazı İlginç Yazılım Testi Görüşme Soruları
- En Popüler 20 TestNG Mülakat Soruları ve Cevapları
- En Popüler 30+ Salatalık Röportaj Soruları ve Cevapları
- En Popüler 50 CCNA Mülakat Soruları ve Cevapları
- En Popüler 40 J2EE Mülakat Sorusu ve Okumanız Gereken Cevapları
- 25+ En Popüler ADO.NET Mülakat Soruları ve Cevapları