Sobes.tech
Junior — Middle

Раванди тафтиши нармафзори бо истифода аз скриншотҳо чӣ гуна аст?

sobes.tech AI

Ҷавоб аз AI

Таҳқиқи нармафзор бо истифода аз тасвирҳои экранӣ як усули санҷиши визуалӣ мебошад, ки дар он намуди кунунии интерфейси барнома бо тасвири намунавӣ муқоиса карда мешавад. Ин усул барои ошкор кардани регрессияҳои визуалӣ бисёр истифода мешавад.

Раванд одатан аз қадамҳои зерин иборат аст:

  1. Гирифтани автоматӣ ё дастӣ аз тасвирҳои экранӣ аз экранҳо ё компонентҳои муайян.
  2. Захира кардани тасвирҳои намунавӣ, ки ҳамчун дуруст қабул карда мешаванд.
  3. Дар санҷишҳои баъдӣ, тасвири нав аз ҳамон унсур гирифта мешавад.
  4. Муҳосибаи тасвири нав бо тасвири намунавӣ бо истифода аз асбҳои махсус, ки фарқиятҳоро муайян мекунанд (масалан, дар сатҳи пиксел).
  5. Агар фарқиятҳо аз ҳадди муайян гузаранд, санҷиш ноком ҳисобида мешавад ва тағиротҳои визуалӣ таҳлил карда мешаванд.

Масалан дар автоматизатсия бо Python ва китобхонаҳои Selenium ва Pillow:

from selenium import webdriver
from PIL import Image, ImageChops

def compare_screenshots(img1_path, img2_path):
    img1 = Image.open(img1_path)
    img2 = Image.open(img2_path)
    diff = ImageChops.difference(img1, img2)
    if diff.getbbox():
        return False  # Фарқиятҳо ҳастанд
    return True  # Тасвирҳо мувофиқанд

# Дар санҷиш тасвир гирифта ва муқоиса мекунем
browser = webdriver.Chrome()
browser.get('https://example.com')
browser.save_screenshot('current.png')

if not compare_screenshots('baseline.png', 'current.png'):
    print('Фарқиятҳои визуалӣ ошкор шуданд!')
else:
    print('Мувофиқати визуалӣ тасдиқ шуд.')

browser.quit()

Ин усул барои назорати намуди зоҳирӣ ва унсурҳои UI кӯмак мекунад, махсусан дар ҳолатҳои тағирёбии дизайн ё санҷишҳои байни браузерҳо.