Donanım ayarlarının hataları yeniden üretmesi zor ya da imkansız olduğunda, yeni kodu nasıl etkin bir şekilde giderebilir ya da test edebilirsiniz?


30

Orta ölçekli bir şirkette (150 çalışan, ~ 10 büyük mühendislik ekibi) çalışıyorum ve projelerimin çoğu yarı otomatik test uygulamaları için laboratuar ekipmanları (osiloskoplar, optik spektrum analizörleri vb.) İle arayüz oluşturmayı içeriyor. Yeni kodu etkin bir şekilde gideremediğim veya test edemediğim birkaç farklı senaryoyu izledim, çünkü artık donanım kurulumumu artık kullanamadım veya hiç kullanamadım.

Örnek 1: 10-20 "yanma" işlemlerinin bir tezgah üstü tip sensör kullanılarak bağımsız olarak gerçekleştirildiği bir kurulum - Test için böyle bir sensör elde ettim ve ara sıra tüm arayüzleri simüle etmek için bir saniye çalabilirim birden fazla cihaz (arama, bağlantı, akış vb.)

Sonunda, sadece bir ünite ile doğru şekilde çoğaltılması çok zor olan bir hata ortaya çıktı (ve nihayetinde cihaz donanım yazılımı ve sürücülerinde sona erdi), ancak bu cihazların 10-20'si aynı anda kullanımdayken "durdurucu göster" seviyelerine yaklaşıyordu. Bu hala çözülmedi ve devam ediyor.

Örnek 2: Çekirdek bileşeni olarak pahalı bir optik spektrum analizörü gerektiren bir test. Cihaz oldukça eski, üreticiye göre daha büyük bir şirket tarafından satın alınmış ve temelde çözülmüş, eski ve tek belgelendirmesi kötü çevrilmiş gibi görünen uzun soluklu (ve bilgi vermeyen) bir belgeydi. İlk gelişim sırasında, cihazı masamda tutabiliyordum, ancak şimdi 24/7 çok haftalı testleri sırasında hem fiziksel olarak hem de programa bağlıydı.

Hatalar cihazla ilgili ya da ilgisiz göründüğünde, çoğu zaman uygulamanın harici kodunu test etme ve onu uygulamaya koyma ya da körü körüne kod yazma ve çalışmaların arasında bir kaç test süresinde sıkma girişiminde bulunma zorluğu çekmem gerekiyor. program mantığı, OSA ve test donanımının geri kalanının yerinde olmasını gerektirir.

Sanırım sorum şu, buna nasıl yaklaşmalıyım? Cihaz simülatörleri geliştirmek için potansiyel olarak zaman harcayabilirim, ancak geliştirme tahminine göre bunu muhtemelen en çok takdir edebileceğinden daha fazla etkileyeceğini düşündüm. Tüm sorunları da doğru şekilde üretemeyebilir ve buralarda iki kez kullanılan aynı ekipmanı görmek oldukça nadirdir. Birim testlerinde daha iyi olabilirdim ... vb ... konuyla ilgili yüksek sesle konuşabilirim ve başkalarının geçici gecikmelerin gerektiğini, Araştırma ve Geliştirme için bir baş ağrısından çok değil, genellikle şaka olarak algılandığını anlatabilirim. üretime geçtiğinde.


5
Bir cihaz simülatörü (ya da takılabilir bir arayüz) kolaylık içinde kendisi için ödeyecek
cırcır ucube

21
@ ratchetfreak - günlerini cihazları simüle ederek harcayan biri olarak (tam zamanlı olarak bir tıbbi cihaz simülatörü üzerinde çalışıyorum), bir başkasının ekipmanının düşük kaliteli bir simülasyonunun bile, Cihaza bağlı olarak ÇOK zor bir girişim olabileceğini temin ederim. ilgili bağlantılar, protokoller ve veri türleri. OP'nin kullandığı test ekipmanı, uğraşmam gereken donanım gibi bir şeyse, kanlı şeylerin GERÇEKTEN ne yaptığını (sadece teknik özelliklerin söylediklerinin aksine) çözmesi birkaç gün alabilir. Bu nedenle, TÜM bir simülatörün buna değeceği kesin bir sonuç değildir.
Michael Kohne

Yanıtlar:


35

Yönetim, donanıma tam erişiminiz olmadığında yazılımı geliştirmenin ve sürdürmenin daha uzun süreceğini biliyor. Tahminlerini yaparken bunu göz önünde bulundurman gerekiyor. Yazılımınızı üretime sokmak için kabul kriterlerinin bir kısmı, çoğu durumda yazılımı üretime son vermeden sürdürmenin bir yoludur. TDD'yi uyguluyorsanız, bunun doğal olarak gerçekleşmesi gerekir.

60 milyon dolarlık uçak için yazılım yazıyordum. Açıkçası, gereken yüksek derecede güvenilirlik var ve her geliştiriciye çalışma masası için bir tane vermek konusunda isteksizler. Temel olarak, her seviye için gerçek donanımdan, tam bir uçağa kadar olan 5 seviye test ortamımız vardı. Yazılımımızın% 95'inin yalnızca emülatör ve ünite testleri ile geliştirilip hata ayıklanabileceğini tahmin ediyorum. Kalan özelliklerin% 95'i bir sonraki aşamada çalışılabilir, vb.

Kendiniz için benzer test ortamları oluşturmaya çalışın. Asla donanıma asla erişme ihtiyacı duyacağınızı bekleyemezsiniz, ancak ayarladıysanız, böylece donanımınız olmadan yazılımınızın GUI'sini çalıştıramazsanız, pahalı bir kaynak için değerli zaman harcıyorsunuzdur ( mimarinizle ilgili bazı bağlantı sorunlarınız olduğunu belirtin). Diğer geliştiricilerin sizinle aynı sorunları yaşadığını düşünün. Donanım satıcısına halihazırda emülatör veya başka test kaynakları olup olmadığını sordum.

Ayrıca, donanıma yalnızca sınırlı erişiminiz varsa, zihniyetinizi de biraz değiştirmeniz gerekir. Uygulamanızı normal seri şekilde hata ayıklamak yerine, genellikle bilgileri olabildiğince çabuk toplamak amacıyla kod yazmanız gerekir.

Örneğin, belki bir hatanız vardır ve 10 olası nedeni düşünebilirsiniz. Bir makineye girebildiğiniz tek süre, operatör mola sırasında 15 dakika ise, Kısa, Kendi İçinde, Doğru (Derlenebilir), hatayı tetikleyen ve teorilerinizi test etmek için bu SSCCE'yi kullanarak 10 otomatik test yazan bir örnek yazın. ve bir demet veriyi günlüğe kaydedin. Masanıza döndükten sonra, bir sonraki denemeniz için verileri gözden geçirmeniz gerekebilir. Fikir, donanıma sınırlı zamanınızın faydasını en üst düzeye çıkarmaktır.


Bu cevabı en eksiksiz olduğu kabul edildi - ve bence "uygulamalarınızı değiştirin" ile "yönetimi bilinçlendirin" dengesinin iyi olduğunu düşünüyorum. Daha iyi ayrıştırma seviyeleri için biraz çaba harcamak ve bazı donanım simülatörleri seviyelerinin kayda değer olması gerektiğini düşünüyorum ve bunu tahminlerime gösterebilirim. Ayrıca hata ayıklama sırasında çok fazla veri toplayan bazı hızlı tam özellikli testlerde sıkma ipuçlarını da seviyorum - teşekkür ederim.
plast1k

14
"Yönetim anladı" 'dan sonra okumayı bıraktım
PlasmaHH

1
"Her geliştiriciye çalışma masası için bir tane vermek konusunda isteksiz". İronik olarak, muhtemelen her geliştiriciye çalışacak kendi 60 milyon dolarlık uçağını vermenin bir havayolu felaketinin toplam kümülatif maliyetinden daha ucuz olacağını kanıtlamak için yeterli sayıda bükebilirsiniz!
Bay JavaScript

15

Çözülecek sizin olmayan bir problemi çözmeye çalışıyorsunuz.

Yönetim, donanıma erişime öncelik vermelidir. Bu, daha fazla erişime sahip olabileceğiniz anlamına gelebilir, ancak aynı zamanda daha azına sahip olabileceğiniz anlamına da gelebilir.

Karşılaştığınız zorlukları objektif bir biçimde yönetim ekibinize sunun ve rehberlik isteyin. Erişime ihtiyaç duyan diğer kişilerle işbirliği yaparsanız sunumunuz çok daha güçlü olacaktır, bu yüzden hepiniz aynı anda davayı sunabilirsiniz.

Oradan şirket (yönetim) kimin ve ne zaman erişebileceğini önceliklendirmelidir. Kaynakların (eksikliğinin) bulunmaması iş gelişimini etkilediğinden, vermeleri gereken bir iş kararıdır.


4
Yönetimle konuşurken yardımcı olabilecek bir şey, ekipman erişimindeki programlarınızı (veya dönüm noktalarınızı) tahmin etmektir. Önünüzdeki donanım olmadan ancak bu kadarını yapabilirsiniz ve tahminin size verdikleri zamandan geldiğini açıkça belirtirseniz, yönetim tam bilgiyle karar verebilir.
Michael Kohne

4

Siz etkili bir şekilde kör kodlarsınız.

Eğer yönetim test cihazları için ödeme yapmayacaksa, o zaman yüksek bir hata olasılığı veya kullanmak için gerçek cihazlara sahip olmanızdan daha uzun süren bir gelişme olabilir.

Cihazların maliyeti tamamen "geliştirme" döngüsüne tahsis edilmek zorunda değildir. Belki üretim kullanımına veya yedek olarak döndürülebilirler. Başka bir yere ikinci el bile satılabilir mi?

Hata düzeltme aşamalarını hem zaman hem de para olarak deneyin ve maliyetini alın ve ekibinize / şirketinize toplam maliyeti gösterin.


4

Elinizde bazı numaralar veya en azından bazı artılar ve eksiler olduğunda patronlarınızla tartışmak çok daha kolay, bu yüzden önerim maliyete karşı uygun bir analiz yapmaya çalışıyor. Kaba fikir şöyle gider:

  • Bir cihaz simülatörü yazmak için ne kadar geliştirme çabası bekliyorsunuz? (Bir aygıt simülatörünün, özellikle donanımda beklenmeyen tuhaflıklar olduğunda,% 100 orijinal donanımı değiştiremediğini unutmayın).

  • böyle bir araç olmadan ne kadar test / hata ayıklama çalışması bekliyorsunuz? Laboratuar çalışanlarınızın masraflarını da dahil edin, çünkü donanımı test amaçlı olarak bloke etmeniz gerekir. Ayrıca, sistemin hatalar nedeniyle kullanılamayacağı zamandaki maliyetleri de ekleyin ve temel nedeni bulmakta sorun yaşarsınız.

  • Test için ek donanım maliyeti ne kadar olacak?

  • Donanımı test etmek için ne kadar süreyle engellemeniz gerekeceğini düşünüyorsunuz?

Tabii ki, gerçeklik o kadar basit olmayabilir ve bu denklemde çok fazla bilinmeyen değişken var, ancak bazı tahminler yapmaya ve emin olmadığınız durumlarda ortamınızdan diğer insanlara sorun.

Sonuçları yönetime sun, alternatifleri tartış ve sonra karar vermelerine izin ver.


Ben buraya olamaz anlamına düşünüyorum bir cihaz simülatörü unutmayın edebilirsiniz nadiren donanım bazı beklenmedik tuhaflıklar vardır, özellikle orijinal donanımın% 100 yerine
Rémi

@ Rémi: belki "nadiren olabilir" kelimelerin normal İngilizce sıralaması değil midir? FWIW, cevabım için teşekkürler, bunu açıkça ifade etmek için cevabımı değiştirdim.
Doktor Brown

İngilizce'yi yerel olarak konuşamıyorum ama garip okuyor. teşekkürler
Rémi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.