X-Makine Testi - X-Machine Testing

(Stream) X-Machine Test Metodolojisi bir tamamlayınız fonksiyonel test yaklaşım yazılım- ve donanım testi[1] ölçeklenebilirliğinden yararlanan Akış X-Machine hesaplama modeli.[2] Bu metodolojiyi kullanarak, test edilen sistemin uygulamasının spesifikasyonuna uyup uymadığını kapsamlı bir şekilde belirleyen sonlu bir test seti belirlemesi muhtemeldir. Bu hedefe, tasarımın incelikle ayrıştırıldığı böl ve yönet yaklaşımı ile ulaşılır.[3] bir koleksiyona Akış X-Makineleri ayrı modüller olarak uygulanan, daha sonra aşağıdan yukarıya test edilen. Her bir entegrasyon aşamasında, test yöntemi, test edilen bileşenlerin doğru şekilde entegre edilmesini garanti eder.[4]

Metodoloji resmi kararsızlık belirli sınırlamalar getirerek test için tasarım Şartname ve uygulama sırasında ilkelere uyulur. Ortaya çıkan ölçeklenebilirlik, pratik yazılımın[5] ve donanım[6] yüz binlerce durumdan ve milyonlarca geçişten oluşan sistemler başarıyla test edilmiştir.

Motivasyon

Çok yazılım testi herhangi bir hatanın tespit edilip edilemeyeceğini görmek için yazılım sistemini çeşitli şekillerde kullanmayı amaçlamaktadır. Test gerçekten bazı hataları ortaya çıkarabilir, ancak test bittikten sonra sistemin doğru olduğunu asla garanti edemez. Fonksiyonel test yöntemler geliştirerek bu durumu iyileştirmeyi amaçlar. resmi şartname Uygulamanın daha sonra test edildiği sistemin amaçlanan davranışını açıklayan (bir tür uygunluk testi ). Spesifikasyon, kullanıcı gereksinimlerine göre ve daha sonra doğrulanabilir kanıtlanmış olmak tutarlı ve tamamlayınız matematiksel akıl yürütme ile (mantıksal tasarım kusurlarını ortadan kaldırarak). Tamamlayınız fonksiyonel test yöntemler, sistematik olarak spesifikasyonu kullanır, uygulanan yazılım sistemini uygulayan test setleri oluşturur kapsamlı olarak, spesifikasyona uygun olup olmadığını belirlemek için. Özellikle:

  • Tam pozitif test: istenen tüm davranışın sistemde mevcut olduğunu doğrular;
  • Tam negatif test: sistemde istenmeyen davranışların olmadığını doğrular.

Yazılım sistemleri, yüz binlerce durum ve milyonlarca geçişle son derece karmaşık olduğundan, bu test düzeyine ulaşmak zor olabilir. İhtiyaç duyulan şey, spesifikasyonu ve test problemini ayrı ayrı ele alınabilecek parçalara ayırmanın bir yoludur.

Ölçeklenebilir, Soyut Özellikler

Mike Holcombe ilk olarak kullanmayı önerdi Samuel Eilenberg teorik X-makinesi 1980'lerin sonlarında yazılım spesifikasyonunun temeli olarak model.[7]Bunun nedeni, modelin, kontrol akışı bir sistemin işleme sistem tarafından gerçekleştirilir. Belirli bir soyutlama düzeyinde, sistem basit bir sonlu durum makinesi birkaç durum ve geçişten oluşur. Daha karmaşık işlemler, işleme fonksiyonları temel veri türünü değiştiren geçişlerde X. Daha sonra, her bir işleme işlevi ayrı ayrı ortaya çıkarılabilir ve başka bir X-makinesi, bu sistem işleminin davranışını modellemek.

Bu, önce genel sistem mimarisinin belirlendiği, ardından her bir ana sistem işleminin, ardından alt yordamların vb. Belirlendiği bir böl ve yönet yaklaşımını destekler. Her adımda, her katmanın bağımsızlığı nedeniyle karmaşıklık seviyesi yönetilebilir. Özellikle, yazılım mühendislerinin basit olanı doğrulaması kolaydır. sonlu durum makineleri kullanıcı gereksinimlerine karşı.

Artımlı Olarak Test Edilebilir Özellikler

Gilbert Laycock ilk olarak belirli bir tür X-makinesi, Akış X-Machine, test yönteminin temeli olarak.[2] Bu varyantın avantajı, testin kontrol edilme şeklidir. İçinde Akış X-Machine temel veri türü belirli bir biçime sahiptir: X = Dışarı* × Mem × İçinde*, nerede İçinde* bir giriş akışıdır, Dışarı* bir çıktı akışıdır ve Mem dahili hafızadır. Bir geçişler Akış X-Machine φ formunun işleme işlevleriyle etiketlenir: Mem × İçindeDışarı × Memyani, giriş akışından bir girdi tüketirler, muhtemelen belleği değiştirirler ve çıktı akışında bir çıktı üretirler (bkz. ilişkili makale daha fazla ayrıntı için).

Test etmenin faydaları, bu şekilde tasarlanmış yazılım sistemlerinin gözlenebilir her adımda. Her girdi için makine bir adım atarak bir çıktı üretir, öyle ki girdi / çıktı çiftleri tam olarak eşleşebilir. Bu, sistemin içinde bulunduğu diğer yaklaşımlarla çelişir. tamamlanana kadar koşar (birden fazla adım atmak) herhangi bir gözlem yapılmadan önce. Dahası, katmanlı Akış X-Makineleri uygun bir soyutlama sunar. Her seviyede, test uzmanı şunları yapabilir: unutmak işleme fonksiyonlarının detayları hakkında ve (alt) sistemi basit bir sonlu durum makinesi. Chow'un W yöntemi gibi, sonlu durum özelliklerine uyan sistemleri test etmek için güçlü yöntemler mevcuttur.[8]

Şartname Yöntemi

(Stream) X-Machine metodolojisini takip ederken, ilk aşama, işlenecek çeşitli veri türlerini belirlemektir. Örneğin, bir kelime işlemci temel türleri kullanacaktır Karakter (Klavye Girişi), Durum (fare imleci konumu) ve Komut (fare veya menü komutu). Aşağıdakiler gibi başka inşa türleri de olabilir: Metin ::= Karakter* (bir dizi karakter), Seçimi ::= Durum × Durum (seçimin başlangıcı ve bitişi) ve Belge ::= Metin × Seçimi × Boole (metin, olası bir seçim ve belge değiştirilmişse sinyal verecek bir bayrak).

Üst Düzey Özellikler

En üst düzey şartname bir Akış X-Machine sistemle ana kullanıcı etkileşimini açıklamak. Örneğin, kelime işlemci, tuş vuruşlarının ve komutların farklı etkilere sahip olacağı bir dizi durumda var olacaktır. Bu kelime işlemcinin eyaletlerde bulunduğunu varsayalım {yazı, Seçme, Dosyalama, Düzenleme}. Kelime işlemcinin baştan başlamasını bekliyoruz yazı devlet, ancak gitmek için Seçme fareden biri ise sürüklenen, ya da Shift tuşu basılı tutulur. Seçim yapıldıktan sonra, yazı durum. Aynı şekilde, bir menü seçeneği seçilirse, bu, Düzenleme veya Dosyalama durum. Bu durumlarda, belirli tuş vuruşlarının farklı anlamları olabilir. Kelime işlemci sonunda yazı herhangi bir menü komutu bittiğinde durum. Bu durum makinesi, durumunu değiştirmesine neden olan çeşitli eylemlerle gayri resmi olarak tasarlanmış ve etiketlenmiştir.

En üst düzey makine için giriş, bellek ve çıkış türleri artık resmileştirilmiştir. Basit kelime işlemcinin hafıza tipinin tip olduğunu varsayalım Belge yukarıda tanımlanmıştır. Bu, bir belgeyi bir metin dizisi olarak ele alır, iki konum olası bir seçimi işaretler ve sondan bu yana değişikliği gösteren bir bayrak kayıt etmek-komut. Daha karmaşık bir kelime işlemci, bir dizi belge durumu ile geri alınamaz düzenlemeyi destekleyebilir: Belge ::= (Metin × Seçimi) *, her seferinde bir belgeye daraltılır kayıt etmek-komut gerçekleştirilir.

Makine için giriş türünün şu olduğunu varsayalım: İçinde ::= Komut × Karakter × Durum. Bu, her etkileşimin basit bir karakter ekleme, bir menü komutu veya bir imleç yerleşimi olabileceğini kabul eder. Herhangi bir etkileşim 3'lü bir gruptur, ancak bazı yerler boş olabilir. Örneğin, (Ekle, 'a', ε) 'a' karakterinin yazılmasını temsil eder; süre (Durum,, 32) imlecin 32 ve 33 karakterleri arasına yerleştirilmesi anlamına gelir; ve (Seçiniz, ε, 32) mevcut imleç konumu ile 32 ve 33 karakterleri arasındaki yer arasındaki metni seçmek anlamına gelir.

Makinenin çıkış tipi, çıktıdan tespit edilebilecek şekilde tasarlanmıştır. hangi belirli bir girdiye yanıt olarak işleme işlevi yürütüldü. Bu, mülkiyeti ile ilgilidir çıktı ayırt edilebilirliği, Aşağıda açıklanan.

Düşük Seviye Özellikleri

Bir sistem karmaşıksa, büyük olasılıkla birkaç sisteme ayrıştırılacaktır. Akış X-Makineleri. En yaygın iyileştirme türü, ana işleme işlevlerinin her birini (üst düzey makinedeki etiketlerdi) almak ve bunları ayrı olarak ele almaktır. Akış X-Makineleri.[3] Bu durumda, düşük seviyeli makineler için giriş, hafıza ve çıkış türleri, yüksek seviyeli makine için tanımlananlardan farklı olacaktır. Ya bu, yüksek seviyede kullanılan veri setlerinin bir genişlemesi olarak ele alınır ya da yüksek seviyede daha soyut veri setlerinden alt seviyede daha detaylı veri setlerine bir çeviri vardır. Örneğin, bir komut Seçiniz yüksek düzeyde üç olaya ayrılabilir: Fare Aşağı, MouseMove, MouseUp alt seviyede.

Ipate ve Holcombe, aşağıdakiler de dahil olmak üzere birkaç çeşit iyileştirmeden bahsediyor: işlevsel iyileştirme, işleme fonksiyonlarının davranışının daha ayrıntılı olarak detaylandırıldığı ve eyalet ayrıntısıbasit bir durum uzayının daha karmaşık bir durum uzayına bölündüğü.[1] Ipate, bu iki tür iyileştirmenin nihayetinde eşdeğer olduğunu kanıtlıyor[9]

Sistemler aksi takdirde tasarımcının uygulama ortamı tarafından desteklenen ilkel işlemlere güvenmeye hazır olduğu seviyeye kadar belirlenir. Küçük birimleri diğer test yöntemleriyle kapsamlı bir şekilde test etmek de mümkündür.

Test İçin Tasarım Koşulları

(Stream) X-Machine metodolojisi, tasarımcının belirli test için tasarım koşullar. Bunlar genellikle tatmin edilmesi çok zor değildir. Her biri için Akış X-Machine şartnamede şunları elde etmeliyiz:

  • Minimum Özellikler: Spesifikasyon bir en az sonlu durum makinesi. Bu, durum makinesinin fazlalık durumları içermemesi gerektiği anlamına gelir, yani, gözlemlenebilir geçiş davranışının başka bir durumdakiyle aynı olduğu durumlar.
  • Deterministik Spesifikasyon: Makinenin her durumu için, işleme işlevlerinden φ en fazla biri etkinleştirildi mevcut bellek ve sonraki giriş değeri için. Bu, test edilecek gerekli davranışın tahmin edilebilir olmasını sağlar.
  • Test Tamlığı: Her işleme işlevi φ, tüm bellek durumlarına göre en az bir giriş için çalıştırılabilir olmalıdır. Bu, makinenin mevcut bellek durumu tarafından engellendiği yerlerde herhangi bir kilitlenme olmamasını sağlar. Test eksiksizliğini sağlamak için, bir işlevin alanı φ özel olarak uzatılabilir test girdileri yalnızca test sırasında kullanılır.
  • Çıktı Ayırt Edilebilirliği: Tüm bellek giriş çiftleri için hangi işleme işlevinin yalnızca çıkış değerinden çağrıldığını ayırt etmek mümkün olmalıdır. Bu, durum makinesinin işleme fonksiyonlarından ayrılabilmesini sağlar. Çıktı ayırt edilebilirliğini sağlamak için, ortak alan bir işlevin φ değeri özel test çıktıları bunlar yalnızca test sırasında geçerlidir.

Minimal makine, belirli bir davranış için en az durum ve geçişe sahip makinedir. Spesifikasyonu minimum düzeyde tutmak, test setlerinin olabildiğince küçük olmasını sağlar. Öngörülebilir sistemler için deterministik bir makine gereklidir. Aksi takdirde, bir uygulama hangi geçişin yapılacağına ilişkin keyfi bir seçim yapabilir. Son zamanlarda yapılan bazı çalışmalar, deterministik olmayan makinelerin test edilmesine izin vermek için bu varsayımı gevşetmiştir.[10]

Uygulamanın izlenebilir süre içinde test edilebilir olduğundan emin olmak için test tamlığı gereklidir. Örneğin, bir sistemde yalnızca bellek belirli bir sınırlama değerine ulaştıktan sonra girilen uzak veya ulaşılması zor durumlar varsa, belleğin baypas edilmesine izin vermek için özel test girişleri eklenmeli ve durum makinesini uzak alana zorla durum. Bu, test sırasında tüm (soyut) durumların hızlı bir şekilde ele alınmasını sağlar. Çıktı ayırt edilebilirliği, ölçeklenebilir test yöntemini destekleyen temel özelliktir. Bir sonraki entegrasyon katmanının durum makinesini test ederken, test uzmanının işleme işlevlerini ayrıntılı davranışları güvenli bir şekilde göz ardı edilebilecek basit etiketler olarak ele almasını sağlar. Benzersiz çıktılar, belirli bir işlevin çağrıldığını garanti eden tanık değerlerdir.

Test metodu

(Stream) X-Machine Testing Method, hem tasarımın hem de uygulamanın (bir koleksiyon) olarak kabul edilebileceğini varsayar. Akış X-Makineleri. Her bir karşılık gelen makine çifti için (Teknik Özellikler, İmp), testin amacı davranışının olup olmadığını belirlemektir. İmp, uygulama makinesi, davranışıyla tam olarak eşleşir Teknik Özellikler, şartnamenin makinesi. Bunu not et İmp minimal bir makine olması gerekmez - daha fazla durum ve geçişe sahip olabilir Teknik Özellikler ve hala aynı şekilde davranıyorlar.

Tüm davranışları test etmek için, bir makineyi tüm durumlarına sürmek mümkün olmalı, ardından tam başarmak için tüm olası geçişleri (başarılı olması gerekenler ve engellenmesi gerekenler) denemek gerekir. pozitif ve olumsuz test (yukarıya bakın). Başarılı olan geçişler için hedef durumun da doğrulanması gerekir. Unutmayın eğer Teknik Özellikler ve İmp aynı sayıda duruma sahipse, yukarıda hedefe ulaşan en küçük test seti açıklanmaktadır. Eğer İmp daha fazla durumu ve geçişi var Teknik Özellikler, bunu garanti etmek için daha uzun test dizilerine ihtiyaç vardır. gereksiz eyaletler İmp ayrıca beklendiği gibi davranır.

Tüm Durumları Test Etmek

Test üretme stratejisinin temeli, sonlu durum otomatını test etmek için Tsun S. Chow'un W-Metodudur.[8] yedekli uygulamaların test edilmesini desteklediği için seçilir. Chow'un yöntemi basit varsayar sonlu durum makineleri gözlemlenebilir girdi ve çıktılarla, ancak doğrudan gözlemlenebilir durumlar yok. Chow'un biçimciliğini eşleştirmek için, işlevler φben geçişlerinde Akış X-Makineleri basitçe etiketler (Chow'un terimleriyle girdiler) olarak ele alınır ve ayırt edici çıktılar doğrudan kullanılır. (Daha sonra, gerçek girişlerden ve bellekten bir eşleme (mem, içinde), etki alanına göre her bir işlevi trigger tetiklemek için seçilir).

İçindeki belirli durumları tanımlamak için İmpChow bir karakterizasyon seti, W, her durumu benzersiz bir şekilde karakterize eden en küçük test dizisi kümesi Teknik Özellikler. Yani, belirli bir durumda başlarken, dizileri çalıştırma W başka herhangi bir durumda başlamaya kıyasla en az bir gözlemlenebilir fark sağlamalıdır.

Beklenen her duruma ulaşmak için Teknik Özellikler, test cihazı devlet kapağı, C, her duruma ulaşan en küçük test dizisi seti. Bu, otomatik olarak enine ilk keşif yoluyla inşa edilebilir. Teknik Özellikler. Minimumun tüm durumlarını doğrulayan test seti İmp o zaman: , nerede gösterir birleştirilmiş ürün iki setin. Örneğin, eğer C = {⟨a⟩, ⟨b⟩} ve W = {⟨c⟩, ⟨d⟩}, sonra .

Tüm Geçişlerin Test Edilmesi

Yukarıdaki test seti, asgari düzeyde olup olmadığını belirler. İmp ile aynı durumlara sahiptir Teknik Özellikler. Minimum olup olmadığını belirlemek için İmp aynı geçiş davranışına da sahiptir Teknik Özellikler, test cihazı geçiş kapağı, K. Bu, her duruma ulaşan ve ardından bu durumdan olası her geçişi bir kez deneyen en küçük test dizisi kümesidir. Şimdi, giriş alfabesi Φ'deki her function işlevinin (etiketlerinden) oluşur. Φ 'den seçilen tek fonksiyonlardan oluşan bir dizi uzunluk-1 test dizisi oluşturalım ve bunu Φ olarak adlandıralım.1. Geçiş kapağı şu şekilde tanımlanır: .

Bu, her durumdan olası her geçişi deneyecektir. Başarılı olanlar için, hedef durumları doğrulamalıyız. Yani, en küçük test seti T1 minimumun davranışını tamamen doğrular İmp tarafından verilir: . Bu formül şu şekilde yeniden düzenlenebilir:

,

nerede Φ0 {⟨⟩} boş dizisini içeren kümedir.

Eğer İmp daha fazla eyaleti var Teknik ÖzelliklerYukarıdaki test seti, kopyalanan durumların uyumlu davranışını garanti etmek için yeterli olmayabilir. İmp. Bu nedenle, tüm işlev çiftlerinden oluşan daha uzun test dizisi kümeleri seçilir Φ2, tüm üçlü fonksiyonlar Φ3 bir sınıra kadar Φk, test eden kişi memnun olduğunda İmp daha uzun yinelenen durum zincirleri içeremez k-1. Son test formülü şu şekilde verilir:

.

Bu test seti, minimal olmayan bir testin davranışını tamamen doğrular. İmp yinelenen durum zincirlerinin daha uzun olmaması bekleniyor k-1. Çoğu pratik amaç için, test etme k= 2 veya k= 3 oldukça kapsamlı olup, gerçekten zayıf uygulamalardaki durumla ilgili tüm hataları ortaya çıkarır.

Başvurular

Referanslar

  1. ^ a b M. Holcombe ve F. Ipate (1998) Doğru Sistemler - Bir İş Süreci Çözümü Oluşturma. Springer, Uygulamalı Hesaplama Serisi.
  2. ^ a b Gilbert Laycock (1993) Spesifikasyon Tabanlı Yazılım Testinin Teorisi ve Uygulaması. Doktora Tezi, Sheffield Üniversitesi. Öz Arşivlendi 5 Kasım 2007, Wayback Makinesi
  3. ^ a b F. Ipate ve M. Holcombe (1998) 'Genelleştirilmiş makine spesifikasyonlarını incelemek ve test etmek için bir yöntem'. Int. J. Comp. Matematik. 68, s. 197-219.
  4. ^ F.Ipate ve M. Holcombe (1997) 'Tüm hataları bulduğu kanıtlanmış bir entegrasyon test yöntemi', Uluslararası Bilgisayar Matematiği Dergisi 63, s. 159-178.
  5. ^ K. Bogdanov ve M. Holcombe (1998) 'Statecharts için otomatik test seti üretimi', D. Hutter, W Stephan, P. Traverso ve M. Ullmann eds. Uygulanan Biçimsel Yöntemler: FM Trends 98, Boppard, Almanya, Bilgisayar Bilimlerinde Ders Notları 1641, s. 107-121.
  6. ^ Salim Vanak (2001), Donanım Tasarımlarının Tam Fonksiyonel Testi, Doktora Tezi, Sheffield Üniversitesi.
  7. ^ M. Holcombe (1988) 'Dinamik sistem spesifikasyonunun temeli olarak X-makineleri', Yazılım Mühendisliği Dergisi 3(2), s. 69-76.
  8. ^ a b T. S. Chow (1978) 'Sonlu durum makineleri ile modellenen test yazılımı tasarımı', Yazılım Mühendisliğinde IEEE İşlemleri, 4 (3), sayfa 178-187.
  9. ^ Florentin Ipate (1995) Spesifikasyon ve Test Uygulamaları ile X-Makineleri Teorisi, Doktora Tezi, Bilgisayar Bilimleri Bölümü, Sheffield Üniversitesi.
  10. ^ F. Ipate ve M. Holcombe (2000) "Belirleyici olmayan X-makinelerinin test edilmesi". İçinde: Kelimeler, Diziler, Gramerler, Diller: Biyoloji, Bilgisayar Bilimleri, Dilbilim ve Matematiğin Buluştuğu Yer, Cilt II, eds. C Martin-Vide ve V. Mitrana, Kluwer.