Sobes.tech
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)

უპირატესობები:

  • შეცდომების ადრეული გამოვლენა:
  • მნიშვნელოვანია, რომ მნიშვნელოვანი ნაწილები ტესტირებულია:
  • ეხმარება კოდის მუშაობის გაგებას და დიზაინის გაუმჯობესებას:

მოხერხებულობები:

  • სიღრმისეული ცოდნა სჭირდება:
  • შეიძლება იყოს მძიმე დიდი და რთული სისტემებისთვის:
  • არ ტესტავს პროგრამის მუშაობას საბოლოო მომხმარებლის თვალსაზრისით (ეს არის შავი ყუთის ტესტირების მიზანი):

მნიშვნელოვანია, რომ პროგრამის როგორ მუშაობს, და არა მხოლოდ რა აკეთებს.