Marketing treści

Wskazówki i sprawdzone metody testowania integracji Salesforce

Testy Salesforce pomogą Ci zweryfikować dostosowane Integracje Salesforce i funkcjonalności z innymi aplikacjami korporacyjnymi. Dobry test obejmuje wszystkie moduły Salesforce, od kont po potencjalnych klientów, od szans sprzedaży po raporty i od kampanii po kontakty. Jak w przypadku wszystkich testów, istnieje dobry (skuteczny i wydajny) sposób wykonania testu Salesforce i zły sposób. A więc jakie są dobre praktyki testowania Salesforce?

  • Użyj odpowiednich narzędzi testowych - Testowanie Salesforce odbywa się w przeglądarce lub w środowisku opartym na eclipse. Zarówno najnowsze przeglądarki, jak i eclipse mają świetne narzędzia do debugowania, które można połączyć z klasami testowymi, aby uzyskać bardzo pomocne wyniki. Jeśli jednak potrzebujesz więcej, powinieneś skorzystać z Apex Interactive Debugger (lub po prostu Apex) firmy Force.com. Pamiętaj, że możesz również użyć Salesforce Lightning Inspector, rozszerzenia Chrome, aby przetestować Salesforce Lightning. Apex to życie.com zastrzeżony język programowania platformy, który jest bardzo podobny do języka Java. Jest to język programowania zorientowany obiektowo, bez rozróżniania wielkości liter i silnie typów, który jest zgodny z nawiasami klamrowymi i składnią notacji kropkowej. Możesz używać Apex do wykonywania zaprogramowanych funkcji podczas większości procesów Force.com, w tym niestandardowych linków i przycisków, aktualizacji, usuwania i obsługi zdarzeń wstawiania rekordów za pośrednictwem niestandardowych kontrolerów lub harmonogramów strony Visualforce.
  • Stosuj odpowiednie konwencje nazewnictwa - Właściwe nazwanie metod testowych przed rozpoczęciem pisania testów jest bardzo ważne. Nazwa metody badawczej powinna składać się z trzech części. Są to nameOfMethod (nazwa pojedynczej metody, którą testujesz, np. Wstaw / aktualizuj / usuń / cofnij usunięcie podczas testowania wyzwalacza, informacje o ścieżce TestPath, która jest elastyczna, np. Zerowy kontakt, jeśli testujesz, że kontakt jest pusty, i jest ważny podczas testowania ścieżka pozytywna / negatywna.
  • Zapewnij 100% pokrycia - Chociaż standardowa dyrektywa Salesforce mówi, że testy jednostkowe powinny obejmować 75% twojego kodu (bez klas testowych, wywołań System.debug i metod testowych), a nie będziesz w stanie wdrożyć kodu Apex ani spakować aplikacji AppExchange, powinieneś pamiętaj, że to tylko standard, a Twoim celem powinno być 100% pokrycie. Przetestuj wszystkie pozytywne / negatywne przypadki oraz dane, które są obecne i nieobecne. Inne ważne wskazówki dotyczące pokrycia kodu to:
    • Powinieneś uruchomić testy, aby odświeżyć numery pokrycia kodu, ponieważ liczby te nie są odświeżane, gdy kod Apex jest aktualizowany do czasu ponownego uruchomienia testów.
    • Jeśli w organizacji nastąpiła aktualizacja od ostatniego uruchomienia testu, istnieje ryzyko, że numery pokrycia kodu będą nieprawidłowe. Ponownie uruchom testy, aby uzyskać prawidłowe oszacowanie.
    • Procent pokrycia kodu nie obejmuje pokrycia kodu z testów pakietów zarządzanych, z jedynym wyjątkiem, gdy te testy powodują uruchomienie wyzwalaczy.
    • Pokrycie zależy od całkowitej liczby linii kodu. Jeśli dodasz lub usuniesz wiersze kodu, wpłyniesz na procent.
  • Przypadki testowe w klasach i kontrolerach - W rozwoju Salesforce większość programistów tworzy osobne klasy i pliki kontrolerów dla każdej funkcji. Ma to na celu uczynienie kodowania bardziej zorganizowanym, łatwiejszym, wielokrotnego użytku i przenośnym. Należy jednak pamiętać, że chociaż jest to łatwiejsze, nie jest bardziej wydajne. Osiągniesz przenośność, jeśli kod testowy będzie w oryginalnej klasie i samym kodzie kontrolera, ponieważ nie przegapisz żadnej klasy testowej podczas migracji z piaskownicy do produkcji.
  • Użyj System.assert () - W Apex, System.asert() służy do sprawdzania warunków. Jest to ważna funkcja, ponieważ pozwala określić, czy dana funkcja została wykonana przez metodę zgodnie z oczekiwaniami. Powinieneś używać System.assertEquals () i System.assertNotEquals () między krytycznymi funkcjami, które nie tylko pomagają określić, czy kod został wykonany tak, jak powinien, ale także zapewniają, że żadne dane nie zostaną błędnie zapisane, jeśli kod pójdzie źle.
  • Kompleksowy test - Testowanie powinno obejmować wszystko. Należy przeprowadzić testy funkcjonalne, testy obciążenia, testy bezpieczeństwa i testy wdrożeniowe.
  • Testy jednostkowe - Powinieneś mieć testy jednostkowe, aby zweryfikować, czy poszczególne rekordy dają poprawny i oczekiwany wynik. Chociaż użycie gigantycznego testu, który obejmuje cały kod, może wydawać się dobrym pomysłem, pamiętaj, że wygenerowane wyniki będą trudniejsze do debugowania, a niepowodzenie będzie trudniejsze do zrozumienia. Test jednostkowy powinien obejmować niewielki podzbiór testowanej funkcjonalności.
  • Testuj przypadki zbiorcze - Dobry kod testowy (wyzwalacz, wyjątek lub klasa) może obejmować do kilkuset rekordów (200 dla Apex). Warto to wykorzystać i przetestować nie tylko pojedyncze rekordy, ale także zbiorcze przypadki.
  • Pozytywne testy - Sprawdź, czy oczekiwane zachowanie występuje przez wszystkie oczekiwane permutacje. Test powinien sprawdzić, czy użytkownik poprawnie wypełnił formularz i czy nie przekroczył limitów.
  • Negatywne testy - Przetestuj negatywne przypadki, aby upewnić się, że komunikaty o błędach są generowane poprawnie. Przykładami takich negatywnych przypadków są brak możliwości określenia kwot ujemnych i brak możliwości dodania przyszłych dat. Negatywne testy są ważne, ponieważ prawidłowe postępowanie, gdy sprawy idą na południe, może mieć znaczenie.
  • Automatyzacja testów - Tradycyjnie testy Salesforce były wykonywane ręcznie. Powinieneś rozważyć automatyczne testowanie, ponieważ oferuje to więcej korzyści. Obejmują one:
    • Testowanie ręczne sprawia, że ​​jesteś podatny na błędy, ponieważ testują go ludzie, a nie roboty. Roboty celują w powtarzalnych czynnościach, podczas gdy ludzie popełniają błędy z powodu nudy, zmniejszonej koncentracji i konsekwencji oraz skłonności do chodzenia na skróty.
    • Testowanie ręczne jest powtarzalne, formalne i męczące. Zespołowi testującemu lepiej jest wykonywać pracę, która jest bardziej odkrywcza.
  • Wykonaj każdą gałąź logiki kodu - W przypadku korzystania z logiki warunkowej (po uwzględnieniu operatorów trójskładnikowych) każda gałąź logiki kodu powinna zostać wykonana.
  • Użyj nieprawidłowych i prawidłowych danych wejściowych dla wywołań metod - Wywołania metod powinny być wykonywane przy użyciu nieprawidłowych i prawidłowych danych wejściowych.
  • Pełne testy - Upewnij się, że testy zakończyły się pomyślnie - nie powinny przechodzić przez żadne wyjątki, chyba że spodziewane są błędy. Obsługuj wszystkie złapane wyjątki - ich wyłapanie nie wystarczy.
  • Użyj słów kluczowych ORDER BY - Aby upewnić się, że rekordy zostaną zwrócone w oczekiwanej kolejności, użyj słów kluczowych ORDER BY.
  • Nie zakładaj, że identyfikatory rekordów są ułożone sekwencyjnie - Uniknij częstego błędu polegającego na zakładaniu, że identyfikatory rekordów są ułożone w kolejności sekwencyjnej. Identyfikatory nie są w porządku rosnącym, chyba że wstawiłeś wiele rekordów z tym samym żądaniem.
  • Wywołaj Test.startTest () i Test.stopTest () - Po uruchomieniu testu jednostkowego Apex uzyskasz więcej niż 75% pokrycia kodu, które jest obowiązkowe w Salesforce. Przed asercjami należy wywołać stopTest, aby wymusić zakończenie kodów asynchronicznych, które mogą nadal działać. Uruchom nowe zapytania w celu uzyskania ostatecznych wyników, ponieważ inny kod może zmienić dane. UsingTest.startTest () i Test.stopTest () zapewnia, że ​​test znajduje się w piaskownicy w granicach jego zarządcy. W ten sposób używany kod instalacyjny nie będzie przeszkadzał i dawał fałszywe negatywy lub pozytywy otaczające limity programu zarządzającego. Test.stopTest () zapewnia również, że wywołania @future zostaną zakończone w celu przetestowania.
  • Czytelność - Czytelność jest bardzo ważna w testach jednostkowych. Nazwy testów powinny zawierać konkretne działanie, które ma zostać podjęte i oczekiwany wynik. Metoda powinna być opisowa i krótka. Metoda powinna być taka, aby można ją było wykorzystać wielokrotnie w różnych testach.
  • Zbuduj duże zestawy danych testowych przed rozpoczęciem testu - Ponieważ testy będą działały w różnych środowiskach piaskownicy i środowiskach produkcyjnych, przed wywołaniem metody startTest utwórz duże zestawy danych testowych, aby upewnić się, że test ma pełne limity wykonania. Domyślnie, Github Salesforce uruchamia testy odizolowane od danych produkcyjnych. Gdy potrzebujesz danych systemowych, takich jak profil, zapytaj, aby uzyskać właściwą rzecz dla tego konkretnego środowiska.
  • Wygeneruj własne dane testowe - Dane testowe, których używasz, powinny zostać wygenerowane w teście. Możesz wygenerować te dane za pomocą adnotacji @testSetup i klasy TestUtils, aby nie tylko upewnić się, że masz odpowiednie dane, ale także zapewnić, że wszystkie testy są uruchamiane w piaskownicy programisty bez wymagań dotyczących danych.
  • Unikaj operacji zerowych AKA bez operacji - Wielu testerów używa operacji zerowych AKA bez operacji. To są bezużyteczne kody, które nic nie robią. Ponieważ są już w twojej bazie kodu, dodadzą do twojego procentu pokrycia.
  • Równoległe wykonywanie testów - Gdy uruchamiasz testy z interfejsu użytkownika Salesforce lub Developer Console, testy będą przebiegać równolegle. Jest to ważna funkcja, ponieważ przyspiesza czas wykonywania testu. Należy jednak pamiętać, że może to prowadzić do problemów z rywalizacją o dane, a jeśli podejrzewasz, że może się to zdarzyć, wyłącz wykonywanie równoległe. Najczęstsze przyczyny problemów ze rywalizacją o dane, które często prowadzą do błędów UNABLE_TO_LOCK_ROW, to:
    • Gdy testy mają aktualizować te same rekordy w tym samym czasie. Aktualizacja tych samych rekordów ma zwykle miejsce, gdy testy nie tworzą własnych danych.
    • W przypadku zakleszczenia testów, które są uruchomione równolegle, próbują one utworzyć rekordy, które mają pasujące wartości pól indeksu. Zakleszczenie nastąpi, gdy 2 uruchomione testy ustawią się w kolejce do wycofania danych (dzieje się tak, gdy 2 testy wejściowe rekordów, które mają te same unikalne wartości pól indeksu w różnej kolejności).
    • Aby wyłączyć równoległe wykonywanie testów, przejdź do Setup, wejdź do Apex Test, przejdź do okna dialogowego Apex Test Execution Options, wybierz Disable Parallel Apex Testing, kliknij OK.

Wyłącz równoległe testowanie wierzchołka

Zatrudnij profesjonalistę do pracy, ponieważ będzie miał doświadczenie i przeszkolenie niezbędne do wykonania dobrego testu, co również zapewni Ci spokój ducha. Zatrudnienie profesjonalisty pozwala skoncentrować się na podstawowej działalności. Oszczędza również pieniądze, ponieważ nie będziesz potrzebować własnego zespołu do pracy.

Amara Kukreji

Amar Kukreja ma wieloletnie doświadczenie w testowaniu Salesforce. Używa Apex, a także innych testów. Oferuje również inne powiązane usługi Salesforce, w tym wstępną konfigurację i zarządzanie Salesforce Github Salesforce.

Powiązane artykuły

Powrót do góry przycisk
Zamknij

Wykryto Adblock

Martech Zone jest w stanie udostępnić Ci te treści bez żadnych kosztów, ponieważ zarabiamy na naszej witrynie poprzez przychody z reklam, linki partnerskie i sponsoring. Będziemy wdzięczni za usunięcie blokady reklam podczas przeglądania naszej witryny.