- 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
This is why I never validate user input. It just leads to too many headaches.
[:D]
Admin
But even for a 6-yr old, the fault isn't with the developers (except they probably should have used a date picker). The testers suggested that when you put in "02/30/2005" it tells you that the month and year are correct but they put in the wrong day. How do you know? What if they really meant to put in "03/30/2005"? "I put in the wrong month, but it told me that the month was right and the day was wrong."
Admin
If debugging is the process of removing errors,
the Programming must be the process of <FONT color=#ff0000>inserting</FONT> them.
Admin
Sorry for the <FONT size=4>LARGE</FONT> font. Bad WYSIWYG Editor.
Admin
Care to explain why?
Admin
The real WTF here is so many coders thinking they're smart and funny, yet can't recognise a tester that is smart and funny.
I hate generic error messages like "Invalid e-mail" - they don't tell you what's wrong, since it's obvious for the coders. Users don't see the difference between a webpage and Excel, remember that.
Face it - you don't write for yourselves. You write for these "monkeys". Nobody cares if you can handle the application.
Admin
Sounds like we're ready for the 'email picker:'
[image]
Admin
Mmm... having troubles lately...
The image “http://img196.imageshack.us/img196/9942/epick9ll.gif” cannot be displayed, because it contains errors.
Admin
Well lets clarify something here, are the testers the actual users or a seperate group of people working for the developers?
Because you can't blame the testers if the are the client, I mean cmon. Its up to the developers to set expectations and manage the project. If the developers had done some prototyping with the client then the client would have an idea of what to expect, and not be shocked when they get the first screen.
I think this comes down to bad developers who have no clue about the software process. Are the users tools? Yes. Are they the ones who pay your bills? uhh yea.
How do you deploy a 4 mid-sized 4 module 36 screen app without any prototyping or user interaction? What did they expect, to just drop the software on the users and say presto. Definetly sounds like this was an off shore job... and another reason to give jobs like these to good software developers who can be onsite to get a feel for the users and the project.
Admin
I did a bit of looking since I had seen regexes that purportedly did do so (and that were about 2K long). Apparently, text in matched parens is permitted as comments. The comments are ignored but are part of a valid E-mail address. Matching parens can not be done with regexes.
Sincerely,
Gene Wirchenko
Admin
Date pickers suck for advanced users. In most systems that I've worked on efficiency of data entry has been a priority. Date pickers do not generally are not efficient to use since they require a mouse to drive. It may be that they would work for this application, but in general I think that a textbox with validation is superior.
Admin
That email picker just made my day, thanks :D
Admin
My suspicion also. You must have worked for consulting firms too!
Admin
If a valid e-mail address is _really_ important for the system, you do a simple bounce-and-reply test. Send an e-mail to the account. If it bounces, disable the account. If it doesn't bounce, require the user to perform an action based upon the e-mail. If they don't do so within some time period, disable the account.
Admin
Uhh last time I checked you dont need a mouse to use a datepicker.
Admin
Is it just me or is everyone skipping the giant WTF their process. Why wasn't the testing done prior to deployment?
Admin
Anything that needs a mouse seriously slows down data entry. I am doing data entry where I work (about to turn it over) and, well, keyboards rule.
Sincerely,Gene Wirchenko
Admin
<span style="font-size: 12pt;" times="" new="" roman="" ;="">We have all seen it before; the user always wants an idiot-proof program. What they don't realize is if we made the program idiot proof they wouldn't have a job! I guess the testers next memo will ask the program to read the mind of the user and input the data automatically. Then again I don't then reading the mind of an idiot is a good idea.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
Admin
How about ".co.uk"? And is . a valid character in the dropdowns? I have two e-mail addresses that have . in them... (on the username side)
Admin
Many years ago, 2 decades or there abouts, I was working on a version of a BASIC language interpreter that AT&T was testing for resale. One of the key developers frequently mistyped the LIST command so he added LSIT to the language.
AT&T testers complained because LSIT wasn't documented. :)
Admin
I wouldn't even say GPS is necessary, from the above conversation. Considering that it was in a warehouse, the warehouse's scanner/input software would presumably be smart enough to add that information.
Now, to get _really_ fancy and track the item's location to within a few _feet_ then yeah - I agree. Considering the automagical functionality the customer seems to expect, I'd assume that your solution would be the one chosen after the next angry phone call.
Admin
I concur.
I especially like the ALT text on the image.
Admin
How does it feel to be a winner?
Admin
R.Flowers,
Again we are at a standstill in our testing. We continue to have trouble with the e-mail entry form. Two of the buttons are labelled "less letters" instead of the semantically correct "fewer letters." Our customers will find this very confusing. Furthermore, they do not indicate how to add a number or punctuation mark to the address instead of a letter. I have discussed this matter with our manager and he has determined that a working user interface is a condition of payment.
Admin
So in all seriousness, if you were the developer in this situation, and you got that response back from the testing team..
..What the heck would you do?
I have no idea how would I react. Would you try to explain the simple concept of email addresses to the test team whom presumably is already familiar with the concept of the Internet? Or perhaps try to explain date formats to someone who may have at one point in their life actually written a date down on a piece of paper?
Or do you just complain to their (or your) boss?
I don't know if I'd feel bad, or angry...
Admin
I agree, though I have seen a regexp that supposedly conformed to the whole standard. I can't confirm that it did because it was freakin huge.
Then again, when was the last time anyone needed to put a COMMENT in the middle of an email address?
(.+)@(.+)\.(.+) is good enough for most people
Admin
This really burns my ass, I have had projects killed by testers like this. The problem isn't the error messages, the error message could have been 4 pages long and explained all of the end user's problems going back to child birth. But this kind of tester would still find problem. This is a form of active resistance to change. This would be semi-excusable if it was simply ignorance on the testers behalf but the tester wanted the application to fail and didn't want to test the system. I find when I come up to this kind of resistence, the testers actions were deliberate and designed to create a level of FUD in management. I feel for this programmer.
Admin
I also smell something fishy here... Might be just that, the customers looking for a way out of the deal, probably from a real enterprisy price-tag. Seems a bit strange though that the customers didn't see the app before it was 'finished', that's a sure recipe for disaster, letting the architects, coders and/or managers decide what and how the customer wants the app...
Admin
That's why we invented E-Mail validation, where the system attempts to send an e-mail to the e-mail address entered, and the user needs to click a link or reply or something like that.
Admin
The real WTF is that they waited until they were "done" the application to get it to the testers. If they had gotten the testers using the application as soon as they were done the first module (or better yet, the first feature of the first module) they would have learned what they were expecting earlier... Then they could have adjusted to account for that - get out of the contract or help the testers bring their expectations to reality.
It's a project management WTF, not user/tester WTF. Big bang deployments never work. Even if the software is bug-free (which it isn't), there's still a gap between what the user wants and what the
team thinks they want (or can deliver). You can close that gap early in the project by getting the users on the system as early as possible.
Admin
OMG Laughing my ass off....Thanks... sad thing is you're probably right
Admin
Unlikely. There are several problems with this approach:
1) Just because a server is not reachable right now, doesn't mean it's not valid.
2) There are actually a few mailservers that don't check the existence of the recipient until they're done receiving. Unless I'm mistaken, qmail does that. So ... more than just a few.
3) Neither does SMTP have any other means by which to validate a recipient.
4) And of course, checking access rights is fantasy.
The typical thing to do is send a mail with a link to the validation site. Lot's of software does that.
Admin
Was this meant to be a personal attack on all the real programmers on this site or were you just having a brain fart and you meant to type
My name is Kiss me, I'm a Pollock.... It feels good being a winner!
Admin
I suppose it depends on the date picker. I know the one that microsoft provides with the .net framework is tedious to use. The other example that I could quickly find was in outlook which allowed direct entry buy didnt prevent me from entering 02/30/2005 as a date.
Admin
http://www.thinkgeek.com/tshirts/sysadmin/6692/
Admin
The email regex looks like this (from Perl's Regexp::Common module):
(?:(?-xism:(?:(?-xism:(?-xism:(?-xism:(?-xism:(?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)[^\x00-\x1F\x7F()<>[]:;@,."\s]+(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+))|(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)"(?-xism:(?-xism:[^\"])|(?-xism:\(?-xism:[^\x0A\x0D])))+"(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)))+)?(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)<(?-xism:(?-xism:(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)(?-xism:[^\x00-\x1F\x7F()<>[]:;@,."\s]+(?:.[^\x00-\x1F\x7F()<>[]:;@,."\s]+))(?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+))|(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)"(?-xism:(?-xism:[^\"])|(?-xism:\(?-xism:[^\x0A\x0D])))+"(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)))@(?-xism:(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)(?-xism:[^\x00-\x1F\x7F()<>[]:;@,."\s]+(?:.[^\x00-\x1F\x7F()<>[]:;@,."\s]+))(?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+))|(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)[(?:\s(?-xism:(?-xism:[^[]\])|(?-xism:\(?-xism:[^\x0A\x0D])))+)\s](?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+))))>(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)))|(?-xism:(?-xism:(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)(?-xism:[^\x00-\x1F\x7F()<>[]:;@,."\s]+(?:.[^\x00-\x1F\x7F()<>[]:;@,."\s]+))(?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+))|(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)"(?-xism:(?-xism:[^\"])|(?-xism:\(?-xism:[^\x0A\x0D])))+"(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)))@(?-xism:(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)(?-xism:[^\x00-\x1F\x7F()<>[]:;@,."\s]+(?:.[^\x00-\x1F\x7F()<>[]:;@,."\s]+))(?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+))|(?-xism:(?-xism:(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)[(?:\s(?-xism:(?-xism:[^[]\])|(?-xism:\(?-xism:[^\x0A\x0D])))+)\s](?-xism:(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)+|\s+)))))(?-xism:\s((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|(?-xism:\s*((?:\s*(?-xism:(?-xism:(?>[^()\]+))|(?-xism:\(?-xism:[^\x0A\x0D]))|)+)\s)\s*))+)\s)\s*)*))
Admin
In the last system I wrote, the users wanted to be able to enter in a date in a textbox with either a date picker or just by typing. It wasn't because they were advanced users. It's because they wanted "options," maybe dependent on whether they were in a clicking or a typing mood. Sounds stupid, but if they are paying the bills...
Admin
RA -- Would you care to share with us some examples of your validation code (with these detailed, specific error messages covering every possibility that could go wrong)? I'd love to see it. Maybe for dates, email addresses, credit card numbers, and so on. I think it would be really helpful for the rest of us hackers to see how it *should* be done.
Admin
Admin
+1 Insightful
Admin
Admin
How would a regular expression help with your second example? [email protected] is perfectly legitimate (assuming there's a domain out there named "hotmal".)
Admin
Admin
Admin
Hmmm... Actually I think it was meant as a more or less personal attack on you and you only... Not sure though :P
Admin
I like the definition of "quite simple" that you're using.
On the broader topic... wow, I think this is the closest to unanimous agreement I've ever seen on the TDWTF forum. Guess I'll chime in with...
1. First of all, any bug report that starts with "Since the program knows..." is going to be "RESOLVED - WONTFIX", with a comment saying "Since you know so much more about how my code works than I do, fix it yourself." If I'm feeling nice, I might add something like "If you'd like to be polite and restate that as a question, we can start a discussion of the issue, wherein I'll be happy to tell you what the code does and doesn't 'know'."
2. Yes, these are arguably valid bugs... P4 bugs, that is. Go ahead and file it as a P4 to get the issue raised: depending on how the validation code is structured, it might really be that easy to change the message. Maybe a product manager will have a chat with the engineer and decide whether it's worth spending time on. A good PM [*1] would probably mark it "RESOLVED - INVALID" without even bothering the engineer; a slightly less good one would ask first and then do it. But there's nothing wrong with QA filing it -- that's how the process is supposed to work, and it's why Bugzilla has those tags.
3. But to characterize these as "major issues" is completely out of line -- the actual validation wasn't even wrong; they're just complaining about the messages! And to claim that these items make it impossible to proceed with testing the remaining screens is just willfully stupid. Especially if they know so much about how the code works (see (1.) above), they should realize that these are not deep structural issues by any stretch, and that they're irrelevant to the behavior of the rest of the system.
--
[1] Yes, they do exist, they're just a bit rare -- I'd say "good PM" is somewhere between "hot geek girl" and "unicorn" on the reality scale.
Admin
Statements like "There are so many basic issues wrong with the app, I refuse to continue testing" are the kind of thing you hear from bosses when they have a bad day.
Like you have that 30,000 code lines application which does some amazing things (and does them right BTW), yet the boss focuses on the fact that you cannot enter "#'ßü$" as the project name on the first screen and calls your application "buggy as hell".
In fact, I've seen teams of beta testers being forced to sit out for two days just waiting until the developers fixed some browser-related layout quirks, instead of continuing to test the functional part of the application.
But that's a WTF every developer has had to face in his life. sigh
Recent example: an old application which is riddled with bugs was to be replaced with a newer and better version. However the responsible manager refused to green-light the launch because he thought the font size was off and the line separators in tables were a few pixels too thick. So his decision was "the buggy application remains online until the flaws with the new one are fixed". :grrr:
Admin
Presumably that'd be a WYSINWYG editor; unfortunately, they're more common than you'd hope. Besides, you shouldn't expect anything else from this site; just got to HTML view, enter your post with a minimum of formatting, cross your fingers and hit the button...
Admin
Huh? Arrogant developers? Here? On TDWTF??? W - T - F ?!?!?!?
Admin
If I was testing I'd complain too. I'd hate to be a developer where I have a variable for (for a random example) "local situation" named LSIT and I keep getting the following error:
10 Let LSIT = 99
^
Syntax Error: Token at position 8 not recognized.