Magnus Gladén

Veckans testartips #7 - Ett litet tecken kan skapa stora problem

2018-03-12 Blogg Test Testartips Läst 472 gånger

Teckenuppsättningar och teckenkodning kan vara lite kluriga tekniska begrepp, men det är något som varje testare bör ha ett hum om. Kort sagt så handlar det om hur olika tecken (bokstäver, siffror, etc) representeras som ettor och nollor i datorer. Bland de mest kända varianterna har vi Unicode (t.ex. UTF-8) och ASCII.

Hur hanterar systemet du testar olika teckenuppsättningar? I dagens globala värd kan till exempel kunders namn innehålla andra bokstäver än ASCII och de vanliga Unicode-tecknen åäö. Därför är det viktigt att testa bredare än så. Här följer några exempel på Unicode-tecken men det finns många fler: Æ Ø ë Ć € ï ì è ü. Ett vanligt problem är att dessa tecken inte visas korrekt för användaren, till exempel som på kvittot på bilden här bredvid. Men konsekvenserna kan bli värre än så.

Ta detta praktiska exempel från verkligheten:

En applikation har en funktion för att lägga upp en ny kund. Applikationen har ett fält "Kundnamn" som max får innehålla 16 tecken, både ASCII- och Unicode-tecken, i detta exempel textsträngar med max 32 bytes datastorlek. Detta eftersom olika teckenkodningar tar olika stor plats, till exempel:

  • ASCII-tecknet ”A” har datastorleken 1 byte
  • UTF-8-tecknet ”Ä” har datastorleken 2 bytes 

Databasen däremot har inte tagit höjd för UTF-8-tecken utan tillåter strängar med en storlek på max 16 bytes. Vad händer om man skickar en textsträng med 15 ASCII-tecken och ett UTF-8 tecken i fältet Kundnamn? Till exempel: AbcdefghijklmnoÄ.

Applikationen godkänner textsträngen då den är 16 tecken lång och mindre än 32 bytes och skickar vidare för lagring i databasen. Databasen däremot kommer returnera fel och inte spara kunden då strängen är 17 bytes och därmed överstiger databasens maxstorlek på 16 bytes.

Sammanfattningsvis så är det viktigt att tillåtna teckenuppsättningar och felhantering tas upp redan i kraven, samt att du som testare testar både ASCII- och Unicode-tecken och inte bara vanliga UTF-8-tecken som Åäö. För annars kan svårlästa kvitton vara det minsta du behöver oroa dig över.

Läs fler testartips här

Dela artikeln