=Paper=
{{Paper
|id=Vol-1221/paper17
|storemode=property
|title=Büyük Ölçekli Bir Gömülü Yazılımın Geliştirme ve Otomatik Test Deneyimi
|pdfUrl=https://ceur-ws.org/Vol-1221/17_Bildiri.pdf
|volume=Vol-1221
|dblpUrl=https://dblp.org/rec/conf/uyms/GurlerY14
}}
==Büyük Ölçekli Bir Gömülü Yazılımın Geliştirme ve Otomatik Test Deneyimi==
Büyük Ölçekli bir Gömülü Yazılımın Geliştirme ve Otomatik Test Deneyimi Eda Gürler1 Murat Yılmaz2 1, 2 Radar Elektronik Harp ve İstihbarat Sistemleri (REHİS) Grubu, ASELSAN A.Ş. Ankara 1 tverdi@aselsan.com.tr , 2muratyilmaz@aselsan.com.tr Özetçe. ASELSAN REHİS grubu bünyesinde geliştirilmekte olan büyük ölçekli ve uzun süreli bir elektronik harp projesinde, bir gömülü kontrol yazılımının çevik yöntemlerle geliştirilme süreci ve bu süreçte kullanılan otomatik test kurgusu bu bildirinin konusudur. Bildiride gömülü kontrol yazılımlarında geliştirme ve test aşamalarında yaşanan sıkıntılar, bu sıkıntıların çevik yöntemler ve otomatik test kurguları ile giderilmesi ve bu çalışma ile elde edilen deneyim paylaşılmaktadır. Anahtar Kelimeler: Gömülü yazılım otomatik test çevik yöntemler Fitnesse 1 Giriş Çevik yöntemler ile yazılım geliştirme, ASELSAN REHİS Grubu Görev Yazılımları Müdürlüğü (GYM) bünyesinde 10 yılı aşkın süredir uygulanmaktadır [1]. Çevik yöntem pratiklerinin kullanılması ile test edilmiş çalışan kodlar projenin ilk koşulardan itibaren oluşturulmaktadır. Her koşuda yeni yeteneklerin kodlanması ile geliştirilmekte olan çalışır durumdaki yazılım daha olgun hale gelmektedir. Yazılımın yeteneklerinin ve karmaşıklığının artması ile yeni eklenecek olan yeteneklerin mevcut yazılımda hata oluşmasına yol açma ihtimali de artmaktadır. Yazılımların kaliteli ve hatasız şekilde geliştirilmeleri için geliştirme safhası boyunca test edilmeleri faydalı bir pratiktir. Geliştirme safhası boyunca test edilen yazılımların içerdiği hataların daha erken aşamada yakalanabildiği görülmektedir. Hataların daha erken aşamada yakalanması hem çözüm maliyeti, hem yazılım kalitesi açısından olumludur. Şekil 1’de hataların yakalanma aşaması ile çözüm maliyeti arasındaki ilişki görülebilir. Bu bildiride, büyük ölçekli bir gömülü yazılımın çevik yöntemler [2] ile geliştirilmesi ve otomatik test kurgusu ile doğrulanması ele alınmaktadır. 158 Şekil 1. Proje Aşaması – Hata Maliyeti Grafiği [3] 2 Gerçek Zamanlı Gömülü Yazılım Geliştirme Gömülü yazılımların geliştirilme ve test süreçleri, kişisel bilgisayar ortamında çalışan yazılımların geliştirilme ve test süreçlerinden bazı yönlerden farklılık göstermektedir. Gömülü yazılımların geliştirildikleri ortam ile çalıştıkları ortam aynı değildir. Kodlar kişisel bilgisayar ortamında geliştirilip derlenir ancak geliştirildikleri ortamda çalışamazlar. Bu kodlar özel donanım kartları üzerine yüklenerek bu kartlar üzerindeki işlemcilerde çalışırlar. Bu durum test ve hatadan arındırma süreçlerinde çeşitli zorluklar ortaya çıkarır: • Donanım kartının açılması ve test edilecek yazılımın kart üzerine yüklenerek çalıştırılması, her testte bu işlemin tekrarlanması zaman almaktadır. • Donanım kartlarının maliyetli olması sebebiyle yazılım geliştirme mühendisleri ve test mühendisleri tarafından paylaşılarak kullanılması sıkıntı yaratmaktadır. • Donanım kartları yüksek soğutma ihtiyacı sebebiyle geliştirme ortamından ayrı bir odada bulunmaktadır. Fiziksel olarak bu donanımlara erişim kısıtlıdır. Donanımlara herhangi bir müdahale yapılması gerektiğinde (gücün kesilip yeniden verilmesi, seri kanal bilgilerinin izlenmesi gibi) erişim sıkıntısı yaşanmaktadır. Elektronik harp projelerinde kullanılan gömülü kontrol yazılımları farklı dillerde geliştirilmiş çeşitli yazılımlarla ve farklı veri yolları üzerinden çeşitli donanımlarla haberleşmek mecburiyetindedir. Bu sebeple hem kod geliştiren yazılımcının kendi 159 testlerini yapması hem de yazılımın doğrulama testlerinin yapılması sırasında sıkıntılar yaşanmaktadır. Gerçek zamanlı gömülü kontrol yazılımları, tanımlı zaman limitleri aşılmadan belli görevleri yerine getirmek durumundadır. Ortamdaki veri miktarının yoğunluğu, işlenmesi gereken verinin karmaşıklığı gibi sebepler ile ilgili görevlerin zamanlarının aksatılmaması gerekir. Bu gereksinim gerçek zamanlı gömülü kontrol yazılımlarının değişken ortamlarda, farklı tip ve miktarda veri ile test edilmesinin ne denli önemli olduğunu ortaya koymaktadır. Elektronik harp projelerinin görevlerinde başarıya ulaşması için hatasız, gereklerini eksiksiz ve uygun zaman diliminde yerine getirebilen gömülü kontrol yazılımlarının kullanılması gereklidir. Elbette ki bu yazılımların kaliteli ve hatasız geliştirilebilmeleri için test yöntemleri büyük önem taşımaktadır. 3 Geliştirme ile Eşzamanlı Test Bu bildiride anlatılmakta olan elektronik harp projesinin yazılımlarının geliştirilmesi sırasında çevik yöntem pratikleri kullanılmıştır. Kullanılan pratikler eXtreme Programming (XP) ve SCRUM pratiklerinin bir karmasıdır [4][6][7]. Projenin yazılım gereksinimleri hikayelere dönüştürülmüş, hikayeler arasında önceliklendirme yapılmış ve her koşu için önceliğine uygun olarak gerçeklenmiştir. Bu kapsamda yazılım geliştirme mühendisleri tarafından: • Yeni yetenekler kodlanmış • Birim testleri gerçekleştirilmiştir. Gömülü kontrol yazılımının geliştirilmesi sırasında, yazılım mühendisleri tarafından gerçeklenen her hikaye için ilgili test hikayesi de test mühendisleri tarafından gerçeklenmiştir. Bu kapsamda test mühendisleri tarafından: • İlgili simülatör(ler)e gerekli güncellemeler yapılmış • Otomatik test aracında test senaryoları tanımlanmış • Test aracı ile simülatörler arasındaki bağlantı (fixture) kodları yazılmıştır. Her koşunun sonunda yazılım geliştirme ve yazılım test ekibi bir araya gelip ilgili koşuda gerçeklenen yeteneklerin testlerini otomatik test aracı altyapısı ile yaparak sonuçlarını değerlendirmiştir. Bu kapsamda: • Ortaya çıkan hataların kaynağı tespit edilmiş • Gömülü kontrol yazılımında ve simülatör kodlarında gerekli düzeltmeler yapılmış • Gerekiyorsa otomatik test aracındaki testler güncellenmiş • Testler tekrarlanarak hatasız yazılım/simülatör/test grubu elde edilmiştir. Bu sayede, gömülü kontrol yazılımı yeni yetenekleri içerecek şekilde gelişirken, test ortamı da eşzamanlı olarak güncellenmiştir. Var olan testlere ek olarak yeni testler yazılmış, yazılıma yeni gereksinimler eklendikçe yazılım tüm testleri kapsayacak şekilde teste tabi tutulmuştur. 160 4 Simülatör Altyapısı Geliştirilen gömülü kontrol yazılımı, iki farklı donanım ve üç farklı yazılım arayüzüne sahiptir. Bu arayüzlerin tamamı için simülatörler geliştirilmiştir. Otomatik test altyapısı, bu simülatörleri kullanarak gömülü kontrol yazılımına belli senaryolar dahilinde mesaj ve/veya veri gönderebilir. Ayrıca bu simülatörler, gömülü kontrol yazılımından gelen mesaj ve/veya veriyi test sonuçlarında kullanılmak üzere otomatik test altyapısına göndermektedir. Gömülü kontrol yazılımı, herhangi bir başka yazılıma veya çalıştığı donanım kartı dışında herhangi bir donanıma ihtiyaç duymadan test edilebilmektedir. Şekil 2’de geliştirilen gömülü kontrol yazılımı ve haberleştiği simülatör arayüzleri görülebilir. Şekil 2. Gömülü Kontrol Yazılımı Arayüz Simülatörleri 5 Fitnesse Testleri Fitnesse [5] açık kaynak kodlu, Wiki tabanlı bir entegrasyon test aracıdır. FIT (Framework for Integrated Testing) altyapısını kullanır. Fitnesse altyapısının az sayıda gereği olan bir gömülü yazılımın testlerinde kullanılması daha önce ASELSAN REHİS grubunda denenmiştir [4]. Ancak büyük ölçekli bir askeri projede ve gereksinim sayısı 200’den fazla olan bir gerçek zamanlı gömülü kontrol yazılımında, simülatörler aracılığı ile Fitnesse test altyapısının kullanılması ASELSAN REHİS grubunda ilk kez gerçekleştirilmiştir. Kullanılan simülatörler ve test altyapısı Şekil 3’te görülebilir. 161 Şekil 3. Gömülü Yazılım Otomatik Test Yerleşim Şeması 6 Otomatik Test Kurgusu Fitnesse testleri, bir senaryo kapsamında test edilecek gömülü kontrol yazılımına belli mesaj ve verinin simülatörler üzerinden gönderilmesini tetikler. Gömülü kontrol yazılımı tarafından bu tetiklenme üzerine üretilen mesajlar yine simülatörler üzerinden Fitnesse test aracına ulaşır ve beklenen zaman aralığı içinde beklenen mesaj ve parametrelerin üretilip üretilmediği değerlendirilir. Gömülü kontrol yazılımı test senaryosunda tanımlandığı şekilde çalışmışsa test adımı başarılı olur. Tüm test adımlarının başarılı olması durumunda ilgili test grubu başarılı olur. Herhangi bir test adımında hata olması durumunda gerekli düzeltme ve güncellemeler yapıldıktan sonra tüm test grubu yeniden çalıştırılır. 162 Şekil 4’te yazılıma ait bir yeteneğin test kurgusunun mesaj akış şeması görülmektedir. Bu kurguda test aracı tarafından “Tespit Başla” mesajının gönderilmesinden belirli bir süre sonra “Tespit Başladı” mesajının alınması gerekmektedir. Bu mesajın alınmasını takiben tarama adımlarının doğru parametreler ve doğru zamanlama ile gönderilmesi ve tespit raporlarının yine doğru parametreleri içerecek şekilde periyodik olarak alınması gerekmektedir. “Tespit Dur” mesajının gönderilmesi ve “Tespit Durdu” mesajının alınması ile bu test senaryosu sona erer. Şekil 4. Mesaj Akış Şeması Örneği Bildiriye konu olan projenin gömülü kontrol yazılımının geliştirme ve testlerinin tamamlanması otuz ay kadar sürmüştür. Bu süre boyunca ortalama iki yazılım geliştirme mühendisi ve iki yazılım test mühendisi görev almıştır. Herhangi bir hata ile karşılaşılmaması durumunda, testlerin tamamının otomatik olarak yapılması kırk beş dakika zaman almaktadır. Aynı senaryoların otomatik test kurgusu kullanılmadan test edilmesi bu zamanı yaklaşık olarak yirmi dört saate çıkarmaktadır. 163 7 Kazanımlar Bildiride bahsi geçen gömülü kontrol yazılımı çevik yöntemler ile geliştirilmiş ve otomatik olarak test edilmiştir. Bu sayede, daha erken aşamalarda çalışır yazılım ortaya çıkmıştır. Ortaya çıkan yazılıma ait hatalar daha erken aşamalarda tespit edilmiştir. Yazılım farklı tip ve miktarda veri ile test edilerek zaman kritik fonksiyonların doğrulanması mümkün olmuştur. En önemlisi, yazılımda yapılan değişikliklerin ardından bağlanım testlerinin yapılması kolaylaşmış ve daha kısa zaman almıştır. Kritik durumlarda bağlanım analizi yapmak ve sadece bazı testleri tekrarlamak yerine testlerin tamamı fazla zaman ihtiyacı olmadan tekrarlanmıştır. 8 Sonuç Bu bildiride büyük ölçekli bir elektronik harp projesinde, gömülü kontrol yazılımının geliştirilmesi ve otomatik olarak test edilmesi sürecinde edinilen kazanımlar paylaşılmıştır. 9 Teşekkür Yazarlar, gömülü kontrol yazılımının geliştirilmesinde ve otomatik test kurgusunun oluşturulmasında emeği geçen tüm ASELSAN REHİS GYM ve TMM çalışanlarına; simülatör ve fixture altyapısının geliştirilmesindeki katkılarından dolayı Uğur Zöngür’e, Hüseyin Bursalı’ya ve Özgür Kızılay’a teşekkür eder. 10 Kaynakça 1. Özzeybek, Özköse Erdoğan, Bozbey, Işık, Taşel, “Büyük Ölçekli Bir Elektronik Harp Projesinde Uç Programlama (XP Deneyimi”, UYMS’07 2. Ünal, Kahraman, “Gerçek Zamanlı Gömülü Sistem ve Yazılım Tasarımında ASELSAN Yaklaşımı”, UYMS’07 3. www.agilemodeling.com Erişim tarihi: 08/05/2014 4. Gürler, Ceylan Karabörk, Sancar Yılmaz, Esen Temel, “Gömülü Yazılımlarda Müşteri Testleri”, UYMS’11 5. Object Mentor Group, Fitnesse, www.fitnesse.org Erişim tarihi: 08/05/2014 6. Kent Beck: Test-Driven Development: By Example, Addison-Wesley, 2002. 7. Kent Beck: Extreme Programming, Addison-Wesley, 2003. 164