Wenke en beste praktyke om Salesforce-integrasies te toets

verkoopskrag-integrasie

Salesforce-toetsing sal u help om u pasmaat te bevestig Salesforce-integrasies en funksies met ander ondernemingstoepassings. 'N Goeie toets dek alle Salesforce-modules van rekeninge tot leads, van geleenthede tot verslae en van veldtogte tot kontakte. Soos die geval met alle toetse, is daar 'n goeie (effektiewe en doeltreffende) manier om 'n Salesforce-toets te doen en 'n slegte manier. Dus, wat toets Salesforce goeie praktyk?

  • Gebruik die regte toetsinstrumente - Salesforce-toetsing vind plaas in die blaaier of in 'n verduisteringsgebaseerde omgewing. Beide die nuutste blaaiers en verduistering het uitstekende ontfoutingsinstrumente, en u kan dit kombineer met toetsklasse vir baie nuttige resultate. As u egter meer nodig het, moet The Apex Interactive Debugger (of bloot Apex) van Force.com gebruik word. Let daarop dat u ook Salesforce Lightning Inspector, 'n chroom-uitbreiding, kan gebruik om Salesforce Lightning spesifiek te toets. Apex is 'n Force.com platform eie programmeertaal wat baie ooreenkomste met Java het. Dit is 'n objekgeoriënteerde, hooflettergevoelige, sterk soorte programmeertaal wat volg krullerige hakies en puntnotasintaksis. U kan Apex gebruik om geprogrammeerde funksies uit te voer tydens die meeste Force.com-prosesse, insluitend aangepaste skakels en knoppies, opdaterings, verwyderings en opname-gebeurtenishanteerders deur middel van Visualforce-bladsy se persoonlike beheerders of skedulering.
  • Gebruik byeenkomsbyeenkomste - Die regte benaming van u toetsmetodes is baie belangrik voordat u met die skryf van toetse begin. Die toetsmetode se naam moet drie dele bevat. Dit is nameOfMethod (naam van die individuele metode wat u toets, soos die invoeging / opdatering / verwydering / verwydering van die sneller, inligting oor TestPath wat buigsaam is, soos nulkontak as u toets dat die kontak nul is, en geldig wanneer u toets 'n positiewe / negatiewe pad.
  • Verseker 100% dekking - Alhoewel die standaard Salesforce-riglyn is dat eenheidstoets 75% van u kode moet dek (minus toetsklasse, oproepe na System.debug en toetsmetodes) en u nie Apex-kode kan implementeer of AppExchange-programme kan verpak nie, moet u daarop dat dit slegs 'n standaard is en dat u dekking 100% moet wees. Toets al die positiewe / negatiewe gevalle en vir gegewens wat teenwoordig is en nie teenwoordig is nie. Ander belangrike wenke as dit by kodedekking kom, is:
    • U moet toetse uitvoer om die dekkingsnommer vir die kode te verfris, aangesien hierdie getalle nie herlaai word wanneer die Apex-kode opgedateer word totdat die toetse weer uitgevoer word nie.
    • As daar sedert die laaste toetslopie 'n opdatering in die organisasie was, is die risiko dat die kodedekkingsgetalle verkeerd is. Herhaal die toetse vir die regte skatting.
    • Die kode dekkingspersentasie sluit nie die dekking van die bestuurde pakkette in nie, maar die enigste uitsondering is wanneer hierdie toetse veroorsaak dat die snellers brand.
    • Die dekking hang af van die totale aantal kodelyne. As u kode-reëls byvoeg of uitvee, sal u die persentasie beïnvloed.
  • Toetsgevalle in klasse en beheerders - In die ontwikkeling van Salesforce skep die meeste ontwikkelaars afsonderlike klasse en kontrolelêers vir elke funksie. Dit word gedoen om kodering meer georganiseerd, makliker, herbruikbaar en draagbaar te maak. U moet egter daarop let dat hoewel dit makliker is, dit nie meer doeltreffend is nie. U sal draagbaarheid bereik as die toetskode in die oorspronklike klas en die beheerkode self is, aangesien u geen toetsklas sal misloop as u van sandbox na produksie oorskakel nie.
  • Gebruik System.assert () - In Apex, Stelsel.assert() word gebruik om toestande na te gaan. Dit is 'n belangrike funksie, want dit stel u in staat om vas te stel of 'n spesifieke funksie volgens die metode uitgevoer is soos verwag. U moet System.assertEquals () en System.assertNotEquals () tussen kritiese funksies gebruik om u nie net te bepaal of die kode soos dit uitgevoer is nie, maar om ook te verseker dat geen data verkeerd geskryf word as die kode verkeerd loop nie.
  • ComprehensiveTest - Toets moet alles dek. U moet funksionele toetse, vragtoetse, veiligheidstoetse en implementeringstoetse doen.
  • Eenheidstoetse - U moet eenheidstoetse doen om te verifieer dat individuele rekords die korrekte en verwagte resultaat lewer. Terwyl die gebruik van 'n reuse-toets wat die hele kode dek, na 'n goeie idee kan lyk, let op dat die resultate wat gegenereer word, moeiliker is om te ontfout en dat die mislukking moeiliker is om te verstaan. 'N Eenheidstoets moet 'n klein subset van die funksies wat getoets word, dek.
  • Toets grootmaatgevalle - 'N Goeie toetskode (sneller, uitsondering of klas) kan tot enkele honderde rekords (200 vir Apex) betrek word. U moet hiervan gebruik maak en nie net individuele rekords toets nie, maar ook grootmaatgevalle.
  • Positiewe toetse - Toets om te verseker of die verwagte gedrag deur alle verwagte permutasie plaasvind. Die toets moet verifieer dat die gebruiker die vorm korrek ingevul het en dat hy / sy nie die perke oorskry het nie.
  • Negatiewe toetse - Toets die negatiewe gevalle om te verseker dat foutboodskappe korrek geproduseer word. Voorbeelde van sulke negatiewe gevalle is dat u nie negatiewe bedrae kan spesifiseer nie en dat u nie toekomstige datums kan byvoeg nie. Negatiewe toetse is belangrik, want die regte hantering as dinge suid gaan, kan die verskil maak.
  • Outomatiese toetsing - Tradisioneel was Salesforce-toetsing handmatig. U moet outomatiese toetsing oorweeg, aangesien dit meer voordele bied. Dit sluit in:
    • Handmatige toetsing maak u vatbaar vir foute, aangesien dit deur mense gedoen word en nie deur robots nie. Robotte presteer met herhalende aktiwiteite, terwyl mense foute maak as gevolg van verveling, verminderde konsentrasie en konsekwentheid en die neiging om te draai.
    • Handmatige toetsing is herhalend, formuleerend en vermoeiend. Die toetsspan is beter daaraan toe om meer verkennende werk te doen.
  • Voer elke Kode Logika-tak uit - Wanneer voorwaardelike logika gebruik word (as u ternêre operatore ingesluit het), moet elke vertakking van die kodelogika uitgevoer word.
  • Gebruik ongeldige en geldige insette vir oproepe na metodes - Oproepe tot metodes moet gedoen word deur ongeldige en geldige insette te gebruik.
  • Voltooi toetse - Verseker dat die toetse suksesvol afgehandel is, behalwe dat die foute verwag word, sonder uitsondering. Hanteer alle vasgestelde uitsonderings - om dit te vang is nie goed genoeg nie.
  • Gebruik ORDER BY Sleutelwoorde - Gebruik die ORDER BY sleutelwoorde om te verseker dat u rekords teruggestuur word in die volgorde wat u verwag.
  • Moenie aanvaar dat rekord-ID's opeenvolgend gereël word nie - Vermy die algemene fout om aan te neem dat rekord-ID's in opeenvolgende volgorde gerangskik is. Die ID's is nie in stygende volgorde nie, tensy u meerdere rekords met dieselfde versoek ingevoeg het.
  • Bel Test.startTest () en Test.stopTest () - As u 'n Apex-eenheidstoets uitvoer, kry u meer as die 75% -kodedekking wat in Salesforce verpligtend is. U moet stopTest voor bewerings skakel om asynchrone kodes wat nog aan die gang is, af te dwing. Voer nuwe navrae uit vir finale resultate, aangesien ander kode data kan verander. Die gebruik van Test.startTest () en Test.stopTest () verseker dat u die toets binne die limiet van die goewerneur sandbox. Op hierdie manier sal die opstellingskode wat u gebruik nie inmeng nie en u valse negatiewe of positiewe aspekte rondom die goewerneurgrense gee. Test.stopTest () verseker ook dat @future-oproepe voltooi sal word vir toetsing.
  • Leesbaarheid - Leesbaarheid is baie belangrik in eenheidstoetse. Die toetsname moet die spesifieke aksie en die verwagte uitslag bevat. Die metode moet beskrywend en kort wees. Die metode moet so wees dat dit hergebruik kan word in verskillende toetse.
  • Bou groot toetsdatastelle voor startTest - Aangesien u toetse in verskillende sandbox- en produksie-omgewings uitgevoer word, moet u groot toetsdata-stelle bou voordat u startTest bel om te verseker dat die toets die volledige uitvoeringsperke het. By verstek, Salesforce Github voer toetse geïsoleer van produksiedata uit. As u stelseldata soos 'n profiel benodig, kan u die regte ding vir die spesifieke omgewing kry.
  • Genereer u eie toetsdata - Die toetsdata wat u gebruik, moet in die toets gegenereer word. U kan hierdie data genereer met behulp van @testSetup-aantekening en 'n TestUtils-klas om nie net te verseker dat u die regte data het nie, maar om ook te verseker dat al die toetse uitgevoer word op 'n sandbox vir ontwikkelaars, sonder dat u data benodig.
  • Vermy AKA-nuloperasies sonder operasie - Baie toetsers gebruik AKA-nuloperasies sonder operasie. Dit is nuttelose kodes wat niks doen nie. Aangesien dit reeds in u kode is, sal dit u dekkingspersentasie byvoeg.
  • Parallelle toetsuitvoering - Wanneer u toetse vanaf die Salesforce-gebruikerskoppelvlak of die ontwikkelaarskonsole begin, sal die toetse parallel loop. Dit is 'n belangrike kenmerk, aangesien dit die tydsduur van die toets versnel. U moet egter daarop let dat dit tot probleme met data-stryd kan lei, en as u vermoed dat dit kan gebeur, skakel die parallelle uitvoering uit. Die mees algemene oorsake van probleme met datastryd wat dikwels tot UNABLE_TO_LOCK_ROW-foute lei, is:
    • Wanneer toetse bedoel is om dieselfde rekords terselfdetyd by te werk. Opdatering van dieselfde rekords vind gewoonlik plaas as toetse nie hul eie data skep nie.
    • As daar 'n dooie punt is in toetse wat parallel loop en hulle probeer om rekords te skep wat ooreenstem met die indeksveldwaardes. 'N Doodloop sal plaasvind wanneer twee lopende toetse in die ry gestaan ​​het om data terug te gee (dit vind plaas wanneer 2 toevoerrekords met dieselfde unieke indeksveldwaardes in verskillende volgorde toets).
    • Om parallelle toetsuitvoering uit te skakel, gaan na Setup, voer Apex Test in, gaan na Apex Test Execution Options dialoog, kies Disable Parallel Apex Testing, klik OK.

Skakel parallelle toppuntoetsing uit

Huur 'n professionele persoon vir die werk, want hy sal die nodige ervaring en opleiding hê om 'n goeie toets te doen, wat u ook gemoedsrus gee. As u 'n professionele persoon aanstel, kan u op u kernbesigheid konsentreer. Dit bespaar u ook geld omdat u nie 'n interne span vir die werk nodig het nie.

Wat dink jy?

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.