- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Maybe that's after an exchange rate calculation from wherever they make error messages... Abkhazia?!
But seriously, I agree that the error message was adequate. Moreover, it is standard practice to cram potentially extraneous information into messages. What percentage of messages in Microsoft apps fall into that category? 25%, maybe? The alternatives are to risk presenting a message out of context, or to burn a lot of developer hours trying to determine the context; neither alternative holds up well in maintenance. The problem will be around until we develop agents that watch what the user is doing from the background to keep track of the context.
Now, where can I buy a Cadallic?
Admin
Well after correcting my typo of 5000 hours to 500 and muliplying it by $100/hr and then multiplying by the exchange rate of 27.17 Russian Rubles (the official currency in Abkhazia)/ $1 that would give us 1,358,500 rubles. ;)
www.Cadallic.com is where you can to go get your caddy. [:D]
Admin
Something that I think hasn't been said before: what about checking the DNS MX record on the domain part?
PHP's "checkdnsrr()" does just that (though I found some domains obviously can receive mails even though they only have a DNS A record, not an MX record) and has been quite successful in the application forms I developed. We also manually (yeah, those were the days) checked some of the most common typos, like typing "[email protected]" instead of "[email protected]" which we solved by a simple replace.
Of course nothing can really help you if the user enters "[email protected]" instead of "[email protected]".
I don't know if "hotmal.com" actually exists. If it doesn't, you should be able to recognize it, see above.
And the user will copy/paste his mistake and be none the wiser. ;)
Admin
A standard technique is to require "activation" of accounts prior to use. The activation is implemented by emailing a magic link to the given email address. If the activiation link is clicked, it is reasonable to assume the email address is valid and belongs to a cooperative entity.
Admin
Let me point out once again that you may not be typing in your own address. This application may be used by customer service reps to help customers. Also, activation doesn't solve the error message problem..... If you don't get your activation message, how do you know it was because you keyed it incorrectly?
Just give a decent error message and be done with it. If the during the application design process you decide that this application needs extensive error messages, then do it. Otherwise, don't worry too much and tell the testers "That'll cost extra". BTW, what if the testers come back with a complaint about the colors, the lack of sound, and no foreign language support? Is everything that they deem "obvious" to be supported?
Admin
That's exactly what I was thinking. The error message only needs to point out that the entry is invalid. The user can look on their post-it note to re-type their email address (which presumably is, uh, valid).
Same with the date. "Date is invalid" is a perfectly fine error message, not requiring the computer to read the user's mind. It cannot possibly be the job of the application developers to help train the users on what a valid date is.
I agree that the testers were just lazy, or probably trying to get out of a contract.
Dylan
Admin
Remember -- a regular expression (or the 700 lines of equivalent C code I naively wrote 3 months out of college) may tell you if the email address it's badly formatted, but it's very uncommunicative when it comes to telling you WHY it's badly formatted. That's a whole different ballgame. And, whether or not it's a REAL email address is another sport altogether. I wouldn't expect a tester to know this. In fact, it might be best if a tester didn't think about that, but it's true nonetheless.
Admin
I have two responses to this:
1. Are you married?
2. If you are not married, will you marry me?
Seriously, this is good. I posted this at work. (I hope you don't mind.) I actually had some youngsters come and ask what 'make' and what an 'executable' was. I'm feeling a little old and decrepit....but quite amused.
Admin
Admin
This looks like a requirement problem. Why is this a developer problem.
Admin
REs may be very useful, but do not fit the bill here if a full solution is required. That means it is time to use something else. I do not think that an FSM will do the job either. (Are they not about the same? Am I missing a distinction, or are you forgetting about the matched parens?) Really, it is irrelevant. If you want to validate a value, use a way that works. THEN, worry about whether it is coolRE, ah, cooler than the other ways you could have used.
Sincerely,
Gene Wirchenko
Admin
My idea was this: first, use an RE to validate the email address. Such REs are readily available on the internet, so this part is almost no effort at all. If the RE fails, we need some way to explain what is wrong. The RE from the internet won't tell us, so let's use a (rather simple, to keep it cheap) FSM to find common errors. This FSM does not have to validate the email-adress in all details, just check for common mistakes. If the FSM finds no error (but the more rigid RE does), you can still output a generic "invalid email address" error message.
Admin
Well, first of all it's THE FSM for you, and then you shall know that the Flying Spaghetti Monster is omnipotent and omniscient, so that wouldn't be a problem at all for him.
Yarr.
Admin
Actually, it was the date check I was speaking about. The developer decided to test for a *content* error(whether a date per se is valid) yet flagged it as a *format* error (the structure of the date), that puts the developer in the wrong regardless of the specifications. Therefore, the programmer did NOT test everything. If you think that he did in face of those facts, then perhaps you should seek another line of work.
Dr MindHacker
Admin
I'm not sure which calendar you use, but almost everyone on this planet uses the Gregorian. A Gregorian date is not formated correctly when using the format of MM/DD/YYYY when attempting to use the date 02/30/2005. The reason is that under no circumstance does February, the 2nd month in the calendar, have 30 days. This is not a content error, but is a format error. Perhaps you should go back and check your facts which in the light of day appear not to be facts at all.
BTW a content error would be enter a date like say 02/02/1700 and requiring all dates to be no older than 1 year in the past when originally entered. To test for a content error you must 1st have a correctly formated date, and then you can see if it fits into the domain of acceptable dates. 02/30/2005 is just a bunch of garbage that no one other the author can possibly know with a 50%+ chance of what was meant.
Admin
You are funny. The format of MM/DD/YYYY is understood to be all digits. If you look at which digits were entered, you are looking at content. "02/30/2005" is thus a content error.
Sincerely,
Gene Wirchenko
Admin
yes, MM/DD/YYYY is understood to be all digits. It is also understood when MM = "02" that the range for DD is "01 to 28" with "29" added to that set for leap years only.
The format asks the user to enter the 2 digits representing month followed by the "/" character followed by the 2 digits representing day followed by the "/" character followed by the 4 digits of year which represent the date the user wants to enter. Collectively the digits must form a date or the format is not valid.
Admin
Well, I've been a tester and a code reviewer, and I am a developer and an end user, so hopefully I have most of the perspective thing down.
IMHO, not only is breaking applications really hard during test fun and enjoyable, but it helps to make a better product, and most of the time it isn't too horribly demoralizing - at least, not after the first few minutes of "WTF did that tester do!?! HTF did he do that?!?"
Not sure how that's relevant here, as the testers in question only found some trivial issues - which depending on the spec, may have been entirely in their minds, or they may have been real.
Admin
I like to negative test first... but I don't turn in the report until I positive test - unless I find a security hole. I think that is because I like to break things. Nobody has complained about me doing that.
It can be fun how disconcerted the developers get when you tell them their application has a security hole within 20 minutes of them releasing the prototype to test. They tell you, "No, it doesn't." You tell them, "Do an 'ls /'." They see it now contains a file named, 'Yes, it does have a security hole!" They then need to ask your assistance in removing a file name with spaces and an exclaimation point.
Admin
Okay. Makes sense to me. Thanks for the reply.
Admin
As far as I can tell, the real WTF here is that the testers complained about the error messages that refused to hold their hands, and yet they did not even read the first error message that they got when entering the date! If they had done more than just skim the error messages, they would tell them everything they needed to know.
next we'll see stuff like:
"In the 'color' field, we entered 'apple' and it said the color should be in RRGGBB format. The program ought to fix this by replacing 'apple' with 'red' so that people don't have to read cryptic error messages."
Admin
Admin
[email protected] is valid!
Admin
Seriously if you don't even know what format an email address has why would you be even filling that form...
Admin
The email tld problem is easy!!! Just retreive http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1, Filter out any blank lines or lines starting with //. and see is the tld in e.g.
is in the list. Works like a charm when the validating is done by a seperate program. Ex. email | webapp | [connects] verify_app [runs all the time and renews it's list once every hour] | [approves/declines email] webapp | [signals user the email is wrong or continues it's 'logic' ;)
CAPTCHA: nulla PS. Finally a captcha that is funny!