mboost-dp1

newz.dk

Fejl i script gjorde at Netto sendte sms til forkerte numre

- Via Version2 - , indsendt af arne_v

Hvis du i forrige weekend modtog en besked fra Netto, er der ingen grund til bekymring. Dit telefonnummer er ikke blevet ulovligt indsamlet, og Nettos leverandører har heller ikke hentet numre fra en anden database med det formål at sende nyhedsbreve ud til flere kunder.

Det skyldes i stedet en fejl i et script, der manuelt skulle rense ud i data på en enkelt udsendings-pulje af sms. Flere numre i databasen havde endnu ikke fået tilføjet den danske landekode +45, men script-fejlen gjorde, at der blev lagt 45 til for enden af talrækken i stedet for at indlæse landekoden foran. Eksempelvis ville et fiktivt nummer på 20 20 20 20 blive ændret til 20 20 20 65, hvor der skulle have stået +45 20 20 20 20.

Netto beklager fejlen og har iværksat nye procedurer, der skal sikre, at det ikke kommer til at ske igen.





Gå til bund
Gravatar #1 - afogh
17. feb. 2017 09:20
He he, sådan går det når man ikke kan kende forskel på en integer og en streng :)
Gravatar #2 - SwineDK
17. feb. 2017 09:32
Netto, Danmark > Hello, we need to add 45 to all phone numbers.

Udvikler, Indien > OK, all phone numbers are now added 45
Gravatar #3 - CBM
17. feb. 2017 12:53
#2: ROTFLMFAO, funny coz its true :-)
Gravatar #4 - arne_v
17. feb. 2017 14:22
Dårlig krav spec.
Dårlig database struktur.
Dårlig (ingen) test.
Gravatar #5 - nitan
17. feb. 2017 17:14
Er det ikke rimeligt standard at man afprøver sit program, inden man aflevere det.

Synes det er en urimelig dårlig undskyldning hvertfald.

Selvfølgelig er det menneskeligt at fejle, men mekanikeren aflevere heller ikke bilen tilbage uden hjul på, da det er en åbenlys fejl :)
Gravatar #6 - CBM
17. feb. 2017 17:16
#5: only in india :-)
Gravatar #7 - Kian
18. feb. 2017 19:21
Det her er virkelig en morsom nyhed. Forfanden hvor er det sjauwt at +45 kommer til at være en sum istedet for en string. Classic!
Gravatar #8 - gramps2
19. feb. 2017 13:12
Hvis en kunde kom til mig med den slags opgave ville jeg straks spørge "Kan I ikke give et eksempel på hvad der skal ske?"

Christ. At det ikke er standard at lave kravsafdækning ved selv den slags opgaver.
Gravatar #9 - CBM
19. feb. 2017 17:51
#8:
Hvornår ville svaret være... adder +45 til telefonnummeret ?
Hvornår ville svaret været andet end foranstil nummeret med +45 ?
Gravatar #10 - arne_v
20. feb. 2017 01:45
#9

Der er en eller anden som har tænkt på den forkerte måde.

Det er en god ting at udpensle selv de mest banale ting i specifikationer. Der er altid en risko for at læseren slet ikke tænker på samme måde. Og et eksempel i specifikationen som kan videreføres til test plan er ekstra godt.


Gravatar #11 - arne_v
20. feb. 2017 03:08
Jeg spekulerer iøvrigt på om Netto monstro bruger MySQL til dette her.
Gravatar #12 - CBM
20. feb. 2017 05:20
@arne: jeg er i princippet enig. Hvorfor spekulerer du på om de bruger mysql?
Gravatar #13 - gramps2
20. feb. 2017 05:47
CBM (9) skrev:
#8:
Hvornår ville svaret være... adder +45 til telefonnummeret ?
Hvornår ville svaret været andet end foranstil nummeret med +45 ?

Tro mig, en kunde er ikke altid lige så præcis som udvikleren godt kunne ønske sig.

"Siden viser ikke noget" - men hvad skulle den vise?

"Knappen skal være blå" - har du en bestemt farve i tankerne?
"Det skal være CMYK 62, 51, 0, 48 da vi bruger den i printet materiale" - super, hvilken en af disse RGB-farver vil du så have?

Grundlæggende handler det om at få kunden til at give et eksempel som man kan teste imod. Hvordan ind i helvede (undskyld sproget) kan man ellers vide, om det man leverer er korrekt?
Gravatar #14 - CBM
20. feb. 2017 07:34
#13: det er sandt og har også selv prøvet at sætte skik på udsvævende kunde ønsker mange gange...

Men visse ting giver sig selv fx at +45 er en landekode der skal foran. Medmindre man af kulturelle årsager bevist vælger at mistolke...

En EU udvikler ville undre sig hvis han/hun var i tvivl og spørge om de virkelig ønskede at lægge 45 til...

Kan også være de har været så sjuskede at addering af 45 var utilsigtet somehow


Jeg har prøvet at være projektleder for både indiske og ukrainske teams.

Jeg har også prøvet at skrive kravspecifikationer til samme.

Men anset hvor mange detaljer der er i en kravspecifikation, så ville jeg i sidste ende nok sparet tid ved at lave det selv.



Gravatar #15 - gramps2
20. feb. 2017 11:50
CBM (14) skrev:
Men visse ting giver sig selv fx at +45 er en landekode der skal foran. Medmindre man af kulturelle årsager bevist vælger at mistolke...
Jeg er ikke sikker. Det kan være en dårlig formulering fra kundens side. "Please add +45 to the phone column" f.eks. Hvis to personer, som begge er dårlige til engelsk, forsøger at kommunikere på engelsk, så er der rigelige muligheder for fejl.
CBM (14) skrev:
Men anset hvor mange detaljer der er i en kravspecifikation, så ville jeg i sidste ende nok sparet tid ved at lave det selv.
Helt sikkert - men Netto? ;-)
Gravatar #16 - CBM
20. feb. 2017 12:50
#15: Netto er lønnen i de lande nok stadig så lav at det muligvis kan svare sig :-)
Gravatar #17 - arne_v
20. feb. 2017 13:59
CBM (12) skrev:
Hvorfor spekulerer du på om de bruger mysql?


MySQL har et noget suspekt forhold type type sikkerhed.

mysql> select '+45' + '20202020';
+--------------------+
| '+45' + '20202020' |
+--------------------+
| 20202065 |
+--------------------+
1 row in set (0.01 sec)
Gravatar #18 - CBM
20. feb. 2017 15:08
@arne: ah ok. Jeg ville vælge at lade det text der skal i min select være klappet og klart inden jeg kalder databasen

.... Ie.. Select * from phone where nr ='+4520202020'

For netop at undgå den slags issues
Gravatar #19 - mrtb
20. feb. 2017 16:24
arne_v (17) skrev:
CBM (12) skrev:
Hvorfor spekulerer du på om de bruger mysql?


MySQL har et noget suspekt forhold type type sikkerhed.

mysql> select '+45' + '20202020';
+--------------------+
| '+45' + '20202020' |
+--------------------+
| 20202065 |
+--------------------+
1 row in set (0.01 sec)


Men sådan ville man jo ikke lave en sammensat streng i MySQL? Der ville man benytte CONCAT().

Gravatar #20 - arne_v
20. feb. 2017 17:05
mrtb (19) skrev:
Men sådan ville man jo ikke lave en sammensat streng i MySQL? Der ville man benytte CONCAT().


Ja. Streng konkatenering i MySQL SQL er via CONCAT funktion.

Og jeg havde ikke noget problem hvis MySQL gav en fejl om at de to værdier ikke var numeriske og derfor ikke kunne adderes.

Jeg har et problem med at MySQL konverterer strenge til tal og laver en addition.
Gravatar #21 - mrtb
20. feb. 2017 17:25
arne_v (20) skrev:

Ja. Streng konkatenering i MySQL SQL er via CONCAT funktion.

Og jeg havde ikke noget problem hvis MySQL gav en fejl om at de to værdier ikke var numeriske og derfor ikke kunne adderes.

Jeg har et problem med at MySQL konverterer strenge til tal og laver en addition.


Jeg er helt enig i at det kunne være lavet smartere - Jeg prøver bare at finde ud af hvorfor du mener at fejlen skulle skyldes uhensigtsmæssig brug af MySQL, når nu det ikke er sådan man konkatenerer.
Er det fordi du gætter på at udvikleren har været så uerfaren, at han har forsøgt at konkatenere med "+"?
Gravatar #22 - arne_v
20. feb. 2017 17:26
CBM (18) skrev:
ah ok. Jeg ville vælge at lade det text der skal i min select være klappet og klart inden jeg kalder databasen


Nu vil den ægte SQL jo være mere a la:

UPDATE table SET field = '+45' + felt

Den ser ret tilforladelig ud.

#19 har naturligvis ret i at det i MYSQL skal laves som:

UPDATE table SET field = CONCAT('+45',felt)

men ...
Gravatar #23 - arne_v
20. feb. 2017 17:26
#21

Det var ihvertfald en mulig forklaring.
Gravatar #24 - mrtb
20. feb. 2017 17:28
arne_v (22) skrev:
CBM (18) skrev:
ah ok. Jeg ville vælge at lade det text der skal i min select være klappet og klart inden jeg kalder databasen


Nu vil den ægte SQL jo være mere a la:

UPDATE table SET field = '+45' + felt

Den ser ret tilforladelig ud.

#19 har naturligvis ret i at det i MYSQL skal laves som:

UPDATE table SET field = CONCAT('+45',felt)

men ...


Det tager jeg som et ja til mit spørgsmål :) Men hvis det er tilfældet, så kan der vitterligt også ske hvad som helst.
Gravatar #25 - arne_v
20. feb. 2017 17:32
#21

En af pointerne er at de fleste andre databaser bruger + til streng konkatenering.

Så hvis man bruger et database uafhængigt API, så er den ikke lige så oplagt at se.
Gravatar #26 - CBM
20. feb. 2017 18:22
@arne: i en sådan update skal man være 100 på hvad der sker og man skal teste teste teste...:-)
Gravatar #27 - arne_v
20. feb. 2017 18:23
arne_v (25) skrev:
En af pointerne er at de fleste andre databaser bruger + til streng konkatenering.


Ved nærmere eftertanke, så er || nok mere almindelig end + til dette formål.
Gravatar #28 - arne_v
20. feb. 2017 18:24
CBM (26) skrev:
i en sådan update skal man være 100 på hvad der sker og man skal teste teste teste


Jeps.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login