Middle
Kam reikalinga hen funkcija?
sobes.tech AI
Atsakymas iš AI
Žemo funkcija yra būtina norint paversti įvesties duomenis (eilutes, failus, objektus) bet kokio dydžio į išvesties reikšmę su fiksuotu dydžiu (žymę, digest), kuri paprastai yra skaičius arba eilutė su šešioliktainiais simboliais.
Pagrindiniai naudojimo tikslai QA:
- Duomenų vientisumo patikrinimas: Palyginus pirminio duomenų žymę su gautų duomenų žyme, galima greitai nustatyti, ar duomenys buvo pakeisti perdavimo, saugojimo ar apdorojimo metu.
- Paieškos ir palyginimo spartinimas: Žymės reikšmės naudojamos duomenų struktūrose (žemėlapių lentelės, žemėlapių rinkiniai) greitam prieigai arba jų unikalumo nustatymui. Tai yra kritiška testavimo duomenų ir scenarijų optimizacijai.
- Unikalių identifikatorių kūrimas: Žemo funkcijos gali būti naudojamos trumpų ir unikalių raktų generavimui objektų ar failų identifikavimui, kas naudinga dirbant su dideliais testavimo duomenų rinkiniais.
- Dublikato nustatymas: Žymės reikšmių palyginimas efektyviai leidžia rasti identiškus failus ar įrašus testų bazėje, išvengiant pasikartojimo.
- Slaptų duomenų slėpimas (kartu su kitais metodais): Nors žemo funkcijos nėra šifravimo metodas, jos gali būti naudojamos kaip sudėtingesnių duomenų anonimizavimo procesų dalis, paverčiant pirmines reikšmes negrįžtamais žymėmis.
Pavyzdžiai automatiniame testavime:
- Failų turinio vientisumo patikrinimas: failų žymių palyginimas prieš ir po operacijos (pvz., įkėlimo, eksportavimo).
- Greitas testinių duomenų paieška: naudojant žemėlapių lenteles, saugant ir greitai randant duomenis pagal tam tikrus kriterijus.
- Unikalių žymų kūrimas ataskaitoms: žymų generavimas iš konfigūracijų ar testų paleidimų jų unikalumui nustatyti.
import hashlib
def calculate_md5_hash(data):
""" MD5 žymės skaičiavimas įvestiems duomenims """
md5_hash = hashlib.md5()
jei isinstance(data, str):
data = data.encode('utf-8') # eilutės kodavimas į baitus
md5_hash.update(data)
return md5_hash.hexdigest()
# Pavyzdys naudojimo
failo turinys = "Tai yra testinio failo turinys."
failo žymė = calculate_md5_hash(failo turinys)
print(f"Failo turinio žymė: {failo žymė}")
# Modifikuoto turinio simuliacija
pakeistas turinys = "Tai yra pakeistas testinio failo turinys."
modified_hash = calculate_md5_hash(pakeistas turinys)
print(f"Pakeisto turinio žymė: {modified_hash}")
jei failo žymė == pakeistas žymė:
print("Žymės sutampa - turinys tas pats.")
kitu atveju:
print("Žymės nesutampa - turinys pasikeitė.")