Door Jelle Mol

Product Owner

Verbeteringen aan prijsalerts en Pricewatch - Development-iteratie #271/272

07-11-2023 • 14:42

47

In de afgelopen twee sprints hebben we gewerkt aan een aantal verbeteringen in de Pricewatch, waaronder het eenvoudiger wijzigen van je prijsalerts. Daarnaast zijn we met ons aanbod van abonnementen overgestapt op jaarbetalingen en maakte een van onze developers jacht op een flaky test.

Verbeterde interactie in prijsalerts

Prijsalerts zijn een handige manier om op de hoogte gesteld te worden van prijsdalingen van jouw favoriete producten. Eenmaal ingesteld kon je een prijsalert echter alleen wijzigen door hem uit te zetten en opnieuw in te stellen. Deze interactie hebben we daarom verbeterd. Het instellen van een prijsalert verloopt voortaan via het notificatie-icoontje achter wacht je op een prijsdaling, maar werkt verder op dezelfde manier als voorheen. Handig is dat de ingestelde prijs daarna altijd zichtbaar blijft, mits je ingelogd bent, anders alleen binnen de sessie. Wil je de prijsalert wijzigen, dan doe je dat eenvoudig via het bewerkicoontje. Verwijderen gaat vanzelfsprekend via het prullenbakicoontje.

Prijsalerts wijzigen

Voor de oplettende kijker: het ontwerp van de willen-, hebben- en vergelijken-knoppen hebben we ook gelijkgetrokken met die van de nieuwe prijsalert. De functionele werking is echter onveranderd.

Andere Pricewatch-verbeteringen

Naast de nieuwe manier van prijsalerts instellen hebben we nog enkele andere verbeteringen doorgevoerd. De e-mailtekst van prijsalerts hebben we verduidelijkt door uit te leggen dat de prijs van het product gedaald is onder de ingestelde prijs én wat die ingestelde prijs was. Voorheen werd alleen vermeld wat de nieuwe grens voor de prijsalert was, wat soms tot verwarring leidde.

Daarnaast hebben we aan het productoverzicht in de Pricewatch een Getest-label toegevoegd. Hiermee kun je in één oogopslag zien welke producten door het Tweakers Testlab getest zijn. Filteren op producten die getest zijn, kon al langer via het "Getest vanaf"-filter onder het kopje "Overige".

Tot slot hebben we een kleine aanpassing doorgevoerd in de knoppen van de Pricewatch zodat ze consistent zijn met ons designsysteem. De zogenaamde chevrons (») zijn weggehaald en knoppen die leiden naar een webshop, zijn voorzien van een icoon om duidelijk te maken dat je Tweakers verlaat. Ook zijn de knoppen iets groter geworden.

Getest-label Pricewatch

Inzicht in stemmen op deals

Eind september introduceerden we op de Prijsdalingen-pagina in de Pricewatch de mogelijkheid om bij een deal te stemmen. Daarmee kun je aangeven of je de getoonde deal ook echt een deal vindt of niet. Om inzicht te geven in de verhouding tussen de plus- en minstemmen, hebben we daar een pop-upje aan toegevoegd dat aangeeft waarop de zichtbare score gebaseerd is. Zo kun je nog beter onderscheiden of de getoonde deal ook door anderen als deal gezien wordt.

Deal voting tooltip

Abonnementen met jaarbetaling

In verband met een wijziging bij onze interne betalingsprovider zijn we overgestapt op abonnementen met alleen jaarbetaling. Dat betekent dat zowel het Hero- als het Elite-abonnement voortaan jaarlijks vooruitbetaald wordt en na de looptijd automatisch stopt. Eén maand voor de einddatum is het mogelijk om het abonnement te verlengen; hiervoor sturen we altijd een herinnering. Alle actieve abonnees hebben op 23 oktober bericht hierover ontvangen in de vorm van een e-mail en DM. De nieuwe abonnementen met jaarbetaling zijn inmiddels af te sluiten in onze aboshop.

De aanleiding hiervoor is zoals gezegd een wijziging bij onze interne betalingsprovider. We hebben een aantal scenario's uitgewerkt voor het betalen van Tweakers-abonnementen, waaronder ook automatische incasso's via derde partijen of andere systemen van DPG Media. Aan elk scenario zaten voor- en nadelen. Na een grondige overweging hebben we besloten alleen nog abonnementen aan te bieden met een eenmalige vooruitbetaling per jaar. Karmakorting blijft onverminderd van toepassing.

De jacht op de flaky test

Als developer bij Tweakers is het eenvoudig om je werk te deployen, doordat er veel geautomatiseerd is. Deployen is een kwestie van de code pushen en een automergerequest aanmaken. Het systeem doet de rest van testen, compileren en deployen.

Althans, dat is de bedoeling. Soms faalt een test, waardoor het deploymentproces wordt afgebroken. Als de code de test heeft stukgemaakt, is dit wenselijk. Het voorkomt immers dat er code wordt gedeployed die stuk is. Soms faalt er echter een test in een heel ander gebied dan waarin de developer heeft gewerkt, en slaagt de test wel als hij nog eens uitgevoerd wordt: een flaky test dus. Zo’n flaky test faalt willekeurig, waardoor je als developer niet kunt vertrouwen op geautomatiseerde deployment. Als developers niet kunnen vertrouwen op een goede werking, bestaat de kans dat ze hun pipelines in de gaten moeten houden, wat ten koste gaat van hun productiviteit.

In de testsuite van de Tweakers-codebase zat zo’n flaky test. We waren erop gebrand om deze op te lossen om de betrouwbaarheid van de pipeline te kunnen verbeteren. Dé manier om een bug op te lossen is door die eerst te reproduceren. Dit is bij een flaky test niet eenvoudig, omdat de test vaak wel goed gaat en slechts sporadisch faalt. Het betrouwbaar kunnen laten falen van zo'n flaky test is daarom essentieel om het probleem op te kunnen lossen. De desbetreffende flaky test zat in de forumcode. De test faalde soms als het laatste bericht in een forumthread 1 cijfer hoger lag dan verwacht. Zo’n bericht had bijvoorbeeld als waarde ‘1695042579’. Dit cijfer lijkt verdacht veel op een datum in aantal seconden sinds epoch en inderdaad, het cijfer omzetten in een datum geeft het tijdstip waarop de test werd uitgevoerd.

Met deze kennis dook onze developer de code in, waar hij constateerde dat de test gebruikmaakt van Chronos, de forumcode van de date-functie van de database. Het gebruik van twee verschillende manieren om met datums om te gaan zou een verklaring kunnen zijn waarom de test faalt, als de twee manieren maar nét genoeg van elkaar verschillen. De developer probeerde de Chronos-datum vast te zetten op een ander tijdstip dan de datumfunctie van de database zou teruggeven, maar hiermee bleef de test slagen. Dit was dus blijkbaar toch niet de oorzaak van het probleem.

Second-rollover

Tijdens het uitvoeren van een test loopt de systeemtijd van het besturingssysteem door. Als een test om 15:03:03 begint, kan het zijn dat het net 15:03:04 is geworden als de verwachte uitkomst wordt vergeleken met het resultaat. Als de test verwacht dat de datum een bepaalde waarde heeft, kan deze dus ondertussen anders zijn, waardoor een test (onterecht) faalt.

Ook het tactisch plaatsen van sleep(1) in de testcode en de desbetreffende forumcode om een zogenoemde second-rollover (zie kader) te forceren, kon het probleem niet reproduceren; de test bleef slagen. Dit was het moment waarop de developer besloot om niet met z’n hoofd tegen de muur te beuken, maar om even een pauze te nemen met een warme douche.

Met nog natte haren besloot hij om de second-rollover nog niet uit te sluiten. De developer plaatste de sleep(1)-calls in de parser van Chronos en toen faalde de test wel. Het moeilijkste zat erop; de developer was in staat om de test consequent te laten falen. Met nog wat meer experimenteren leek het probleem echter alsnog onverklaarbaar. Het deed zich voor als de second-rollover plaatsvond vóórdat de test werd uitgevoerd, maar de test draaide in isolatie, dus dat leek onverklaarbaar.

Nog wat later, de haren waren ondertussen droog, viel het kwartje bij de developer. Voordat de test wordt gedraaid, wordt de database gevuld met testdata. Als de second-rollover tijdens het vullen plaatsvond, faalde de test. Het bleek dat de testdata dus zelf incorrect was, waardoor de test faalde. Met de test zelf en de onderliggende code was er dus geen enkel probleem.

Het probleem was daarna eenvoudig opgelost; de developer zorgde ervoor dat de datum in een variable werd geplaatst bij het genereren van de testdata. Hiermee slaagde de test consequent, second-rollover of niet, en was de flaky test verholpen.

En verder

  • Alle Twitter-verwijzingen en iconen hebben we vervangen door X.
  • Op basis van een succesvolle a/b-test hebben we de ankeilers op de frontpage aangepast. Het categorielabel is verwijderd en de labels voor prijzen, productreviews en forumtopics zijn verplaatst naar linksboven. Geschreven reviews met een video zijn voortaan te herkennen aan het kleine video-icoon naast de subtitel. Bij video-items wordt nog steeds het grote video-icoon getoond.
  • Een andere verbetering aan de ankeilers zit in het prijslabel. Dit toont voortaan de prijs van de uitvoering die daadwerkelijk is getest, in plaats van de laagste prijs uit de productserie.
  • Bij het aanpassen van een V&A-beoordeling verscheen een 403. Dat is nu opgelost.
  • Tags met slashes geven geen 404 meer.
  • Reacties van dezelfde dag worden weer getoond in je eigen reactieoverzicht, naar aanleiding van deze bugmelding.
  • Dankzij een aantal optimalisaties geven zoekopdrachten als 'x' geen time-out meer.
  • Als gevolg van aanhoudende problemen met Feedburner hebben we besloten om RSS-feeds vanaf nu vanuit onszelf te gaan serveren.
  • Door een fout in de feeds van enkele webshops hadden we een aantal prijzen van (meer dan) 1 miljoen euro in de Pricewatch staan. Deze prijzen zijn verwijderd en vervolgens hebben we de prijshistorie ook hersteld, zodat de prijsgrafiek weer bruikaar is en deze producten niet onbedoeld als prijsdaling worden getoond.

Reacties (47)

47
47
24
2
0
15
Wijzig sortering
Wat ook handig zou zijn is als je meerdere produkten zou kunnen hangen aan 1 prijsalert...bijvoorbeeld een aantal RTX 4070's, maar dan van verschillende merken. Zo wordt je gewaarschuwd als er eender welke RTX 4070 onder een ingestelde prijs terecht komt zonder dat je meerdere prijsalerts moet aanmaken. Het zou ook handig zijn als je dan in je wenslijst de prijs van het op dat moment goedkoopste produkt in je prijsalert kan zien (bijvoorbeeld de prijs van de goedkoopste RTX 4070 in dit geval).
Positieve veranderingen, zou het ook fijn vinden als we sommige verkopers konden blokkeren uit de pricewatch, zodat die niet mee genomen worden als je door alles heen scrollt.
Auteurjelle. Product Owner @aaradorn8 november 2023 08:51
Bedoel je webshops? Een shopfilter hebben we al een hele poos, dat kun je instellen met het filter "Winkels". Voor verkopers op Vraag & Aanbod bestaat een dergelijke functie niet, maar zoals @RobbyTown zegt kun je dat eventueel oplossen met custom CSS.
Inderdaad, webshops, wist niet dat die filter bestond, ga hem maar eens gelijk toepassen!
Lang leve de custom css

Hier alvast een basis
MaxICT doorstrepen in Pricewatch ;)
Ik gebruik de pricewatch ook al jaren met plezier.

Één optie wat ik graag zou zien: de mogelijkheid tot het filteren van routers met functies verborgen achter een abonnement.
Heb je hier voorbeelden van? Wellicht dat @Glaanie van ons Productcontent-team hier wat mee kan :)
Nou ik bedoel eigenlijk, ik wil geen router met functionaliteit verborgen achter een abonnement. Als ik die routers in de pricewatch eruit kan filteren, zou dat de pricewatch wat routers betreft meer overzichtelijk maken.

Als ik nu ga vergelijken op routers, en een aantal routers selecteer, heb ik keuze uit enorm veel filter opties, maar weet ik nog niet of de routers die overblijven een abonnement vereisen voor bepaalde functies. Ik denk persoonlijk dat de filter keuze wel/geen routers met abo een goede toevoeging is.

Verder ben ik erg blij met de pricewatch, absoluut een happy gebruiker hier.

Ik hoop dat je dit bedoelt met "voorbeeld" anders hoor ik het wel, bedankt.
Als je zoals gezegd door @jelle. hier voorbeelden van hebt, wil je een topic met die voorbeelden aanmaken in het Pricewatch forum? Dan kunnen we ernaar kijken en wellicht dat we er een filteroptie van kunnen maken.
Bij mij werkt de Vergelijken-knop in een productview niet meer sinds de nieuwe stijl. Zijn er toevallig meer mensen die hier last van hebben? Dat is de enige knop die niet lijkt te werken. Gaat in mijn geval om de laatste versie van Edge in Windows 11.
Heb je dat probleem nog steeds na een harde refresh?
Ah, dat heeft het opgelost. Thanks!
Pricewatch verbeteringen! Yes! blij mee, vooral die alert wijzigingen zijn zeer welkom! Thanks.
Het viel me inderdaad op afgelopen dagen dat de prijsalerts een stuk makkelijker te managen (en te vinden) zijn!
Wat ik nog mis zijn twee dingen:
1. Artikel specs/filter bovenaan. Nu moet je telkens eindeloos naar beneden scrollen omdat boven allemaal dingen staan over winkels, kortingen, reviews etc die meestal niet relevant zijn.
2. Mogelijkheid om refurbished buiten beschouwing te laten. Vooral bij laptops krijg je eindeloos resultaten met refurbished terwijl je meestal alleen echt nieuwe producten wil zien.
Het viel mij op dat de "vergelijken" knop net een paar pixels minder hoog is dan de "willen" en "hebben" knoppen bij een product in de pricewatch, qua functionaliteit maakt het niks uit maar het viel mij in ieder geval wel op (als frontend dev |:( ). Waarschijnlijk heeft het te maken met de verschillende css van de anchors en button, want de "vergelijken" knop is een button element terwijl de anderen anchors zijn. Voor de rest complimenten want het ziet er prima uit! _/-\o_
toch fijn he, automated testing, lol
Of het is heel toevallig of toch niet dat het precies in de maand dat Black Friday en Cyber Monday er is. Gewoon goed de prijzen in de gaten houden 9 van de 10x is het toch geen aanbieding.

Op dit item kan niet meer gereageerd worden.