Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 0

"Lazy computing", zwany też "lazy evaluation", czy po polsku "wartościowanie leniwe", bądź "obliczanie krótkozakresowe" jest często przyjmowanym w pracy różnych kompilatorów sposobem przeprowadzania obliczeń, który ma uprościć, przyspieszyć, bądź usprawnić przebieg procesu. 

Najbardziej popularnym i wspominanym w teorii testowania problemem związanym z lazy computingiem jest fakt potencjalnego pomijania warunków umieszczonych w decyzyjnych miejscach kodu - zgodnie z logicznymi zasadami "pochłaniania" pokrewnymi z regułami takimi jak reguła opuszczania koniunkcji, czy reguła opuszczania alternatywy. 

Najprostszy możliwy przykład:

1. Zdanie (A ∨ B) może być prawdziwe albo fałszywe. 
2. Jeśli składowe zdanie A jest prawdziwe, to zdanie (A ∨ B) jest prawdziwe. 
3. Zdanie A jest faktycznie prawdziwe. Zdanie B może być zarówno prawdziwe jak i nieprawdziwe. 
4. Proces przebiegnie zgodnie z prawdziwością zdania (A ∨ B). 
------

Wniosek: Po obejrzeniu wyniku procesu nie wiem niczego nowego o wpływie prawdziwości zdania składowego B na wynik tego procesu. 

"Lazy computing" jest często podawany jako argument za wprowadzaniem bardziej restrykcyjnych metryk testowego pokrycia kodu, właśnie po to, aby wymusić przeprowadzanie testów ścieżek, które mogłyby umknąć testerowi przez takie zachowanie kompilatora. 

Dobór miar pokrycia powinien uwzględniać ten aspekt, więc przy używaniu miar pokrycia kodu warto ustalić, czy kompilator faktycznie wykorzystuje "lazy computing", czy można wybrać, czy będzie z niego korzystał, czy nie; jeśli z niego korzysta, to w zgodzie z jakimi preferencjami etc. 

  • Odpowiedział
  • @ | 14.09.2015
  • TRENER MODERATOR ALTKOM AKADEMII