Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Testowanie aplikacji wycinającej teaser z artykułu.
trzczy
post 20.06.2016, 14:25:53
Post #1





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Jest aplikacja, która przerabia artykuł bloga na teaser, czyli taki skrót, zajawkę. Zwraca zadaną ilość znaków licząc od początku. W przypadku, gdy ucięcie pada pomiędzy tagami <code></code>, które mogą się znaleźć w artykule, domyka wszystkie rozpoczęte tagi a niezamknięte tagi pomiędzy tagami <code> i dodaje na koniec domknięcie dla <code>.

Czyli aplikacja tak schludnie ucina zawartą w artykule bloga prezentację kodu. Nie tworzą się krzaczki tylko ładny zhajlajtowany tekst ucięty gdzieś tam wewnątrz kodu.

Czy taką aplikację powinno się przetestować czymś takim jak phpunit? Jeśli tak, to co by taki test robił? Bo test mógłby sprawdzać wynik dla kolejnych długości tego teasera, od 1 do 1000 np. Tylko jaką funkcją potem sprawdzić, że nie ma niedomkniętych tagów?

Może w ogóle jakoś inaczej to testować, a może taka aplikacja nie podlega testowaniu?
Z góry dziękuję
Go to the top of the page
+Quote Post
Crozin
post 20.06.2016, 14:44:47
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Jak najbardziej powinno zostać to mocno przetestowane na możliwie dużej liczbie przypadków testowych. Jak mógłby wyglądać test?
  1. $obj = new MyClass(50); // usługa skracająca tekst do 50 znaków
  2. $content = '<p>Blah blah blah blah blah</p><code>some code some code some code some code some code some code some code some code some code</code>';
  3.  
  4. $result = $obj->createTeaser($content);
  5.  
  6. $this->assertEqual('<p>Blah blah blah blah blah</p><code>some code some code some...</code>', $result);
Oczywiście to tylko jedne z przypadków testowych, których tutaj zapewne będziesz potrzebować dziesiątki.
Go to the top of the page
+Quote Post
trzczy
post 20.06.2016, 15:02:29
Post #3





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Rozumiem, ale jeszcze muszę o coś spytać. Za pośrednictwem funkcji assertEqual będzie sprawdzana identyczność stringa spodziewanego i stringa wynikowego aplikacji.

Ten string spodziewany to muszę "na piechotę" określić? Przy kilkudziesięciu testach muszę określić "na piechotę" kilkadziesiąt spodziewanych stringów?
Go to the top of the page
+Quote Post
Crozin
post 20.06.2016, 15:22:58
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W skrócie: tak - test musi skądś wiedzieć jaka wartość jest uznawana za odpowiednią/wzorcową.
Go to the top of the page
+Quote Post
trzczy
post 20.06.2016, 19:05:49
Post #5





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Ok, dzięki za pomoc. Gdyby ktoś jeszcze miał jakiś pomysł, to śmiało.
Go to the top of the page
+Quote Post
LowiczakPL
post 20.06.2016, 21:45:28
Post #6





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


niedomknięte tagi naprawia tidy http://php.net/manual/en/tidy.repairstring.php


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
trzczy
post 22.06.2016, 10:43:55
Post #7





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Cytat(LowiczakPL @ 20.06.2016, 22:45:28 ) *
niedomknięte tagi naprawia tidy

Zastosowałem mechanizm regenerujący DOMDocument zamiast tidy. Jest większa kontrola nad wynikowym stringiem. W tidy napotkałem na schody i pewnie musiałbym sporo rozkminiać w konfiguracji tidy, żeby ogarnąć.

W każdym razie
1. tidy dodaje przełamanie linii na końcu zwracanego kodu.
2. Dodanie zamykającego tagu ok, ale jeszcze przed tym domykającym tagiem trza dodać '...'. Przy zagnieżdzonym domykaniu tagów dodanie 3 kropeczek musi być też zagnieżdżone.

Aczkolwiek nie kwestionuję, że tidy może też tu starczyć.

Ten post edytował trzczy 22.06.2016, 10:47:27
Go to the top of the page
+Quote Post
Lion
post 22.06.2016, 11:12:38
Post #8





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


Przydatne mogą się okazać także asercje assertContains, assertRegExp, assertStringMatchesFormat oraz utworzenie plików z fixturami, datasetów itp.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 19:39