Junior
თეთრი ყუთის ტესტირების არსი რა არის?
sobes.tech AI
პასუხი AI-სგან
თეთრი ყუთის ტესტირება (White-box testing) — პროგრამული უზრუნველყოფის ტესტირების მეთოდია, რომელიც შემოწმებს კოდის შიდა სტრუქტურას, დიზაინს და ლოგიკას. ტესტერებს აქვთ წვდომა წყაროს კოდზე და ამ საფუძველზე ქმნიან ტესტის შემთხვევებს:
ძირითადი პრინციპები:
- კოდის დაფარვა: ტესტის შემთხვევები შეიქმნება მაქსიმალური დაფარვისთვის კოდის სხვადასხვა ელემენტზე (ოპერატორები, ფილიალები, გზები):
- შიდა სტრუქტურის ცოდნა: მოითხოვს იმის გაგებას, როგორ მუშაობს პროგრამა შიგნიდან:
- გამოძიება: ლოგიკაში შეცდომები, არასწორი გზები შესრულებაში, ციკლებისა და პირობითი ოპერატორების პრობლემები:
- ავტომატიზაცია: ხშირად გამოიყენება ერთეულ ტესტებში, ინტეგრაციის და უსაფრთხოების ტესტებში — კოდის დონეზე:
დაფარვის ტიპები:
- ოპერატორების დაფარვა (Statement Coverage): შესრულდეს თითოეული ოპერატორი მინიმუმ ერთხელ:
- ფილიალების დაფარვა (Branch Coverage): შესრულდეს თითოეული პირობა (if, else, switch) როგორც true, ასევე false:
- გზების დაფარვა (Path Coverage): შესრულდეს ყველა შესაძლო გზა პროგრამაში (საუკეთესო, მაგრამ ხშირად შეუძლებელია):
Python-ში ფილიალების დაფარვის მაგალითი:
# მაგალითის ფუნქცია
def calculate_discount(price, is_member):
if price > 100 და is_member: # ფილიალი 1 (სწორია)
discount = price * 0.1 # ფილიალი 2 (მოქმედებს თუ ფილიალი 1 'სწორია')
else: # ფილიალი 3 (არასწორია)
discount = 0 # ფილიალი 4 (მოქმედებს თუ ფილიალი 1 'არასწორია')
return price - discount
# ტესტის შემთხვევები ფილიალების დაფარვისთვის:
# 1. price > 100 და is_member == True (ფილიალი 1 სწორი, ფილიალი 2)
# 2. price <= 100 ან is_member == False (ფილიალი 1 არასწორი, ფილიალები 3, 4)
უპირატესობები:
- შეცდომების ადრეული გამოვლენა:
- მნიშვნელოვანია, რომ მნიშვნელოვანი ნაწილები ტესტირებულია:
- ეხმარება კოდის მუშაობის გაგებას და დიზაინის გაუმჯობესებას:
მოხერხებულობები:
- სიღრმისეული ცოდნა სჭირდება:
- შეიძლება იყოს მძიმე დიდი და რთული სისტემებისთვის:
- არ ტესტავს პროგრამის მუშაობას საბოლოო მომხმარებლის თვალსაზრისით (ეს არის შავი ყუთის ტესტირების მიზანი):
მნიშვნელოვანია, რომ პროგრამის როგორ მუშაობს, და არა მხოლოდ რა აკეთებს.