Slashdot Mirror


Automated Software QA/Testing?

nailbite writes "Designing and developing software has been my calling ever since I first used a computer. The countless hours/days/months spent on imagining to actualizing is, to me, enjoyable and almost a form of art or meditation. However, one of the aspects of development that sometimes "kills" the fun is testing or QA. I don't mind standalone testing of components since usually you create a separate program for this purpose, which is also fun. What is really annoying is testing an enterprise-size system from its UIs down to its data tier. Manually performing a complete test on a project of this size sucks the fun out of development. That's assuming all your developers consider development as fun (most apparently don't). My question is how do you or your company perform testing on large-scale projects? Do you extensively use automated testing tools, and if so, can you recommend any? Or do you still do it the old-fashioned way? (manually operating the UI, going through the data to check every transaction, etc.)"

248 comments

  1. Old fashioned way... by Anonymous Coward · · Score: 0

    And I hate it. Looking for tips here myself.

  2. I wish they tested this site by Megor1 · · Score: 0, Offtopic

    I keep getting errors following links on slashdot today.

    --
    Everyone that disagrees with me is a paid shill
  3. We do it the old fashioned way by Anonymous Coward · · Score: 1, Funny

    We do it the old fashioned way - we don't.

    Seriously, why bother?

    1. Re:We do it the old fashioned way by Anonymous Coward · · Score: 0

      The best automated testing tool is a user.

    2. Re:We do it the old fashioned way by Rick+the+Red · · Score: 1
      The best automated testing tool is a user.
      No kidding. On one major product half our tests were based on real-world problems, and all of the tests used real-world data. We had an in-house bug reporting tool which allowed the users to attach their data files; they were trained by past experience that reproducable bugs got fixed, so they gave us very clear instructions on how to find the bugs. Half our tests were bug reports formalized as test scripts.

      The full tests used every feature and running them was as good as any tutorial for learning the application, but alas the new users rarely appeared at testing time so we had to run them ourselves. But it's a good idea if you can get the users to go along with it.

      --
      If all this should have a reason, we would be the last to know.
  4. You're not alone. by irokitt · · Score: 3, Funny
    However, one of the aspects of development that sometimes "kills" the fun is testing or QA.
    I'm sure that quite a few Microsoft employees agree wholeheartedly.

    Laugh, it's good for you.
    --
    If my answers frighten you, stop asking scary questions.
    1. Re:You're not alone. by Anonymous Coward · · Score: 0

      If you say the contractions in your sig as separate words, you have a rather nice haiku...

    2. Re:You're not alone. by Anonymous Coward · · Score: 0

      And those that don't agree with you are likely the STEs that work at Microsoft and get their fun from breaking what others have created.

    3. Re:You're not alone. by Anonymous Coward · · Score: 1, Insightful

      [that] get their fun from breaking what others have created.
      Finding bugs != writing buggy code. When a tester finds a bug, it means the code was already broken. As a former tester, I always marveled at the hostility and abuse heaped on our profession by the people whose code we were trying to help improve. Who would you rather have finding your bugs, testers who work for the same company as you, and have signed the same NDA as you, or some end-user, who will tell all their friends about it and post in their blog about how lame your software is?

    4. Re:You're not alone. by anonymous+cowherd+(m · · Score: 3, Interesting
      Heh. I'm a software tester, and my boss, who actually is a Native American, put it to us this way: You guys are the cavalry at Little Bighorn, and the whole rest of IT is the Indians.

      Basically, what he was trying to get across to us was that as long as we can keep the BS somewhat at bay, we can do our jobs, but the second it gets out of hand, 2000 Indians are gonna be on your ass.

      To be fair, not all the development guys are like that, but some of them are.

      --
      http://neokosmos.blogsome.com
    5. Re:You're not alone. by Anonymous Coward · · Score: 0

      Then you proceed to pillage and burn villages down, rape women, and separate children from their mothers.

  5. Manual Testing by Egonis · · Score: 3, Interesting

    Although I haven't personally used many testing tools:

    I created an Enterprise Application composed of Client/Server Apps -- the best test was a small deployment of the Application to users who are apt to help you conduct the test, over a few weeks, I found bugs I never caught with my own manual tests.

    Applications that test your code, etc are great from what I have heard, but will not catch Human Interface related issues, i.e. GUI Mess-Ups, Invisible Buttons, etc.

    1. Re:Manual Testing by GlassHeart · · Score: 3, Insightful
      What you're referring to is called "beta testing", where a feature-complete product is released to a selected group of real users. This is a highly effective technique, because it's simply impossible to think of everything.

      However, if you go into beta testing too early, then major basic features will be broken from time to time, and you'll only irritate your testers and make them stop helping you. This is where automated tests shine, because they help you ensure that major changes to the code have not broken anything.

      Put another way, automated test can verify compliance to a specification or design. User testing can verify compliance to actual needs. Neither can replace the other.

    2. Re:Manual Testing by Anonymous Coward · · Score: 0

      But who test the automated tests? And if automated tests are tested manually, what is the point of automating tests in the first place?

    3. Re:Manual Testing by Rick+the+Red · · Score: 1
      No, what he's referring to is called "alpha testing," where a feature-complete product is released to the in-house test team. You need to understand the softwear development cycle, because it's the same for all techniques even if the terminology changes or if some zealots won't admit their favorite method fits the general rule whether they like it or not:

      The Users have Business Requirements. They test the code to their Business Requirements in Beta Test. This is stuff like, "Did Joe in Shipping get the Bill of Lading?"

      Analysts turn Business Requirements into Functional Requirements. Testers turn Functional Requirements into Alpha Test. This is stuff like, "Does the pull-down list of States include all US Post Office two-letter abbreviations?"

      Developers turn Functional Requirements into System Specifications and Code. They test their code in Unit Test. This is stuff like, "If I enter alpha characters into the Zip Code field, does it crash?"

      --
      If all this should have a reason, we would be the last to know.
    4. Re:Manual Testing by GlassHeart · · Score: 1
      No, what he's referring to is called "alpha testing," where a feature-complete product is released to the in-house test team.

      Exactly where does "the best test was a small deployment of the Application to users who are apt to help you conduct the test, over a few weeks" mean or imply an in-house team of testers?

    5. Re:Manual Testing by Rick+the+Red · · Score: 1
      Someone has to run the tests. In this case they got some users to do it. Call it a beta test if you like because end-users were involved, but he specifically said "Human Interface related issues, i.e. GUI Mess-Ups, Invisible Buttons, etc." That sounds like Alpha test to me, not Beta. If you still have problems like invisible buttons, the code isn't ready for Beta test.

      By "in-house test team" I meant "not the developers." Developers should not perform alpha test any more than writers should edit their own work -- you miss too many mistakes, or dismiss them as unimportant. If this guy has end users do alpha test, more power to him; personally, while I enjoy creating test cases and test scripts, I hate running the actual tests and I'd love to have the users do it for me :-)

      --
      If all this should have a reason, we would be the last to know.
    6. Re:Manual Testing by GlassHeart · · Score: 1
      Call it a beta test if you like because end-users were involved

      That's exactly what I did, before you objected. :)

      he specifically said "Human Interface related issues, i.e. GUI Mess-Ups, Invisible Buttons, etc." That sounds like Alpha test to me, not Beta.

      Right, which is why I warned "if you go into beta testing too early, then major basic features will be broken from time to time, and you'll only irritate your testers and make them stop helping you." He may be releasing alpha quality code to beta testers.

      If this guy has end users do alpha test, more power to him; personally, while I enjoy creating test cases and test scripts, I hate running the actual tests and I'd love to have the users do it for me :-)

      The problem is that end users are ill suited to do alpha tests. They won't explore the entire menu tree for you, just the ones they actually need to use. Beta testing (and its emphasis on end users) is meant to catch a different class of bugs than the two previous stages, and you just can't skip these steps without compromising quality.

    7. Re:Manual Testing by Rick+the+Red · · Score: 1

      I agree with most of what you say, except this: "if you go into beta testing too early, then major basic features will be broken from time to time" Sorry, but if major basic features are broken then it isn't ready for alpha test, and you're going to irritate me, your Friendly Test Engineer.

      --
      If all this should have a reason, we would be the last to know.
    8. Re:Manual Testing by GlassHeart · · Score: 1
      Sorry, but if major basic features are broken then it isn't ready for alpha test, and you're going to irritate me, your Friendly Test Engineer.

      IME, what typically happens is that software engineers declare code completion, and testers begin their involvement. At this point, every feature "basically works" to the satisfaction of the software engineers. As testers do their work, they discover major (relative to beta test) bugs that require major (again, relative) code fixes. What usually doesn't happen before the fixes are delivered to the testers is a recertification that all features "basically work". The regression tests are usually tasked to the testers at this stage if not automated.

      This is why I say that while major bug fixes are still being done, major basic features are likely to be broken from time to time.

      Yes, it irritates the testers. However, many (most?) organizations seek to maximize bugfixing bandwidth at this stage, and don't want to use software engineer time for regression tests.

  6. nothing to see here, move along. by F2F · · Score: 3, Insightful

    how about we go back to basics and read the proper books on computer science? no need for your shmancy-fancy-'voice debugged'-automagically-'quality assured' offerings, thanks.

    i'll stick with The Practice of Programming. at the very least i trust the people who wrote it to have a better judgement.

    1. Re:nothing to see here, move along. by Anonymous Coward · · Score: 3, Interesting

      How about we read books on the subject written by software engineering researchers and not programming language researchers? See the Dynamic Analysis lecture notes.

    2. Re:nothing to see here, move along. by Anonymous Coward · · Score: 0

      Oh yeah, that's right, there's a difference. Wink wink.

  7. You shouldn't be doing it by dirk · · Score: 5, Insightful

    The first thing you need to learn is that you shouldn't be doing large scale testing on your own systems. That is just setting yourself up for failure, since the only real testing is independent testing. Preferably you should have full-time testers who not only design what needs to be tested, but how the testing will be done and who will do the actual testing. Where I work, we have 2 testers who write up the test plans, and then recruit actual users to do the testing (because they can then not only get some exporsure to the system, they can suggest any enhancements for the next version). Testing your own work is a huge no-no, as you are much more likely to let small things slide than an independent tester is.

    --

    "Information wants to be expensive" - Stewart Brand, the same guy who said "Information wants to be free"
    1. Re:You shouldn't be doing it by wkitchen · · Score: 5, Informative
      Testing your own work is a huge no-no, as you are much more likely to let small things slide than an independent tester is.
      Yes. And also because you can make the same mental mistakes when testing that you did when developing.

      I once worked with a dyslexic drafer. He generally did very good work, except that his drawings often had spelling errors. When he looked at his own drawings, the errors were not obvious to him like they were to everyone else. Most people don't have such a pronounced systematic tendency to make some particular error. But we all occasionally make mistakes in which we were just thinking about something wrong. And those mistakes are invisible to us because we're still thinking the same wrong way when we review it. So having work checked by someone other than the one who created it is a good practice for just about any endeavor, not just software.
    2. Re:You shouldn't be doing it by jkubecki · · Score: 3, Funny
      I once worked with a dyslexic drafer. He generally did very good work, except that his drawings often had spelling errors.

      Imagine that. A "drafer" who makes spelling errors.

    3. Re:You shouldn't be doing it by wkitchen · · Score: 1

      Doh!

    4. Re:You shouldn't be doing it by _|()|\| · · Score: 1
      you shouldn't be doing large scale testing on your own systems

      I would qualify that statement by saying that you shouldn't be the only one to test your own system. Development should do unit testing. QA should do functional testing.

      The sooner you test, the sooner you find bugs. The more experience you have (with testing and with the product), the more productive you can be. End user testing is great, but it's only one part of the process.

    5. Re:You shouldn't be doing it by nailbite · · Score: 2, Informative

      To clarify: We do have a separate QA team that performs large scale testing. I was hoping to help them by providing software to at least partially automate their processes. Testing is not a job that exercises a lot of creativity, unlike development. There should always be an element of fun in any kind of job/work; perhaps by automating their menial tasks it would lift their spirits up a bit. At the very least they get a new toy to play with. I agree that the dev team should not perform QA, mainly because you cannot expect them to see the user's POV, and of course bias.

    6. Re:You shouldn't be doing it by Kristoffer+Lunden · · Score: 2, Interesting

      More importantly, you tend to excuse and work around your own quirks and bugs. If you know the application will crash if you do certain things, you tend to avoid that - often using clunky workarounds instead.

      This may sound very strange to some; why not fix the problem instead of working around it all the time? But the reality is that this behaviour is really, really common. I've seen it so many times when someone is sitting down to test something and the developer is standing over the shoulder saying "no, not like that, you have to go *there* first and then click *that* button" when it was abvious from the GUI layout that that other button should be clicked and just work.

      And yes, guilty as charged myself - it is something of a subconscious thing, mostly. Having someone without emotional attachments to the application in question is imperative - as is not allowing people who do have attachments to be present when testings are conducted. It will almost inevetably end in a big excuse- and workaround fest where the developers take over the show.

      This is of course for stuff that neds to be tested and evaluated manually. Automated tests such as unit tests and the like is another story altogether (and great, great tools when used seriously). Anything you do more than twice should be automated, and test suites are great not so much for ensuring quality (though they do that too) as they are for *maintaining* quality.

    7. Re:You shouldn't be doing it by mangu · · Score: 1
      Anything you do more than twice should be automated


      Interesting point. That's one of my favorite arguments in the CLI vs. GUI debates. Writing instructions on how to do something in a console environment takes about the same work as writing a script that performs the job. After you write the script, nobody needs to do the handwork anymore.

    8. Re:You shouldn't be doing it by Greyfox · · Score: 1
      You can avoid a lot though, by writing libraries for most of the common functionality of your application, isolating functions that don't need to be exposed to the world, and writing unit tests for each function in the library. Most programmers won't devote the time to do this, though. In fact most of the programmers I've met wouldn't even know how.

      The only company I've ever run across that ever did testing well was Data General. I was on their team that was doing an audit of the entire C standard library. We had the spec (Man page) for each function and we had to insure it did what it said it did without any unintended side effects. We also had to document the entire test process for each function. If every company tested on that level there'd be a lot more programmers employed, and a lot fewer bugs in commercial software.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    9. Re:You shouldn't be doing it by Anonymous Coward · · Score: 1, Informative

      Formal safety critical software processes, as specified by the aerospace industry for example, will insist that your software is tested by a separate team as a minimum. For the higher levels of safety criticality, e.g. jet engine control, a separate company doing the testing is preferred

    10. Re:You shouldn't be doing it by SoSueMe · · Score: 2, Informative

      Automation is only good for stable applications.
      Elements that are going to or may be further developed will negate any benefits achievable from test automation.
      The "Industry Standard" tools such as Mercury's, Compuware's or IBM Rational's test automation suites require a significant amount of coding effort themselves.
      "Simple" design changes can blow away weeks of scripting.

      Automating stable components is the best way to go. As each component is completed and stable it can be automated for regression testing. Adding the completed component scripts to your test harness will flesh out your test suite.

      The above mentioned tools are very expensive but very effective.
      I'm looking forward to the subproject from The Eclipse Foundation the number of big name contributor is quite encouraging.

      If you like to code and have reliable and creative testers available, join up.

    11. Re:You shouldn't be doing it by Profane+MuthaFucka · · Score: 2, Insightful

      I often say that our testing people are very special people. That's because I'm a programmer. I write code because it's fun, and I consider testing to be a completely boring, mind-numbing, horrible way to spend a day. I don't say that they are special people to denigrate them, however. They are special people because through whatever quirk of environment and genetics, they actually love that kind of work, and they truly excel at it. It's a thing that completely mystifies me, but I won't question it. Because they do such a good job, I don't have to test. They are therefore at least partly responsible for my own enjoyment of my job, and I owe them big time.

      Sometimes I find it amusing when the testers say that they can't imagine how someone could enjoy programming; that they find it tedious, painful, and boring; and that they are glad that I do it so they don't have to. :-)

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    12. Re:You shouldn't be doing it by Durrik · · Score: 1

      Automation is also good for complex embedded devices that are designed to an open specification. Along the same lines its also good for testing servers written to the specifications.

      What white box automation needs (white box: where the testers are not contaminated by the code, and cannot contaminate the code) is a way to inject events into the device under test (DUT) and a way to observe and record repeatable results.

      For complex embedded devices that communicate with other things (example cellphones, or USB) this is fairly easy. It is also easy for servers. You send a message to the DUT and expect the correct response. If you don't get the expected response you either mark it as a failure or fix the automation.

      But this requires a specification that is agreed upon by both teams, and the development of the automated test system, is independent of the DUT. And this doesn't require a stable system to test on.

      You can't test applications this way. At least not easily. You have to keep rewriting the automation to 'click' in different places as the GUI changes.

      --
      Software Engineer & Writer of Military Science Fiction and Fantasy Blog: petermwright.com Twitter: WrightPeterM
    13. Re:You shouldn't be doing it by cetialphav · · Score: 2, Interesting

      Testing is not a job that exercises a lot of creativity, unlike development.

      I have to take exception to this statement. I am a full-time tester, but I am also a very good programmer. Testing of large complex systems absolutely requires creativity. It may be that my problem domain is different than most other testers. I work with complex telecomm equipment (e.g. systems with 1200+ separate CPUs with full redundancy carrying terabytes of traffic). Most of our developers don't even understand how the system works; they only know bits and pieces.

      But obviously, I don't test GUIs. I'm testing traffic and the automated interfaces that these boxes provide. Maybe testing GUIs is boring, but that doesn't extend to all testing jobs.

      But you are right about automation. It is essential. I maintain the test automation tool that we use internally and it is worth its weight in gold. If I were testing GUIs, I'd be looking for a way to test the back-end logic separately from the GUI. That means automation hooks in the guts of the application. That way when testing the GUI, you know that you can focus on the presentation of the data because the accuracy of the data itself was already verified. Of course, there are always factors that make things more complex than this.

    14. Re:You shouldn't be doing it by cetialphav · · Score: 1

      I must really be a weirdo. :) I like both testing and programming. To me, breaking things is just plain fun. In fact what really gets me annoyed is when it is just too easy. I.e., when I spend 15 minutes looking at a new feature and I'm finding so many bugs I can't keep up with all of the wrong things that are there. I like to have to work a little to find bugs. Detective work.

      But creating new software is fun also. Maybe it is because I use all of the software I write, though. I write tools that help me (and the rest of my team) test better.

      But most people here aren't like me. Most of the testers would hate to program. And most developers here hate testing, as evidenced by the crap they tend to deliver to us testers.

    15. Re:You shouldn't be doing it by faster · · Score: 2, Interesting

      Testing is not a job that exercises a lot of creativity, unlike development.

      Thanks for the laugh.

      I guess it depends on what you're testing, and whether you hire QA people or testers.

      Testers generally run other people's test plans, but who wrote that test plan, and did they have a spec, or just a few conversations with the developers? I've only had one contract where the test plans I wrote were based on a complete specification. I've never had a job where we got even 80% of a spec before the test plans were due. And I have worked for two software companies that are in the top 10 in the industry.

      So you, the arrogant developer who knows SO much more than anyone in the QA department could possibly know, create features out of your ass (or your team lead's ass), and we lowly uncreative QA folks have to try to keep up. Oh, and when you're late (note that I didn't say 'if you're late'; more often than not, there's no 'if'), whose schedule gets compressed to make the ship date so the product manager can get his bonus for shipping on time, development's. or QA's?

      Thanks you soooo much for stooping to build testability into your code, or to provide test tools so that we can make good use of the two weeks we get to test your million lines of code.

      But I'm not bitter. Oh no.

    16. Re:You shouldn't be doing it by Anonymous Coward · · Score: 0
      You can't test applications this way. At least not easily. You have to keep rewriting the automation to 'click' in different places as the GUI changes.

      Perhaps a script could contain lines such as:
      click_obj_by_title('OK')
      or:
      click_obj_by_tag('untitled1')
      .. i.e., a few functions which could automate a lot of the automating process. ;)
    17. Re:You shouldn't be doing it by Sviams · · Score: 1

      I have some experience in creating in-house test automation and management tools, and what I can tell you really should come as no surprise. Take a good look at your total test suite, identify those cases that you think you can automate to get a figure of coverage, then look at which of these tests are executed most frequently to get some priorities.
      After that all you have to do is build it, and they will come =)
      Obviously the goal is to automate as many of the monotonous and repetitious tasks as possible, thus freeing up time for testers to do more innovative testing and spending more time on each defect, ensuring higher defect detail, quality and better turnaround.

      I totally agree that funtion and UI testing should be performed by a dedicated team, in my experience developers generally have too much to do already, and when resources are tight guess what hits bottom prio...

    18. Re:You shouldn't be doing it by Anonymous Coward · · Score: 0

      And when you reviewed your post before hitting "Submit", you missed the spelling error. Maybe you should have gotten an independent tester to look at your post.

      Seriously, though, it's a great demonstration of the point that you were making.

    19. Re:You shouldn't be doing it by Anonymous Coward · · Score: 0

      Yes, and look at how well DG is doing these days, compared to companies like Microsoft, which doesn't appear to even have QA procedures of any kind whatsoever.

      The problem is that testing is expensive, and more thorough testing is more expensive. In today's competitive business environment, cheapity will win over quality. This is where OSS/FOSS has an advantage.

    20. Re:You shouldn't be doing it by _|()|\| · · Score: 1
      I was hoping to help them by providing software to at least partially automate their processes. Testing is not a job that exercises a lot of creativity, unlike development.

      If your observation is an accurate reflection of your QA department, then it may not be prepared to take on the responsibility of automation. As another poster says, test automation is a full-time job. Like most development projects, the test tools and the tests themselves require maintenance. You can give them a pole, but they need to know how to fish. Is your company willing to pay $50K+ for QA staff with this expertise? Put another way: would you work in your company's QA department?

    21. Re:You shouldn't be doing it by Anonymous Coward · · Score: 0

      And why bother with spelling on slashdot? It's like arguing about quantum physics with a 10 years old.

    22. Re:You shouldn't be doing it by Anonymous Coward · · Score: 0

      My job is porn testing. My hand is soar.

    23. Re:You shouldn't be doing it by Macrolord · · Score: 1

      In a document which outlined the specs for a new project a couple years ago, there was a particularly amusing typo which caused most in the room reviewing said document to lose their composure. In the very last paragraph of the document was the requirement for the lab to employ "two full-time testes."

      I hope it is at least half as funny to you as it was for us in the room.

    24. Re:You shouldn't be doing it by Rick+the+Red · · Score: 1

      The only quantum physics arguements I win are against 10 year olds, you insensitive clod!

      --
      If all this should have a reason, we would be the last to know.
    25. Re:You shouldn't be doing it by zooblethorpe · · Score: 1

      So having work checked by someone other than the one who created it is a good practice for just about any endeavor, not just software.
      Amen to that -- it is vital in translation, for instance, where the first translator might misinterpret something, or even have their eyes skip a line, whereas the second will catch the booboo. Even the best of us screws up somewhere.
      --
      "What in the name of Fats Waller is that?"
      "A four-foot prune."
  8. Automated testing both contact center and Web by Anonymous Coward · · Score: 0

    www.empirix.com --- blatent plug

  9. As a former professional software tester ... by eddison_carter · · Score: 5, Insightful

    Nothing can compare to having a dedicated test staff. At the last software place I worked (part-time, in school, while getting my engineering degree), we had 3-6 college students working on testing most of the time (we would also be given some small projects to work on).

    Testing goes far beyond what any automated system can test, if you have a user in there somewhere. You also need to check things like "How easy is it to use?" and "Does this feature make sense?". We also suggested features that the program did not have, but from our experiance using it, thought that it should have.

    --
    I always prefer to start the year off with a bang - or, to be more precise, a series of loud hums, a crackle or two, and
    1. Re:As a former professional software tester ... by Anonymous Coward · · Score: 0


      As a current tech support professional who was once assigned to help test a large enterprise effort I'll state that, based on my n of 1, technical support (TS) should _always_ be included in on testing.

      The QA department found things the engineers didn't find, TS found things neither found, engineers found things other engineers missed (and things they knew were wrong got fixed).

      Yes, absolutely, roll out to users, but make sure that the Support people are involved.

    2. Re:As a former professional software tester ... by 2Paranoid · · Score: 2, Insightful

      Automated testing tools are best suited for regression testing. Regression testing is the set of test cases that are perform over and over again with each release. Its main function it to make sure that the new features did not break anything that was not supposed to change.

      Our test group uses a product called Hammer (sorry, but I don't know where they got it or how much they paid for it) for their regression testing. Hammer has its own scripting language (may be VB based) and its own database that is used to hold test case data. For example, the test case may require that 1000 (different) customer accounts can be created within 60 seconds.

      I don't know much more than that about Hammer, I just design, write and unit test the software. The test group feature, system and regression tests it, plus they cooridnate the beta testing that is done by the trainers and a small group of actual users. The users must "sign-off" on new software before it can go into Production.

      And I agree that there is nothing like having "actual" users doing the testing for finding bugs and for prividing feedback.

    3. Re:As a former professional software tester ... by Anonymous Coward · · Score: 0
      We also suggested features that the program did not have, but from our experiance using it, thought that it should have.

      Features like a spelling checker?

  10. Testing is fun too. It is MEETINGS that suck. by Wargames · · Score: 2, Insightful

    I agree about programming. I prefer the design phase. I like to design a system to the point that programming it is a cinch. What really sucks about software development is not testing it is meetings. Meetings suck the fun out of programming. Stupid senseless timewasting meetings. Scott Adams hits the nail on the head about meetings every time.

    --
    -- Each tock of the Planck clock is a new world and here we are still life. --
  11. QA is a separate function by drgroove · · Score: 5, Insightful

    Outside of unit testing and limited functional testing, developers should be doing QA on their own code. That's a bit like a farmer certifying his own produce as organic, or a college student awarding themselves a diploma. It misses the point. QA function, automated, regression et al testing is the responsibility of a QA department. If your employer is forcing you to perform QA's functions, then they obviously don't "get it".

    1. Re:QA is a separate function by ghettoboy22 · · Score: 1

      Don't you mean "should not be doing QA on their own code.".... ?

    2. Re:QA is a separate function by Yelskwah · · Score: 1

      I think you forgot a 'not'.

      Though the sentiment is clear: developers should not test or QA certify their own code. There is the obvious problem of the moral standards (or lack thereof) of the engineer ("Aw shit it broke, ah f*ck it. It's 2am. Label it. I'm off home."), there's also the psychological effect of engineers subconsciencly shying away from testing areas they know are not sufficiently protected with validation and exception handling, or where the specification (if there /was/ one) was fuzzy.

      In my experience, if you want to nail your shorts to the mast and say "we believe in software product quality", make it the primary responsibility of a group of people with a named leader. Have that leader own the QA process (and DEFINE that process so it is refinable and repeatable) and BLAME that team as a whole when the software blows up in production. This is the only metric that really matters to that team. Link pay to that metric.

      Yes, that's harsh. Yes, the team will be reviled and hated. You - and they - will have to deal with that.

      But over time, the QA team will develop a bulletproof QA process. Google for IBM's "Black Team" for an example of a QA team that worked.

      -JH

    3. Re:QA is a separate function by the_weasel · · Score: 2, Insightful

      I do a fair bit of QA and testing of our software product - and If i could have a nickel for the number of times its been apparent that a developer has checked in code they clearly NEVER tested.

      A developer has some responsibility to ensure thier code at least functions in the context of the overall application before making it my problem. Just because it compiles does not mean it is done.

      --
      - sarcasm is just one more service we offer -
    4. Re:QA is a separate function by Anonymous Coward · · Score: 1, Funny

      I used to work as a QA tester and now I'm the gumpty who admins our source control and build platforms. I used to think our developers were idiots for checking in non-tested code. Now I know better; our developers are morons and regularly check code that doesn't even compile!

    5. Re:QA is a separate function by jc42 · · Score: 1

      Don't you mean "should not be doing QA on their own code.".... ?

      In actual practice, he got it right by forgetting the "not". ;-)

      I usually present the QA folks with lots of test code. This makes them my friends, since they are usually under pressure to get the product out the door and don't have time to think up all the tests themselves. I don't either, of course, and I can't ever give them something complete. And I have the usual developer's problem of not being permitted any contact with actual users, so I can't guess at their misconceptions when they try using the software without having read any of the documentation that I also included.

      Quite often, I get a bit of flak from management for being too friendly with the QA people. They usually have this silly "clean-room" concept for how it should be done. And the tests should test all possible paths. Yeah, as if they have the millenia that that would take on the fastest cpus ...

      One serious problem is that the QA testers always have to modify my tests for their test setup. I have my own collection of (mostly perl and tcl) testing tools, but of course that's totally different that what the QA people are using. And there isn't time for us to teach each other to use all the tools.

      It's all a long way from an ideal setup. But that's The Market for you.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    6. Re:QA is a separate function by Rob+Riggs · · Score: 1
      Quite often, I get a bit of flak from management for being too friendly with the QA people. They usually have this silly "clean-room" concept for how it should be done.

      Your management has their hearts in the right place. The problem with the developer providing the QC of their own code is that they may miss the same problems in their test code as they did in development.

      I think of the system testing at my company as comprised of two main activities: integration testing and feature testing. I can write unit tests for the last one, but if I misinterpret a requirement, my tests will validate that misinterpretation.

      Itegration testing of enterprise applications is more difficult to do by the developer, because usually the development environment does not exactly mimic the production environment.

      --
      the growth in cynicism and rebellion has not been without cause
    7. Re:QA is a separate function by SoSueMe · · Score: 1

      When I first started in the testing profession, I coined the phrase "the over the baffle testing".
      The developers would literally pass a diskette with a recompiled component over the baffle and say "Here, try this".
      We were then expected to reinstall the component and see if it fixed the problem.

    8. Re:QA is a separate function by Anonymous Coward · · Score: 0

      QA function, automated, regression et al testing is the responsibility of a QA department. If your employer is forcing you to perform QA's functions, then they obviously don't "get it".

      That is absolutely true and unfortunately I have to QA my own projects because my employers are a bunch of cheap bastards (because they aren't making money of course). So what ends up happening is the customer does the QA :)

    9. Re:QA is a separate function by glesga_kiss · · Score: 1
      It's not that developers can't test, they are simply testing different things. Developers test that what they wrote works. QA people test that it isn't breakable. Sure, most fixes/new functionality works in it's default case, it's when you use it properly it fails. Developers don't test for that, they look for a clean compile, then a basic "passed" message. And for them the job is done and they move onto the next task.

      Another important aspect is the independent verification. The following are regular causes of failures caused by the developer using a development environment:

      • Hardcoded paths
      • Missing libraries
      • System config (e.g. hosts file)

      Any of these problems will not stand out on the developers machine. You need to install to a clean host do a non-default directory in order to test that it'll work when shipped. It's amazing how many hardcoded paths this'll find. This was the first thing I learned in QA.

  12. Testing by BigHungryJoe · · Score: 3, Informative

    We use certification analysts. They handle the testing. Unfortunately, the functional analysts that are supposed to write the tests rarely know the software well enough to do that, so some of my time is spent helping to write the black box tests. Writing good tests has become especially important since most of the cert analyst jobs are being sent to India and aren't on site anymore.

    bhj

    1. Re:Testing by Anonymous Coward · · Score: 0

      Why can't you test GUI's? In my experience, it boils down to two major failings shared by nearly all toolkits:

      I've found one kind of application where programmatic and user interfaces are in fact one and the same. Web applications. The real interface to these apps is html, which both computers and people are capable of handling. Assuming the web browser isn't horribly broken (not a very good assumption, but since you don't write the browser it's one you have to make nonetheless), there's no difference between accessing the application as a user and accessing it as a program. I wish I had the time to implement automated testing in the product I test, because I doubt I'll ever get such a test friendly environment again.

    2. Re:Testing by SoSueMe · · Score: 2, Insightful

      Certified Analysits should be able to work from well written specifications.
      You do provide complete and acurate TDS (Technical Design Specifications) for architectural details and FDS (Functional Design Specifications) for system operation, don't you?

    3. Re:Testing by Anonymous Coward · · Score: 0

      Mod up! Just what are moderators up to these days?
      This guy is making an important point: with bad documentation comes bad testing and thus a bad product.

    4. Re:Testing by Anonymous Coward · · Score: 0

      You bastard - I didn't need to lose all hope!

    5. Re:Testing by glesga_kiss · · Score: 1
      Good post, but I must stick up for GUI testing. I've found it to be very useful and productive. You need dedicated staff on it, who are skilled at coding, otherwise there is no point. You need to budget for maintainence and train the developers into not breaking things by changing the GUI on a whim. In my last place my boss worked out how many man hours were saved by a relatively simple regression test running at least once a day. The numbers were surprising, unfortunately I don't have them at hand, but it gifted us whatever budget the QA team requested within the company. Coupled with the time saved by early notification of failures (allowing rebuilds to be started by anyone who happened to notice the "FAILURE!" e-mails), this radically changed a project that we were working on.

      Also, you mention trying to get every path through the software. I've never aimed to complete any of these, maybe our apps have been different, but I've found that it's just not possible. Too many combinations. Also, once you've tested the upper percentile of these permutations, you are getting diminishing returns putting the effort in verses the posibility of finding a bug.

      I usually just take a representive sample, weighing up the likelyhood and freqency of each operation. I'd love to cover them all, but most QA departments are heavily stretched as is. The developer/tester ratio should be almost even, a "good" environment would be 2:1, but usually it sits around 5:1 in my experience. This is where my liking for automation comes in, provided the benefit outweighs the development cost. Regression testing is an ideal candidate for this.

      PS I'm writing this as I kick of automated suites. You'll mostly find me on slashdot when I'm waiting for these to hit breakpoints and the like... ;-)

    6. Re:Testing by Jerf · · Score: 1

      Also, you mention trying to get every path through the software. I've never aimed to complete any of these, maybe our apps have been different, but I've found that it's just not possible. Too many combinations.

      Actually, that was my point, to establish the impossibility up front. Too many people doing "code it all and poke it at the end" write up a test script and think they are covering all the cases, when they don't even come close. You must first remove misconceptions in this arena before you can make progress :-)

      I wouldn't advocate the removal of real testers. But they need to be an adjunct to the automated, unit level testing with an architecture that allows deep automated testing, not a replacement. (If they are coders enough to add to the testing suite, so much the better!) Otherwise, those testers are boned. As you write more testing, the system tends to naturally stabalize into powerful, yet discrete, subsystems that often merely get capabilities added to them over time, so tests can often stay good and useful for many, many iterations unchanged.

  13. How it should be done by Anonymous Coward · · Score: 0

    Automated in house testing tools (for the ui all the way down), combined with an army of testers walking through every criteria manually. So to answer your question we do it both ways. And that's all testers, developers don't get involved with the tests. Having developers test their own code is like having an author edit his own work.

  14. Test Matrix by Pedro+Picasso · · Score: 4, Interesting

    I've used auto-test thingies, ones that I've written, and packaged ones. Some situations call for them. Most of the time, though, it's just a matter of doing it by hand. Here's what I do.

    Create a list of inputs that includes two or three normal cases as well as the least input and the most input (boundaries). Then make a list of states the application can be in when you put these values into it. Then create a graph with inputs as X and states as Y. Print your graph and have it handy as you run through the tests. As each test works, pencil in a check mark in the appropriate place.

    Now that you've automated the system to the point where you don't need higher brain functions for it, get an account on http://www.audible.com, buy an audio book, and listen to it while you run through your grid. It still takes a long time, but your brain doesn't have to be around for it.

    This is going to sound incredibly elementary to people who already have test methodologies in place, but when you need to be thorough, nothing beats an old fashioned test matrix. And audiobooks are a gift from God.

    (I'm not affiliated with Audible, I just like their service. I'm currently listening to _Stranger in a Strange Land_ unabridged. Fun stuff.)

    1. Re:Test Matrix by Pedro+Picasso · · Score: 1

      Great ideas, Elliott. Scripting and running your scripts as a batch is great for initial testing and better for integration testing when you have to test the same features as before to make sure they didn't break. Unfortunately, I mostly work with web applications, and as soon as the customer requests a javascript solution, my "spidering" test scripts stop being up to it. So I end up doing a lot of things by hand.

  15. Automation is difficult by TheSacrificialFly · · Score: 5, Informative

    It's extremely difficult to develop and maintain on any enterprise size system. One of the big problems management has with automation I've found is that once they've put the money into initally developing the automation, they think it will run completely automatically forever more.

    From my personal experience at one of the world's largest software companies, automation maintenance for even a small suite (200-300 tests, 10 dedicated machines) is a full time job. That means one person's entire responsibility is making sure the machines are running, the tests aren't returning passes and fails for reasons other than they are actually running the tests, and making changes to the automation both when either the hardware or software changes. This person must know the automation suite as well as the tests attempting to be performed intimately, and must also be willing to spend his days being a lab jockey. It's usually pretty difficult to find these people.

    My point here is that even after spending many dev or test hours developing automation, in no way is it suddenly complete. There is no magic bullet to replace a human tester, the only thing you can do is try and improve his productivity by giving him better tools.

    -tsf

    1. Re:Automation is difficult by Bozdune · · Score: 4, Insightful

      Parent has it right. Most automation efforts fail because the test writers can't keep up with the code changes, and not many organizations can pay QA people what you need to pay them if you expect them to be programmers (which is what they need to be to use a decent automation tool). Plus, one refactoring of the code base, or redesign of the UI without any refactoring of the underlying code, and the testers have to throw out weeks of work. Very frustrating.

      Even in the best case, automation scripts go out of date very quickly. And, running old scripts over and over again seldom finds any bugs. Usually nobody is touching the old functions anyway, so regression testing is largely pointless (take a lude, of course there are exceptions).

      I think the most promising idea on improving reliability I've seen in recent years is the XP approach. At least there are usually four eyes on the code, and at least some effort is being put into writing unit test routines up front.

      I think the least promising approach to reliability is taken by OO types who build so many accessors that you can't understand what the hell is really going on. It's "correctness through obfuscation." Reminds me of the idiots who rename all the registers when programming in assembly.

    2. Re:Automation is difficult by Anonymous Coward · · Score: 0

      Exactly. Not only that but most test suites such as WinRunner or Rationale Rose are scripted. That means you need a QA tester who can also hack some code. Most testers who can code would rather be developers, so there are slim pickings when it comes to staffing your QA department.

      As an ex. tester at several different companies and testing several different products we always did it the "hard" way; write our own human readable instructions and run through them manually. Even manual test scripts fall out of date quickly though.

      The only way to test enterprise software is with a test team doing the hard graft and writing their own tests. Trying to do it any other way is both silly and doomed to failure.

    3. Re:Automation is difficult by MCZapf · · Score: 1
      I'd only use automation if it saves a LOT of time. As you hinted, the automation is a whole development project in itself, which means it requires development AND TESTING of its own. Yes, you have to thoroughly test the automation to make sure it's actually doing the tests properly: is it generating the right inputs and checking the outputs? Even then, if automated tests fail, you still have to wonder (and investigate) whether it's a problem with the automated test itself or a problem with the tested software. Worse, if an automated test program, due to some bug, passes a test case that actually fails, you might not find out about it until too late.

      Where I work, new releases of the automated test tools (developed in-house) come out more often that the actual application we have to test. This means we have to validate the test tools every time: running the test with the tool, but checking everything manually as we do it. It's a pain.

    4. Re:Automation is difficult by _|()|\| · · Score: 1
      automation maintenance for even a small suite ... is a full time job

      Excellent point. I am fortunate to be able to work on test automation full time, and to have at least one other person to do most of the "lab jockey" chores. My day is divided between improving the tools, writing new tests, and analyzing results (which often requires revising a test).

      There are times when I resist adding new tests (usually a big pile of stored procedures that a developer or another tester wrote), because I don't have the resources to analyze the results and maintain the code.

    5. Re:Automation is difficult by Karnak23 · · Score: 1

      Indeed it is difficult. I too work at a large software company and we have a full time test team. We do separate the responsibilities of writing and maintaining the tests from actually running the tests. The execution team's job is to use lab machines to execute the tests in whatever configurations we wish to support. They rely heavily on automation to format, install the OS, configure the machine, install the product, and execute the tests. Results are then posted on a team website and tracked via database. Any failures are reported to the appropriate testers for investigation and resolution, e.g. new product bug, old product bug come back to haunt, test bug, etc. Division of labor and responsibility makes a big difference between successful and unsuccessful test automation.

      And, true to fashion, management does indeed believe that the tests, once written, don't have to be modified. Even though they are often involved in the decision to make changes to a feature, they don't understand the impact of the changes on the tests. Here, it is up to the feature PM's, Devs and Testers to communicate and work together to make sure that updates to the tests mirror changes to the feature.

    6. Re:Automation is difficult by mewphobia · · Score: 2, Insightful

      This is one part of extreme programming I like very much. The idea is to write the test cases before you write the software. That way, you're testing to specification, not implementation.

      Even in the best case, automation scripts go out of date very quickly. And, running old scripts over and over again seldom finds any bugs.

      To this I must respectfully disagree. In small(er) projects, it might be closer to the truth, but from my experience regression testing is vital. Regression testing is mainly useful when requirement specifications change, and features creep in. Someone will be hacking at code somewhere to add a feature, without thinking about the implications. From my experience, people are always touching old functions! I always mandate automated regression testing on every project i've worked on with more than 4 people on it.

      On a side note, I think regression testing in open source projects is even more important! Open source projects are by their very nature, hackish. People are constantly rewriting functions to do what they never were intended to. I've love to see a good automated regression testing framework for new open source projects.

    7. Re:Automation is difficult by Anonymous Coward · · Score: 0

      I think the least promising approach to reliability is taken by OO types who build so many accessors that you can't understand what the hell is really going on. It's "correctness through obfuscation." Reminds me of the idiots who rename all the registers when programming in assembly.

      Another reason to use the XP approach! If you have 100% test coverage, written UP FRONT, you can just look at the test to see how the code is used. Also, doing it test-first, the programmer realizes quickly how goofy the interface is and fixes it.

      My test-first code is just incredible when compared to my "big design up front" code. For instance with BDUF, you tend to have fewer classes, and you tend to think of them as 3rd-party libraries that have every possible function available. For instance you might have a getter and a setter, even though you don't need the setter anywhere in your code, you just use a default value. With test-first, it never gets written because you're can tell immediately that you're wasting your time.

      Also with test-first I tend to factor into many small simple classes. So instead of one big monolithic class, you have a class that returns instances of other classes, etc., all very loosely coupled.

      It really is amazing once you get the vibe!

  16. Segue has some good solutions by DeafDumbBlind · · Score: 1

    http://www.segue.com/index.asp

    --


    Jesus used to be my co-pilot, but we crashed in the mountains and I had to eat him.
  17. Manually performing a complete test by Tony-A · · Score: 1

    is an oxymoron.
    Difficult if there is no logic and no interactions.

    Scripts will be of some help.
    Probably best will be long complicated sequences of operations whose net effect must logically be precisely nothing.

    If you're lazy like me, integrate first, and every module is responsible for not going beserk in the presence of buggy neighbors. Too much software seems designed to assume that everything else is perfect. The old game of "gossip" shows that even if everything is perfect, your idea of perfect and my idea of perfect may not perfectly coincide.

    1. Re:Manually performing a complete test by guitaristx · · Score: 1

      Really, the length and frustration of the testing phase has an inverse relationship to the detail in the design (and adherence to the design). The better you design it, the easier the testing is. Modularize! Unit test per-module! That way, you can use a process of elimination: "The bug isn't here, we tested this module thoroughly." It also helps to enforce design docs to be made as engineers write. That way, you know exactly what the code is doing when you test it. Otherwise, it's hard to identify border cases, bottlenecks, etc.

      --
      I pity the foo that isn't metasyntactic
    2. Re:Manually performing a complete test by Tony-A · · Score: 1

      "The bug isn't here, we tested this module thoroughly."

      You haven't seen many bugs, have you? Sorry, I'm sure you have, but bugs are extremely adept at hiding in places where you "dont have places".
      I've run into too many doubles and even a triple where the interactions were subtle enough that a bug was discernable only in the combination. Fix either (any in the case of the triple) and the problem goes away. Fix both, ... repeat.

      I would class as a bug, any behavior which departs from what the specs should be. If the specs are wrong that doesn't make the program right. If it is impossible for the bug to show itself, there is still a bug. I think part of the problem is the implicit assumption that it is even possible, let alone easy, to write bug-free code. With the possible exception of some stuff by Knuth, nobody does.

  18. XDE Tester by JavaPunk · · Score: 1

    I dunno about anybody else, but my dad works on AUIML(Abstract User Interface Markup Language Toolkit), a large gui back-end for iSeries and any other java front end, web back-end admin type tools. Written in entirely in java there is an eclipse plugin to output the xml gui code (You can find it on the alpha works IBM web site for a free trial). My dad does all the testing with XDE tester from Rational Tools (owned by IBM, how nice!). XDE can test both the web and the java side of this. The tester is really cool, test cases are written in XML. XDE has some odd problems with the Internet Explorer java plugin and he has horror stories about trying to get it to work (He seems to be the only person around capable of getting it to run :) ). He now runs all his test cases over night on a headless machine (They take a couple hours), checks the error reports in the morning to know what he has to fix.

  19. Model based testing by d0st03vsky · · Score: 0
    A trend in the past few years which has been successfully implemented in the industry is Model Based Testing. Basicly, you define what it is you're testing, what you can do to it, and what the expected results of those actions would be. Once you have a complete valid model, you can then create any testing you want, simply asking the model, "if you're like this, and I do this, what should happen?" This can be done at an API level or an enterprise level.

    The fun development part is once you've built the model, you can use any technology to develop the automation to run the resulting test cases.

  20. Dedicated test staff by smoyer · · Score: 1

    We too use dedicated test engineers who write the test plans and at least oversee the testing (they do most of it themselves). We are working on several different automated test ideas at the present. Automatic regression testing (our code is in Java and each class and package has JUnit test code) will be accomplished during each build cycle.

    As you noted, it is more difficult to test the entire system end-to-end. Our problem is complicated by the fact that we don't have the infrastructure to completely load test the system. Load testing of the web interface is another class of problem that can be solved fairly easily ... and if the tests are selected properly, you can exercise your middle-ware and back-end DB server at the same time.

  21. Automated process by cubicledrone · · Score: 1, Insightful

    Here is the standard management response to automating anything:

    "We don't have time for that. Just get the QA testing complete so we can start the layoffs."

    This basically makes the entire question of automating processes academic. Now, if automating processes can lead to massive job loss, salary savings and bonuses, it might actually be approved.

    Long-term value is never EVER approved instead of short-term pocket-stuffing, EVEN IF a business case can be made for it. I've seen near-perfect business cases (complete financials, charts, graphs, blow-dried corporate phone-flipping management prick with a light pointer hosting Wheel of Buzzwords in the conference room) made for automating very expensive work schedules, and they were a) ignored or b) shouted down.

    Based on this, it's very possible that even if an automated tool could be built, and worked, it would still be ignored because it was non-standard. Yes, I've seen this happen too. Five people assigned to a project that a Perl script could do in a half hour. The Perl script completes the job, but management refuses to believe the results are accurate, so they keep the five people working on the same project for four days... and produce the exact same results.

    Now let's all sing the company song...

    --
    Business isn't willing to pay for products, innovation and careers, so we get brands, mortgage commercials and layoffs.
  22. 6 year experience in QA by cemaco · · Score: 5, Insightful

    I worked 6 years as a Quality Assurance Specialist. You cannot avoid manual testing of a product. Standard practice is to manually test any new software and automate as you go along, to avoid having to go over the same territory each time there is a new build. You also automate specific tests for bugs found after they are fixed, to make sure they don't get broken again. My shop used Rational Robot from IBM. There are a number of others, Silk is one I have heard of, but never used. Developers often have an attitude that Q.A. is only a necessary evil. I think part of it is because it means admitting that they can't write perfect code. The only people I have seen treated worse are the help desk crowd. (another job I have done in the past). The workload was terrible and when layoff time came, who do you think got the axe first? As for developers doing their own testing? That would help some but not all that much. You need people with a different perspective.

    1. Re:6 year experience in QA by moblsv · · Score: 1

      Our shop also uses Robot. Record playback is very difficult to maintain but we have a solution which has worked well for us. We seperate the pages within our product into object maps and then build the Robot recognition strings from these maps at runtime. This way we can update an object in our map when it changes in the product and automagically fix all the scripts. Our test department is fortunate to have developers who truly understand the importance of testing. Unfortunately, we have also been caught up in corporate consolidation and have been bought out twice in the past two years. Now, even though our location values testing, the people who hold the purse strings think of testing as nothing more than a bottleneck. End result is a great automated testing framework and not enough commitment to it to really use it.

    2. Re:6 year experience in QA by bugmenot · · Score: 1

      Mercury WinRunner is actually designed around the concept of having an object map.

      Our dept. was considering switching to that product from Robot (due to pressure from the Corp office, WinRunner is cheaper), and one of my co-workers and I designed this little tool that goes through the dB tables our software is designed around, and automaps all the objects in the system. At this point, it was stored on a central server, so anyone writing a new script could just look up the object names in the list pertaining to the component they were testing.

      It turned out to be pretty convenient, but not convenient enough to spare us from having to teach all of these thick analysts a new scripting language ;)

      --
      This account has been seized by the GNAA. That is all.
    3. Re:6 year experience in QA by SoSueMe · · Score: 1

      1) Winrunner is less expensive in the initial purchase. Robot has a very low cost on the upgrade side in comparison. (There are a lot of upgrade costs to Mercury's .NET solution. It is a whole new product.)

      2) "Thick" developers need to learn new languages to remain current so why should it be any different for professional testers?

      Hint: Know the intricasies for a professional function before you use a derogatory term.

    4. Re:6 year experience in QA by bugmenot · · Score: 1

      Actually, I've always felt the analysts we use for design shouldn't be required to do any scripting at all. It's not their specialty.

      What ends up happening, is they define the tests (and rightly so), but then are required to draft it in Robot, when it's then passed on to us.

      Most of the time I have to scrap what they've done and rewrite it.

      Yes, that word was not proper, and it's not their fault the system isn't designed properly.

      --
      This account has been seized by the GNAA. That is all.
    5. Re:6 year experience in QA by glesga_kiss · · Score: 1
      Robot is now being mostly phased out and replaced by the product formerly known as "XDE Tester", which was formerly known as "RobotJ". It's now known as "IBM Rational Functional Tester for Java and Web". If you are testing Java or Web, it's the dogs bollocks.

      It's Java based, so if you have dev. experience you are laughing. You can fire off background threads to monitor things, use any standard Java library to do anything. This is very very powerful.

      Why was this topic posted at the weekend and not during the week when most testers are actually working!! I've worked in testing for many many years and have lots of experience, but by the time I saw this thread, most folk will have moved on.

      For the discussion of all aspects of QA, I recommend this site. They have general areas as well as separate forums for each of the popular test tools.

  23. TDD by Renegade+Lisp · · Score: 3, Insightful
    I think one answer may be Test Driven Development (TDD). This means developers are supposed to create tests as they code -- prior to coding a new feature, a test is written that exercises the feature. Initially, the test is supposed to fail. Add the feature, and the test passes. This can be done on any level, given appropriate tools: GUI, End-to-End, Unit Testing, etc. Oh, did I mention JUnit? The tiniest piece of code with the most impact in recent years.

    I came across this when I recently read the book by Erich Gamma and Kent Beck, Contributing to Eclipse. They do TDD in this book all the time, and it sounds like it's actually fun.

    Not that I have done it myself yet! It sounds like a case where you have to go through some initial inconvencience just to get into the habit, but I imagine that once you've done that, development and testing can be much more fun altogether.

    1. Re:TDD by r.jimenezz · · Score: 0, Troll
      It's not that fun :)

      I read the book. I had to write an Eclipse plugin recently and decided to give TDD a test drive (I had developed a previous, non-plugin project using TDD before).

      The thing is, when you are working with something like Eclipse, i.e. huge and vastly undocumented (the book is good, but doesn't cover many important issues), TDD is good because it helps you choose a path. It allows you to divide your work, is an invaluable help in designing and certainly boosts your confidence for refactoring and stuff like that.

      However, if you have a clear idea of what to do, TDD becomes rather boring and tedious. What's worse, it's very low-level testing for the most of it and does little to help you in usability and acceptance testing. And like many other posters point out, the best way to get testing done is to have independent people do it.

      That said, TDD certainly has a place in the development process, and one thing I do appreciate about it is that proponents seem to push it more sensibly than XP.

      --
      The revolution will not be televised.
    2. Re:TDD by Anonymous Coward · · Score: 0
      I think one answer may be Test Driven Development (TDD). This means developers are supposed to create tests as they code -- prior to coding a new feature, a test is written that exercises the feature. Initially, the test is supposed to fail. Add the feature, and the test passes. This can be done on any level, given appropriate tools: GUI, End-to-End, Unit Testing, etc. Oh, did I mention JUnit? The tiniest piece of code with the most impact in recent years.

      I think the question was about acceptance testing. TDD is about building the unit test suite concurrently with the code. It's not about acceptance testing


      Automated Acceptance Testing (XP style) really requires that you change the way you think about acceptance tests. You write them up front (using a tool like FIT (fit.c2.com, www.fitnesse.org), and design your application so it can be tested that way. You still have to do some manual testing - there is no such thing as an automated test for look and feel, or real world usability. However, you can automate the bulk of the tests.

      John Roth

    3. Re:TDD by labufadora · · Score: 1

      Right, the original question was about acceptance testing, but TDD still offers a number of benefits, some of which help in solving the acceptance testing problem. Later in these postings, a number of the benefits of TDD are enumerated by William Tanksley. He briefly discusses the fact that simply being forced to write unit-testable code has a profound effect on modularity, coupling and cohesion. He's right about that I think, but there's more ...

      Done correctly, TDD covers a lot of testing scenarios. Granted, it is black box level testing, but it is nevertheless testing ground that gets covered. Frequently (daily? weekly?)integrating the application and running a large suite of tests against the code successfully builds a lot of confidence that at least the guts of the app behind the UI is stable. Just having this confidence (and a thin UI layer, as William Tanksley mentions) can cut a lot of work out of acceptance testing. It really can focus on the 'skin' of the application, especially if, when bugs are found in the guts, a test is first written to expose the bug, and *then* the code is fixed to make the new test work.

      Additionally, having dedicated QA folks working closely with the software engineers throughout a project's life means that the QA folks are up to speed on all of the new functionality coming through, and can be aware ahead of time about what unit tests will cover, and what business logic still needs to be tested through the UI. This can be a very efficient, painless process. I've seen it work.

      As a developer, I love TDD. I do not fear maintenance tasks at all anymore. With a suite of tests that is regularly run, all the uncertainty of possibly not knowing everything that a maintenance change will affect is almost completely gone. I'll find out when tests break, and when I've made my changes written tests for them and fixed all the tests I broke, I'm done. This also shortens the acceptance testing cycle, because it shortens the development turn around time when problems are found in acceptance.

      --
      Paradise is exactly like where you are right now, only much... much... better. - Laurie Anderson
    4. Re:TDD by glesga_kiss · · Score: 1
      These are different kinds of tests. Developers can write some tests while coding, but not all. The most fitting ones are unit tests.

      For most apps, you need more than that. You need to see how it'll all fit together, with all the different modules you have. You need to see how it will run on the various target hardware or operating systems (java testing anyone, yikes!!). Then you get to throw in databases, resilience testing, soak testing an so on. There's a lot to it!!

  24. i hate to be obvious, but by wobblie · · Score: 0, Troll

    duh, open source

    best testing there is

    1. Re:i hate to be obvious, but by Anonymous Coward · · Score: 0

      Do be quiet whilst the grownups are talking.

    2. Re:i hate to be obvious, but by BenjyD · · Score: 1

      OSS user testing for desktop software* is great if all you want is bug reports along the lines of "it, erm, like crashed when I clicked on the thingy". Maybe a bit more detailed than you'd get for a piece of commercial software, but not much.
      I ran into this problem in my (small) OSS project. My solution was to form a small testing group (seven members at present) from dedicated users - I send the release out to them, they do pretty thorough testing and I get back detailed bug reports. Seems to work very well, combined with unit testing etc.

      *Projects like the Linux kernel, Apache are different - the kind of people who find bugs are going to be much more knowledgable.

  25. We have automated testing for our system at work.. by Anonymous Coward · · Score: 0

    they are called coops ;)

  26. Automation versus Manual Testing by kafka47 · · Score: 5, Insightful

    At my company, we have a small QA group that tests several enterprise client-server applications, including consumer-level applications on multiple platforms. To exhaustively test all of the permutations and platforms is literally impossible, so we turn to automation for many of the trivial tasks. We've developed several of our own automation harnesses for UI testing and for API and data verif. testing. The technologies that we've used :
    - Seque's silktest
    - WinRunner
    - WebLoad
    - Tcl/Expect

    There are *many many* problems with large-scale automation, because once you develop scripts around a particular user interface, you've essentially tied that script to that version of your application. So this becomes a maintenance problem as you go forward.

    One very useful paradigm we've employed in automation is to use it to *prep* the system under test. Many times its absolutely impossible to create 50,000 users, or 1,000 data elements without using automation in some form. We automate the creation of users, we automate the API calls that put the user into a particular state, then we use our brains to do the more "exotic" manual testing that stems from the more complex system states that we've created. If you are to embark on automating your software, this is a great place to start.

    Hope this helps.

    1. Re:Automation versus Manual Testing by Anonymous Coward · · Score: 0

      A good design for the automated tests is essential. I've investigated automated testing for the product that I work on, but there isn't enough time with the schedule. However, I talked to somebody that is implementing automated tests for another product, and he's picked up a few of my ideas.

      My number one assertion about automated test development is that it is no different than any software development. If it's a good design principle for regular software, it's a good design principle for your test scripts.

      The best example would be the sticky problem of UIs. That always gives automated testing headaches, such that many people give up on automation. The thing is, if their scripts are designed correctly, they can minimize the impact of UI changes. The key is to do the same thing you do with any software; separate UI from the business logic. The code that interfaces with the UI goes in one module. The code that tests the application functionality goes in another. If the UI changes, you change the UI module. If the business logic changes, you change the business logic module.

      That's just one example. There are other ways to make good tests, such as code libraries, data hiding, and good variable names. If it applies to regular software development, it applies to automated test development.

      Don't forget that automated testing isn't going to catch much in comparison to manual tests. A computer isn't as capable of asking "what if" as a person is, isn't very good at recognizing odd states, and is certainly incapable of determining the cause of a defect. No computer can figure out the 50 obscure steps that made your software start shooting naked lawn gnomes out of the floppy drive.

    2. Re:Automation versus Manual Testing by speby · · Score: 1

      At my old company, we used SilkTest, which is a very nice tool. As you said, it does require scripting and it becomes a problem when tying it specific UI elements. Instead, we created an Automation framework that included Access DB's that work with SilkTest to do the testing. It requires a list of 'steps' that are performed, but if an element changes, we only need to go back to the Access DB and update what element it currently is 'pointing' at and then everything reflects it in the future. In addition, we used 'functions' in the Access DB that define a series of steps (like common operations like 'logging as a user X').

      On top of that, we created an additional tool that automated testing across multiple machines distributively. Because out application can run only as a single instance on one machine at a time, testing on multiple machines means SilkTest and the particular tests that need to be run be setup manually on each separate machine. Therefore, if you've got 2,000 tests, you could wait for them all to complete or setup machines yourself to do it. Either way, it can take a long time to test a new build.

      So we developed a server/client system using .NET that would 'schedule' tests to be run. Machine clients (or the machines that would be doing the testing) would be 'registered' with our server. Through the use of a web app, developers/testers (or anyone, actually) could choose from lists of tests to schedule to be run against a specified build. The server would then run those tests using available machines. Then, when those machines were done with their assigned tests, the returned the results to the server which could then be reviewed on the web app. IT ended up being quite slick in the end.

  27. Design it for testability by ortholattice · · Score: 1
    Design into the app, up front, the ability for every function and transaction to be scripted. Have diagnostic hooks that can interrogate that can interrogate and verify the state of the app, verify the integrity of database transactions, etc. Then all of the testing can be automated except for the GUI itself.

    As a bonus you'll end up with a scriptable app that advanced users will love.

    1. Re:Design it for testability by kafka47 · · Score: 1

      When we committed our entire Engineering department to the path of automation, obviously the product itself had to change to accomodate our requirements (we have our own inhouse automation harness). Going forward, we've posted a slogan into the cubicles of every QA person :

      "If you can't automate it... its a bug.

      /kafka

  28. Manual work and automated testing tools by Anonymous Coward · · Score: 3, Informative
    I was part of a team for a major global company that looked into automated testing tools for testing the GUI front end web applications. These were both staff and customer facing applications.

    We evaluated a bunch of tools for testing the front end systems, and after a year long study of what's in the marketplace, we settled on the Mercury Interactive [note: I do not work for them] tools: QuickTest Professional for regression testing, and LoadRunner for stress testing.

    No one product will test both the front and back ends, so you will need to use a mixture of the tools, open source tools, system logs, manual work, and some black magik.

    Our applications are global in scope. We test against Windows clients, mainframes, UNIX boxes and mid-range machines.

    The automated tools are definitely a blessing, but are not an end-all-be-all. Many of the testing tool companies just do not understand "global" enterprises, and working to integrate all the tools amongst all your developers, testers, operation staff, etc can be difficult.

    Getting people on board with the whole idea of automated tools is yet another big challenge. Once you have determined which toolset to use, you have to do a very serious "sell" job on your developers, and most notably, your operations staff, who have "always done their testing using Excel spreadsheets".

    Another big problem is no product out there will test the front and the back end. You will have to purchase tools from more than one vendor to do that. A tool for the backend iSeries, for example, is Original Software's TestBench/400. Again, this does not integrate with Mercury's tools, so manual correlation between the two products will be needed.

    You can only go so far with these tools; they will not help you to determine the "look and feel" across various browsers - that you will have to do yourself.

    QuickTest Professional does have a Terminal Emulator add-in (additional charge), that allows you to automated mouse/keystrokes via Client Access 5250, and other protocols.

    The best way to determine your needs, is call up the big companies (CA, IBM, Mercury) and have them do demos for your staff. Determine your requirements. Setup a global team to evaluate the products. Get demo copies and a technical sales rep to help you evaluate in your environment. Compare all the products, looking at the global capability of the product, as well as support 24/7.

    No tool is perfect, but it is better than manual testing. Once everybody is on board, and has been "sold" on the idea of the tools, you won't know how you lived without them.

    Also, make sure that you have a global tool to help in test management to manage all your requirements and defects and test cases. Make sure it is web-based.

    Expect to spend over a year on this sort of project for a global company. Make sure you document everything, and come up with best practice documentation and workflows.

    Good luck!

  29. Solution by Anonymous Coward · · Score: 1

    We have a special group of people at our company to test our new releases. They're called "users".

    1. Re:Solution by Anonymous Coward · · Score: 0

      We have a special group of people at our company to test our new releases. They're called "users".

      We have those too and they're worthless. The moment you give them anything to test, they break it. Give me some nice predictable reliable testing software any day!

  30. TextTest by Anonymous Coward · · Score: 0

    At our company the developers use TextTest for automatic regression testing. TextTest is developed in house by 2 of our developers, but opensource. More info at http://www.carmen.se/research_development/programm ing.htm and http://sourceforge.net/projects/texttest.

  31. The Microsoft way by GordoSlasher · · Score: 1

    1. Write code
    2. Post to windowsupdate.com
    3. ....
    4. Profit

  32. There is no single answer by Triscuit · · Score: 1

    Hundreds of books and resources have been written/made available on the subject. You won't find the "right" answer for "you" here. No one here knows your environment/situation/funding/etc. I suggest following the leads the folks here are pointing you to and go from there.

    Word of wisdom; don't assume automated testing is the best choice for everything.

  33. Test engineers by Anonymous Coward · · Score: 0

    I am a test engineer at a very large company. I work in the integration and test department. My job is to test the componets of the system working together as a whole ensuring that everything has been implemented in a compatible way. Developers are responsible for unit test so what they give us should function in the way it is suppose to(not that it does).

    First there are the system engineers who spend their times writing specs, thousands of pages of specs detailing in exact detail every part of the system. The developers then take these specs and implement the systems. The system is very large consisting of many software and hardware componets using systems from VAX/VMS mainframes to windows ce clients and diffrent groups responsible for different portions of the system. the developers implement the parts how they interpet the specs and throw out things here and there that arent implementable. then we get the releases and setup everything in the lab completely mirrioring a production enviroment. We also have a tools team which write tools to give us automation, most of these tools are perl modules which us testers can use to write perl scripts to exercise parts of the system. The developers in coordination with our tools and test teams try to give us hooks or api's into the system in order for us to be able to test at all layers of the system, from ui, to service layers, transport layers etc. Most of the time they give us a network socket that we can send XML to that the application will interpet and call the approriate methods. ( I am trying to convince them to use something like SOAP or xml-rpc, but some parts of the system are embedded and http might be too much overhead)

    Us test engineers write test plans based of the specs and go through and make sure every part of the system is to spec and that all parts of the system interpet the spec in the same way preventing incompatabilities.

    The goal is that during development we come up with a complete suite of test cases and perl scripts and other tools for automation which can be used in the maintence portion of the life of the system for regression test.

    You might ask how i like this job, its pretty cool. I just graduated with a B.S. in computer engineering i am making 55k a year and i get to break stuff all day and play with cool stuff. I hope to eventually move to the tools team and then development but for now this is a great way to get familliar with the company and their processes.

  34. Software Testing by pipingguy · · Score: 1


    I suggest you beta test it with the end user and see what they have to say. Remember that THEY will be the ones that will have to use it on a day-to-day basis.

    It seems to be a fait accompli that most businesses will accept IT bullshit, but the engineering companies (umm, people that build bridges and refineries, not engineering wannabees) are a lot less malleable when some computer specialist comes calling.

  35. Why do you think by Black+Noise · · Score: 2, Funny

    Why do you think g0d made interns?

    --

    Cig? No, thank you.
    1. Re:Why do you think by andreyw · · Score: 1

      Is My g0d by any chance related to myg0t?

    2. Re:Why do you think by Anonymous Coward · · Score: 0

      There's not faster way to produce really crappy software...

      And I say this as an intern working for a company that thought that way until very recently. Please. Do not underestimate the value of experienced testers.

  36. Mercury Test Director and Winrunner by hughk · · Score: 1
    I have been using the Mercury Interactive suite of tools in recent times. They work very nicely for applications with a Windows frontend. Unfortunately, TD works using an Active-X front-end and requires IE (the plugin on Mozilla will not work).

    To be honest many of the things they do could easily be done by something else, but QA/Testing may not seem to be the most interesting for open source developers.

    --
    See my journal, I write things there
    1. Re:Mercury Test Director and Winrunner by tabo_peru · · Score: 1

      Agreed, at my previous job at a bank, there was a huge QA department, and we used test director extensively (we even forced Microsoft to use it in an internal project instead of their own equivalent tool).

      I was one of the "winrunner" guys, but I had to use a lot of python and C since winrunner's language (TSL) is incredibly slow. It is a nice tool, what it does is to "simulate" a human operator in the computer terminal. It was specially useful for us since winrunner integrates very well with Extra!, the terminal software for the IBM mainframes. And when dealing with MS-Windows apps, it interacts perfectly with the windows api. This would be impossible to do in Linux, where there would be the need for a different tool for all the graphical toolkits in X (GTK, QT, etc).

      There is also a nice tool: Mercury's LoadRunner. It "captures" the network traffic in a transaction and lets you modify it, so you can simulate 800 different users making requests to your server.

      You can find more info about QA in http://www.qaforums.com/

    2. Re:Mercury Test Director and Winrunner by hughk · · Score: 1
      We have Loadrunner as well. At this stage, it is mostly just TD and WinRunner for us. I agree that WinRunner can be problematic which is why we have some bits that we can script. On a previous application, all client actions were available by an API to which we had a TCL front end.

      What annoyed me was that TD is good but it has many failings. It would be nice to have an opensource equivalent. I find their database model somewhat restrictive (even if you do your own selects).

      --
      See my journal, I write things there
  37. Testing? by melonman · · Score: 1
    1. Finish last line of code 30 minutes before deadline
    2. Set email autoresponder to pick a helpdesk response from:
      • You probably have a virus, please reinstall Windows
      • This is a known problem with the latest Windows Update, please reinstall Windows
      • The software will only crash if you have been downloading porn on work time, please leave your extension number if you wish us to investigate your hard disc in detail

    3. Send memo to line manager explaining that there is currently no technical documentation for the project, but that this shouldn't be a problem as long as the current team remains intact. Copy to personnel
    4. Book vacation on Lastminute.com
    --
    Virtually serving coffee
  38. It starts with design by meburke · · Score: 1

    I've been programming since 1965, when I started doing cryptology in assembly language (AUTOCODER) on IBM 1401's. EACH segment, module or object needs to be tested for internal consistency and a table of results should be generated by each programmer before delivering the responsible section. Then, as has been mentioned, a separate testing team should test at each stage of integration before delivering the system for customer/client testing.

    I've struggled with a methodology for development of Object-Oriented systems. When I first started to learn to program we planned the system first and developed flowcharts before we actually did any code. If the design was right, coding from the flowchart was very easy, and testing was pretty easy also. I have been struggling, trying to get the same results from UML, and finally found a book called, "Tried and True Object-Oriented Development: Practical approaches with UML" by Aalto, et al, and this is how I choose to develop software today. (I do more formal use-case diagrams, and I'm not above letting Rose or Visio generate the first couple of code iterations.) Their method, developed at NOKIA, is a logical intgration of development and testing.

    Mike

    --
    "The mind works quicker than you think!"
  39. OpenSTA by alanw · · Score: 1
    Shortly before it went tits-up in the aftermath of Y2K (lots of testing in 1999, not so much afterwards), and the bursting of the Dot.Com bubble, one of my previous employers decided to release the software testing application they had developed under the GPL. It's called OpenSTA and it's available at SourceForge.

    It's designed to stress test web pages, and analyse the load on web servers, database servers and operating systems.

    There is also a new company - Cyrano that has risen from the ashes of the old one, and provides many other testing tools, including regression testing.

  40. I Wonder if Anybody Does It by Lucas+Membrane · · Score: 1
    I've had some exposure lately to something where automated testing is so far from imaginable. I wonder if and how anyone could test a system like this automatically:
    • Inputs Come From: web browser, green screens via curses wrapped by proprietary mumbo, EDI, phone system, email, scanners, tablets to get handwritten input, etc
    • Outputs go to: web browser, green screens via curses wrapped by proprietary mumbo, EDI, email, phone system, proprietary 3rd-party document storage
    • Database: Mostly proprietary storage in oddball proprietary data files, some relational DB's
    • Age of system: Almost 30 years
    • Number of functions: Enterprise-wide support of enterprises up to about 1000 users, say 6 departments and six major subsystems
    • Number of screens: hundreds of major and thousands of minor
    • System architecture: Pathological. More global connections than Mullah Omar. Fix something here, and something way over there breaks.
    • Lines of code: Unknown. Maybe 5 million.
    • Programming languages: Multiple

    What's the silver bullet for such?

    1. Re:I Wonder if Anybody Does It by hey · · Score: 1

      You need to slowly begin rewriting it into something more sane. Like Java.

    2. Re:I Wonder if Anybody Does It by triso · · Score: 1
      What's the silver bullet for such?
      What is gradual replacement of the most fragile subsystems, Alex?

      I was trying to guess what this system is and concluded that must be FedEx's, or some other courier company's, package tracking system. Am I even close?

    3. Re:I Wonder if Anybody Does It by Anonymous Coward · · Score: 0

      There isn't. The closest thing to a silver bullet is mathematical proof of correctness. It's still a new concept, and even when it's developed enough to be a common discipline, it will only work in certain situations.

      The other poster is correct. Your best bet to save this system is to rebuild it in a sane way.

    4. Re:I Wonder if Anybody Does It by Lucas+Membrane · · Score: 1
      System is installed at thousands of customer locations. Several attempts to rewrite have had less than minor success.

      Customers pay for maintenance, support, and upgrades, but they are not forced to upgrade and can still get support if they don't upgrade. Thus, small changes are all that most custmers will accept, not anything that requires a huge data conversion or re-training project. Furthermore, because of the limited availability of expertise for such customer support, if a re-written version requiring data conversion or retraining appeared magically next Monday morning, the soonest it could possibly be installed at all of the thousands of customer locations would be around the end of the year, the year being 2015! There is no expeditious way out of the need to maintain the system and test changes to it.

      The customers are very happy with the way the system does what it does, but new requirements keep coming along and the maintenance process is somewhat iffy and inefficient, and the difficulties of testing are the number one reason why major improvements are rarely made. A maigic bullet solution to testing and regression testing is just about prerequisite to any big steps toward modernizing the system.

      What are the best test tools for such a kluge?

    5. Re:I Wonder if Anybody Does It by LaCosaNostradamus · · Score: 1

      It sounds like the best tool for this is actually marketing. Identify a good subset of your customers and incent them to become guinea pigs for a significantly revised system. With sufficient incentives, it may be possible to use your customer base as a test bed, while making the sensible changes you wanted to make all along. Once all that pain has passed, you can promote the new system as a rollout on the rest of the customer base.

      Well, it's just a thought. Good luck.

      --
      [You have a stable society when some nut guns down a schoolyard and the law doesn't change.]
  41. use Perl ;) by Anonymous Coward · · Score: 0

    I've tried WR, Silk, and just about every automated tool available. The biggest drawbacks were the price and learning curve. In the end, I developed an app (completly in Perl) that tested our product (which consisted of a web portal and windows app on a multi-teired setup).

    I started with a web frontend where test could be launched and results could be kept (using mysql). The client machine (which runs the test) would poll the mysql db to see if any tests are available. The tests themselves were also in Perl. I used the following perl modules to accomplish testing:

    Win32::GuiTest (for windows testing)
    Win32::IE::Mechanize (testing with IE)

    I used a host of other modules, but those are the main ones. Since Perl is a pretty easy language to pick up, the entire QA staff began writting tests into the framework almost immediatly.

    The only area that I cant test with this Perl based framework is Java apps/servelets (yet).

    Moral of the story: Just roll your own. :)

  42. My 0.02 VEB by Hey_Bliss · · Score: 1

    I do not think a single approach is fit for every aspect of software testing, as you well say one can consider at least user interface and business logic to be two separate independent items (and it is a good programming technique to keep them as separate as possible as well.) anyhow, I certainly beleive programming bussines logic is better tested via automated software, since the rules for it's input and responses are well defined mathematical and logical rules that can be very thoroughly and quickly analized via software catching errors in the infinitessimal that the human eye would just not catch at first glance.

    Currently I do not use any pre-made testing software for my development projects and I would do well to find one, what I do is to give the bussiness rules and the api or ways to call my program to a friend programmer to code a quick test program to try different valid and invalid values plus border values (the frontier between valid and invalid) and then check if the result is correct.
    I give this to an indipendant programer because if any flawed logic on my part (other than typing bugs) causes erroneous data it is very possible I'll apply the same flawed logic to test the code and thus consider a really invalid response as a valid one, using a different codder to come with the test code should apply some safeguard to this situation.

    User interfaces themselves are another totally different aspect.. there is a data correctness aspect which can be tested automatically or by a codder who understands the system in which you'd basically test if the data entered on the UI is passed correctly to the system, and if the data returned by the system is displayed correctly by the UI. But the UI also has very different aspects which are ergonomics, and ergonomics can only be tested by humans, and by the final users of the system per se. As programmers we do not always create software for programmers (in fact less than 5% of my projects are ever intended to be used by programmers), for the rest we create software for administrators, HR, ITs, Engineers, Managers, Cashiers, etc etc etc.. the work flow and tought process of different professions are different as well, also as non experts on the area of application there are details either small or huge we can miss, the order of work might differ from what is needed, and also responses could come in places where they are not usefull. For that it is always better to have a small group of end users, prefferably ones you can trust in (beleive me otherwise it can QUICKLY turn into hell for you and them) to test the system and come back to you with any suggerences and errors they find.. also more people on the system produce a higer chance of finding mistakes (misplaced items, misspellings, etc), than a single person would miss (man hours count a lot for a large system testing.).

  43. It's simple by sw155kn1f3 · · Score: 1

    Once you separate the business logic and other standalone components - just do unit testing on them.
    Your UI/network code should not contain wiring logic spaghetti! Separate into validation etc logic that also can be unit-tested. If a button handler has 50 lines of code... - you have much more problems in the first place, solve them first.

    --
    - Arwen, I'm your father, Agent Smith.
    - Well, you're just Smith, but my father is Aerosmith!
    1. Re:It's simple by Anonymous Coward · · Score: 0

      That helps but it's not complete. Unit testing shows that each module works individually in the cases that you've thought of. Do your modules have side effects? Is unit testing all you've done? Are you the only one to look at the tests you wrote? If you say yes to all of these questions (or even any two of them), then kiss your butt goodbye because your software's about to crash and burn.

  44. Integrated Testing by vingufta · · Score: 2, Insightful
    I work for a mid sized systems company with about 2K employees and we've struggled with testing our systems. There are a few reasons for this:
    • The system has grown overly complicated over the years with tens of subsystems. There is some notion of ownership of the individual subsystems in both dev and qa but no such thing exists when it comes to interoperability of these subsystems. Dev engineers are free to make changes to any subsystem they want to while QA does not feel that they should test anything outside their subsystem. What ends up happening is that we do rigorous subsystem testing but very little inter-operability testing which leads to a lot of issues in the field since those represent more realistic customer scenarios.
    • As a consequence, management teams have been pushing the dev engineers to write test plans and automated tests for the functionality their working on since they believe that dev can do a better job at testing. This not only overloads the dev engineer but also decreases the testing quality since I belive that developers cannot be solely held responsible for testing their own code. They are more likely to work under a lot of assumptions and would overlook a lot of bugs. Secondly they would not think of the interactions between various subsystems since they'll be concentrating on their own code.
    • Finally, it is very important that there are standard QA practices in a company. We've been lacking this since each subsystem started their QA efforts individually and ended up developing tools and methods that did not fit with each other. We do have a common reporting method on number of tests conducted vs planned but the quality of tests various so significantly that those numbers make no sense.

    I would like to know how people in other systems companies divide up testing work between Dev and QA. I would also be interested in learning more about the kind of tools people use to develop and track QA.

  45. Use a QA team and test-driven development by William+Tanksley · · Score: 4, Interesting

    You need two things: first, people who are dedicated to testing and aren't concerned merely to uphold their pride in the code they wrote (this is a long way to say that you need a dedicated testing team that doesn't report to the coding team); and second, testable code. The best way to get the second needed item, in my experience, is to have your developers write their automated unit tests BEFORE they write the unit they're developing.

    This is generally called "test-first" development. If you follow it, you'll find some nice characteristics:

    1. Each unit will be easily testable.
    2. Each unit will be coherent, since it's easier to test something that only does one thing.
    3. Units will have light coupling, since it's easier to express a test for something that depends only lightly on everything else.
    4. User interface layers will be thin, since it's hard to automatically test a UI.
    5. Programmers will tend to enjoy writing tests a bit more, since the tests now tell them when they're done with their code, rather than merely telling them that their code is still wrong.

    You can go a step further than this, and in addition to writing your tests before you write you code, you can even write your tests as you write your design. If you do this, your design will mutate to meet the needs of testing, which means all of the above advantages will apply to your large-scale design as well as your small-scale units. But in order to do this you have to be willing and able to code while you're designing, and many developers seem unwilling to combine the two activities in spite of the advantages.

    -Billy

  46. SilkTest by siberian · · Score: 1, Informative

    We use SilkTest for automated testing as well as monitoring. Our QA guys love it and it free's them up from doing regular system testing to focus on devising new and devise tests to confound the engineering teams!

    Downside? Its Windows stuff AND its hellaciously expensive..

    1. Re:SilkTest by _|()|\| · · Score: 1
      I've used SilkTest for the last five years, and I'm working on getting rid of it. I have not been able to develop an effective strategy for automated testing of GUIs, and it is not ideal for the rest of the automation I do (mostly CHUIs and APIs).

      Good:

      • the 4Test scripting language
      • easy to call out to some Windows API functions

      Mixed:

      • the outline-based test selection (I'd rather query a database)
      • the results view (I'd really rather put the results in a database)

      Bad:

      • the cost (~$5,000 / seat)
      • the maintenance (~$1,000 / year)
      • the licensing scheme (node-locked license server)
      • the support (before and after they sent it to Ireland)
      • Windows only
  47. Yet Another Entry From The Peanut Gallery by psykotedy · · Score: 1

    Well, I have to say that everything here seems to make sense. Personally, I use a not-quite-purist version of extreme programming, in which I write unit tests like a madman. I also take the approach that everything I write is an API that will be used by others (even if it won't because I know I'm just stupid enough to forget how I coded something months ago, and introduce some misuse of it). If you make sure all of your pieces are air-tight, then you should be okay. Then integration testing is used to test how well the little blocks play with one another.

    As far as end-to-end testing, we have a testing staff that takes care of that. We perform load testing that is derived from actual user usage (as captured in the access log files), but that's about it. If we wanted to be really thorough, we could run light versions of load tests in the integration environment to simulate user behavior and see if that breaks things, but we don't currently.

  48. Test Methodology by DuhFace · · Score: 1

    No matter what test tools, methodologies or approaches you take, testing should always about these things: An independent look at the product (not performed by the developer). A spec with discrete functions defined. A plan that explains what you need to start testing, what you are going to test and how you will report what you find. A documented method to assign severities to bugs. A database to store bug reports in. A set of test cases that focus on testing discrete functions. AND most importantly - a commitment on the part of the project management to review the bug list regularly and assign issues back to developers. Lot's of testing gets done and then results are ignored until someone yells about a particular problem. As for automation, it's great, but it will always be behind the current development curve, too limited in scope and dependent on the person who wrote it. The tests that are automated should just be there to prove that stuff that is already working didn't get broken in the last iteration. I also think it's best to have as many users as possible interact with the product as early as possible. You'll learn so much more from watching them try to use the thing than you can any other way. Plus, the fear that the product is going to actually be used by customers is a great motivator for the team to focus on what matters - shipping a satisfying product.

  49. jameleon by primus_sucks · · Score: 1

    We've had good luck with Jameleon. We use JUnit for the low level stuff and Jameleon to test the web front end. Of course, it's probably a good idea to use human testers before you go to production, but automated testing can cut down on the bugs that make it to the human testers.

  50. Pragmatic Programmer series by chiph · · Score: 1

    You need to buy a copy of the Pragmatic Programmer's starter kit

    The third book in the series is about project automation, where they teach you how to repeat in a controlled manner all the stuff you learned in the first two books. The basics:

    1) Write unit tests before writing your methods
    2) Your unit tests should follow the inheritance tree of the classes under test to avoid duplicate test code.
    3) Write a vertical "slice" of your application first (all the layers, none of the functionality). This will prove out communications and give the QA people something to work with while you flesh out the app.
    4) Build & unit test nightly. Any build or unit-test errors need to be fixed the next day, and no later.
    5) Release to QA as often as things get semi-stable, and when they have time to test.
    6) Try not to ship with any known bugs. How do you know if you've got bugs? Your unit tests, integration tests, QA tools, and end-users tell you via a bug-tracking tool like BugZilla or FogBugz

    Do we do all this at my current employer? No. But we're working towards it.

    Chip H.

  51. Last few companies I worked for by Orion+Blastar · · Score: 1

    the users did the QA testing, just like Microsoft has the users do. We had QA people, but I am not sure what exactly they were doing becuase many flaws and mistakes got past them. Just not from my programs, but ones my coworkers wrote. I did my own QA testing, and took longer to develop code, hence I was let go.

    --
    Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  52. Testing by Jerf · · Score: 4, Interesting
    Lemma One: It is impossible to comprehensively test the entire system manually.

    Proof: For any significantly sized system, take a look at all the independen axes it has. For instance: The set of actions the user can take, the types of nouns the user can manipulate, the types of permissions the user can have, the number of environments the user may be in, etc. Even for a really simple program, that is typically at least 5 actions, 20 nouns, (lets estimate a minimal) 3 permission sets (no perm for the data, read only, read & write), and well in excess of 5 different environments (you need only count relevant differences, but this includes missing library A, missing library B, etc.). Even for this simple, simple program, that's 5*20*3*5, which is 1,500 scenarios, and yes, you can never be sure that precisely one of those will fail in a bad way.

    Even at one minute a test, that's 25 hours, which is most of a person-week.

    Thus, if you tested a enterprise class system for three days, you did little more than scratch the surface. Now, the "light at the end of the tunnel" is that most systems are not used equally across all of their theoretical capabilities, so you may well have gotten 90%+ of the use, but for the system itself, a vanishing fraction of the use cases. Nevertheless, as the system grows, it rapidly becomes harder to test even 90%.

    (The most common error here is probably missing an environment change, since almost by definition you tested with only one environment.)

    Bear in mind that such testing is still useful, as a final sanity check, but it is not sufficient. (I've seen a couple of comments that say part of the value of such testing is getting usability feedback; that really ought to be a seperate case, both because the tests you ought to design for usability are seperate, and because once someone has fuctionally tested the system they have become spoiled with pre-conceived notions, but that is better than nothing.)

    How do you attack this problem? (Bear in mind almost nobody is doing this right today.)
    1. Design for testability, generally via Unit Tests. There are architectures that make such testing easy, and some that make it impossible. It takes experience to know which is which. Generally, nearly everything can be tested, with the possible exception of GUIs, which are actually provide a great example of my "architecture" point.

      Why can't you test GUI's? In my experience, it boils down to two major failings shared by nearly all toolkits:

      1. You can not insert an event, such as "pressing the letter X", into the toolkit programmatically, and have it behave exactly as it would if the user did it. (Of the two, this is the more importent.)
      2. You can not drive the GUI programmatically without its event loop running, which is what you really want for testing. (You need to call the event engine as needed to process your inserted events but you want your code to be in control, not the GUI framework.) One notable counterexample here is Tk, which at least in the guise of Python/Tk I've gotten to work for testing without the event loop running, which has been great. (This could be hacked around with some clever threading work, but without the first condition isn't much worth it.)

      The GUIs have chosen an architecture that is not conducive to testing; they require their own loop to be running, they don't allow you to drive them programmatically, they are designed for use, not testing. When you find a GUI that has an architecture at least partially conducive to testing, suddenly, lo, you can do some automated tests.

      And in my case, I am talking serious testing that concerns things central to the use of my program. I counted 112 distinct programmatic paths that can be taken when the user presses the "down" key in my outliner. I was able to write a relatively concise test to cover all cases. Yes, code I thought was pretty good turned out to fail two specific cases (

  53. Testing by Merdalors · · Score: 1
    You need full-time testers. In a small company, they can also double as support staff.

    It never ceases to amaze me what strange and unexpected scenarios a tester can conjure, often exposing flaws and weaknesses in the code. A good tester can intercept many bugs before the product goes out the door. Congratulate and reward them.

    Summer students also bring a different perspective, and can evince whole new categories of problems with the code.

    We have found that automated testing tools require the skills (and salary) of a programmer, so what's the point? Pay the programmer to program, and hire more testers.

    --
    Slashdot entertains. Windows pays the mortgage.
  54. get only really smart and really dumb testers.. by xot · · Score: 1

    In our 'enterprise environment' type company(3000+ users) we only do manual testing.We gather up some real techies and some real non tech people.Its amazing how much better the non techs are at testing and letting you know of various bugs.
    They will let you know flaws that you never imagined were possible!All in all nothing beats manual testing.We dont have any dedicated testing staff so we just gather up a few end users.

    --
    Lord of the Binges.
  55. Huge framework developed inhouse by Anonymous Coward · · Score: 0

    The company I work at developed their own framework for the software product. There are about 100 developers on this product and 20 QA. The product has VBA macros built in, so all the testing is done by executing these macros. But there are thousands of different auto tests.

    A significant portion of the testing is completely automatic -- every build goes through a smoke and regression test as it comes through the build chain. There's no user interaction at all on those. The smoke test is about 45 minutes -- smoke test failures are very serious, and everyone in QA gets email when they fail. The regression tests take several hours, and failures in those are less serious but still important.

    Each QA member also manually starts certain automated tests when the product is nearing release. They all know how to start the tester and choose files or scripts to test. Output from these tests is automatically put on a database and accessible from the intranet.

    I just started working there a few months ago -- I have been continually impressed with the quality of the automated testing. The problem is that this testing does not cover significant portions of the product, since the only tests that can be run are ones that are executable through VBA. So UI performance is not easily automated. I did some research but I wasn't able to find a product that did a decent job UI testing -- the product is extremely complex and the stuff I looked at was all inadequate.

  56. Check out FIT by Anonymous Coward · · Score: 0


    FIT - Framework for Integration Test, is a cool way of wrapping your app so that people can test it more easily. It's open source, and very powerful.

    http://fit.c2.com

  57. the UI is a pain by bob_jenkins · · Score: 1

    Anything you can test with a command line, do. Text in, text out, use 'diff result.log official.log' to find if you broke anything. Anything that requires a mouse, though, I hear there's products for that but I've never used them.

    I have a pet project (jenny) that generates testcases for cross-functional testing, where the number of testcases grows with the log of the number of interacting features rather than exponentially. It often allows you to do a couple dozen testcases instead of thousands, and it lets you cover more interactions too. It's of no use for pull-down menu interfaces, though, where the goal is pretty much to test every node in the tree and there's no interactions between nodes.

    1. Re:the UI is a pain by HermanAB · · Score: 1

      Expect, autoexpect, Tcl/TK and Perl. With that combination you can even test GUIs, mouse and touch screen applications, but yes, it is a pain in the derrier...

      --
      Oh well, what the hell...
  58. Design your code to be automatically tested by The+Pim · · Score: 1
    All of it. My beef with the unit testing craze is the suggestion that only individual "units" (whatever the hell a unit is) need to be tested automatically. If you design your application well, you should be able to simulate everything up to the multi-step transactions a user would go through. Instead of your code being 75% testable, make it 95% testable. You'll always need people to test that last bit that can't be automated (since the only true test is end-to-end), but the more bugs you can find before it gets to them, the better (cheaper, faster).

    When it comes down to human testing, I'd say hire someone to be the "user from hell". Even if your automatic testing finds all the real bugs, this user should be able to find unanticipated use cases, annoying interfaces, performance problems, etc.

    --

    The evaluation of an action as 'practical' . . . depends on what it is that one wishes to practice.
  59. It's an investment by Catamaran · · Score: 1
    Creating the infrastructure for automated testing is a big investment, one that generally only pays off in the long run. If your company decides to take the plunge here are a couple of suggestions:

    Don't let developers check in code until it has passed the entire regression suite. Otherwise, SQA (the test maintainers) will be in a constant catch-up mode and ultimately the disconnect will grow until the whole test suite is abandoned.

    Make tests easy to create. This is harder than it sounds. Tools that simply record user inputs and take screenshots are way too brittle. You need hooks at the functional level so that you can drive and monitor the application.

    Prefer standardized languages and open-source tools to homegrown stuff. Much easier to maintain, especially across a large organization.

    --
    Test 1 2 3 4
  60. Our recipe by xant · · Score: 1
    1. A dedicated QA staff. You should have as many testers as you have developers.
    2. Tools for the QA staff to create their own automation. They don't like doing manual testing much, either, so they'll have incentive to use the tools. :-) I'll talk about the tools we use in a bit.
    3. Training for the QA staff on the tools. Hire QA people capable of at least a little shell programming. And the tools they use should be not much harder than writing shell scripts.
    4. A good SCM (source code management) system that provides atomic commits, so that when you fix a bug, you can tell your testers exactly what revision number it's fixed in, and they can get exactly that revision verify it in the same system you had when you fixed it.
    5. A bug tracker. It doesn't have to integrate with the SCM, but if it doesn't, you should make it a hard policy that your commit log messages should say what bug number they are a fix for, and when you resolve a bug, you must say what revision the fix went into. I can't even estimate how much time this policy saves.
    6. Automated rebuilds of every revision of the software. Spend a lot of time on this, it's key. It lets your testers test things the minute you fix them. That means, if you failed to fix it correctly, you'll find out SOON while the fix is still fresh in your mind, and you'll save even more time by not having to get back into the mindset of that bug. You will need special software to do it, so read on.
    So here's how those break down:
    1. For us, our project has had 1-2 developers working full time (me, plus one additional deveoper at various times). We've also had 1-2 testers working full time. That sounds like a small project, but after two years of dev it is a lot of code, and all that code needs testing. The fulltime test staff available right from the start was absolutely not money wasted.
    2. The development is done in Python, with Twisted, and so we used a combination of unit tests written by the developers and black box tests written by the testers. Because our app is primarily web, I developed my own web test system (having found no others that were suitable for use by non-programmers). This system is PBP, which is a shell-like scriptable web browser.
    3. Our main tester had a little bit of C in school (she actually had forgotten most of it ;-) and a little bit of unix command line experience. This was more than enough to be able to design and build tests with PBP. Then I spent about one full day showing her how to use it and brainstorming testmaking strategies with her.
    4. Subversion.
    5. We've been successful with Bugzilla. If I had to start over, I probably would have used Trac, with which I've had good experiences on other projects.
    6. I built a completely automatic build system using Buildbot to trigger the builds after each commit and A-A-P to script the build process.
    --
    It's rare that you're presented with a knob whose only two positions are Make History and Flee Your Glorious Destiny.
  61. MetaTest by bigattichouse · · Score: 1

    I've been working on a simple idea for a while, a programming language that *provides* the testing capability, implementing the testing story. Its not a horribly difficult idea, just something I've been playing with. My goal is create a test language you can then compile against various languages to see if the implementation in any given language behaves in the same way.. also to make unit tests a little easier to read. You can read about it on the project blog: http://www.bigattichouse.com/thoughtbrew.php?BREWI D=METATEST

    --
    meh
  62. Trac correct URL by xant · · Score: 1

    The correct URL for Trac is http://www.edgewall.com/products/trac/ sorry.

    --
    It's rare that you're presented with a knob whose only two positions are Make History and Flee Your Glorious Destiny.
  63. That's a bunch of crap by melted · · Score: 1

    While it is true that companies start to realize that automation can help them with the quality of their software, companies that lay off testers or don't perform manual ad-hoc testing on top of what's automated are most likely poorly managed.

    The thing is, once you automate something your automation will walk the same code path that was fixed after you logged your bugs after you ran this test case first time. It is very likely that the code paths that you're testing will never be touched again and therefore will never be broken.

    There is a possibility that interaction of the API that you've tested with other APIs will cause it to fail, though, and automation will catch that (if it's good) so any time spent on automation is time well spent.

    My point here is, there MUST be ad-hoc testing performed on the product, and the only purpose of automation is to free up testers' time to do more ad-hoc stuff, or automate large matrices of testing that would be prohibitively expensive to test manually more than once. Anyone who relies completely on automation is NOT TESTING THEIR PRODUCT WELL!

    To add to that, any sufficiently sophisticated automation infrastructure requires serious maintenance. It is not uncommon to have a dozen test case failures every time you run it, and half of the time these failures are test case's fault.

    So it's not like you can fire everyone and have an untrained monkey do everything else. Anyone who thinks like this is a fucking moron.

  64. Large scale automation is a very complex project by qaguru · · Score: 1

    Here are some lessons learned the had way in my 10+ years of automated testing experience: 1. Large scale automation is a very complex project. Think of it not as a testing activity, but as a full scale development project. Start with setting goals, then gather the requirements, and continue as you are writting product. 2. Get at least one person on the team which has participated in large test automation project. There are many common mistakes you can avoid. 3. Make an extensive analisys what you need to test. Some areas are very suitable for automation, others does not make it cost effective. 4. Always think of reducing the maintanance tasks. maintanance is the killer of the automated test. A good framework design will save you thousands of hours of work. One of the most commong approaches is to have separate interface components, so most changes in the UI will leave your tests unchanged. 5. Select the right tool for the job - there are hundreds of them on the market. Check the license price, the power of the scripting language, how it supports our interfaces, can it be integrated with other products. I especially like TestComplete, because is cheap and powerfull. But time for training is also an expences, and many companies select the most popular products there (from Mercury, Rational and Segue). 6. Participate in mailing lists, newsgroups, etc. It gives you the ability to get fast advise from some of the best people in this area. And last, IMHO, the test automation, if done right, is always a winning strategy. But it is not a silver bullet.

  65. follow up by nailbite · · Score: 2, Informative

    To clarify: The dev team only tests on the code level (memory leaks, code fault tolerance, etc.). We have a separate QA team that performs customer-level testing. Some of them are technically inclined, some are not. All of them, however, understand the mechanisms of the system on a user level. Currently, they manually test each operation of each component in the system using test procedure lists and guidelines. I was thinking if there was anyway to, even partially, automate their processes using software. I believe that in any job/work there must be a fun aspect, and lately I've seen that they have lost that spark. Perhaps by introducing a new toy (software) it would both help their productivity and ignite their spirits. Thus the reason for the post. I would like to thank everyone who replied.

  66. the secret ... by mqx · · Score: 1

    ... is to treat the test framework/application as a primary software artifact itself. There's nothing that says that automated test code/etc has to be nasty or a hack - it can be just as interesting as operating code.

    Example from older project: developed module/stress/unit test frameworks for my components, including self-built re-usable testing classes and frameworks: allowed me to easily create (in the unit tests) instantiations of the entire component, either with dummy test data, or with component parts replaced by stimuli/receptor/emulator/test code.

    Not only that, entire set of test code (larger than the code in the actual module ...) ran automated on daily builds.

    The proof of the value of this:

    1. components were near stress bullet-proof;
    2. faults from the field could be easily reproduced and proven by building a new test case/verify into the framework;
    3. occasional upgrades of base system or third-party libraries or O/S or compiler caused tests to fail on the daily build because of some now-invalidated assumption -- better to find this out on the daily build than further down in QA where it gates the release, or even worse, on the customer site.

  67. automated testing by dannannan · · Score: 2, Informative

    Seems to me that there are really a few levels of automated testing: there's automatically generating and running test cases, and there's having the ability to automatically repeat test cases you've manually created and run in the past.

    Just being able to repeat manually created test cases is a big help. It sounds really simple -- create a harness that you can plug test cases into and start writing test cases -- but scheduling and coordinating that sort of thing starts to get really difficult on large projects.

    Where I work (a certain large software company) we have about as many full-time testers as we have developers, and it takes work from all of us to keep the test framework up to date and running. Our testers actually write a lot of code as part of their job; their code isn't shipped as part of the product -- it's used to test it. They write test cases and create infrastructure for running test cases. The developers also create test cases that can plug into the test harnesses. It actually took a lot of work to get all of that running smoothly for a project that is large and has a lot of people checking in every day.

    Before every checkin we can submit our change to a server farm that runs a smoke build (to verify that things build) and also runs a suite of basic functionality tests (written by developers) to make sure nothing is outright broken by the checkin. It really goes a long way toward ensuring that you have a good build almost every day.

    We also run separate automated test passes that take a lot longer but are much more thorough. They include a lot of manually developed cases with some written according to a plan and others arising as specific regression tests. (Having a big regression suite is very important when you're supporting/maintaining previous versions of your software with service packs and hotfixes!)

    Automated deployment is also a biggie! Since the software product we work on is intended to be deployed as a distributed system, we also do a lot of testing with multiple nodes deployed. My group spent a lot of man-hours preparing a system than can automatically wipe and install multi-server topologies and then run test cases across them. So basically you get two things: hands-free setup of all installation and config for a large number of machines, and test case coordination between nodes (e.g. something runs on node A, then waits for node B to do something, then checks a result on node C). If you need to verify a fix that only affects scenarios with at least 5 servers involved it can really take a lot of time if you have to set up and test the scenario manually! (Also it is a pity that some software can get complicated enough that new problems will only appear after you have at least a certain number of nodes, but that is another story.)

    As far as automatic test case generation goes, we don't have a lot of that. It has its place, but I have to agree with something another poster stated which is that as long as there is a human user involved you need a human tester at the other end. (There's no one-size-fits-all tool that you can run against your software that will magically return "true" iff it is flawless.)

    One thing that automatic tools are good at is checking fundamental things at code level, and we do use some tools that do that. One of our tools instruments our binaries by marking every code block so that when you run it you can get "code coverage" output. This helps you see a couple of things: you can get a feel for the complexity of your code (you'll see the number of blocks and arcs for each function or group of functions), and you can see which code gets hit and how many times when you run a particular test case. This allows you to do a few things -- target complex areas of code to try and make simplifications, and target potential dead code areas for removal. This recognizes a couple of fundamental rules of software: complicated code is generally more bug-prone, and dead code is an accident waiting to happen. In the spirit of using automatic tools, this information by itself doesn't mean anything -- it's only good if it's used as feedback to the development process.

    D

  68. The Mythical Man-Month by DragonHawk · · Score: 4, Insightful

    When Fred Brooks published his book, The Mythical Man-Month, one of the things he noted was that testing should acount for *more then half* of the budget of a software project. Actual design and coding should be the minority. This is because software is complex, inter-related, easy to do wrong, and not obvious when it is done wrong.

    Of course, nobody wants to do that, because it's expensive and/or boring. Thus we have the state of software today. Just like we had the state of software back in 1956 when he wrote the book.

    It never ceases to amaze me that we're still making the same exact mistakes, 50 years later. If you work in software engineering, and you haven't read The Mythical Man-Month, you *need* to. Period. Go do it right now, before you write another line of code.

    --

    dragonhawk@iname.microsoft.com
    I do not like Microsoft. Remove them from my email address.
    1. Re:The Mythical Man-Month by SoSueMe · · Score: 2, Insightful

      I agree with most of what you say, except for the "boring" part. The Mythical Man month is still relevant today.
      Just as there is a creative rush in building a working software system out of the ether, there is an equal rush and creative element is software testing.

      Testers and developers think differently but have the same purpose in mind. At the end of the day, both want the best possible product to be delivered.

      I suggest signing up to StickyMinds as a good place to start.

    2. Re:The Mythical Man-Month by cetialphav · · Score: 2, Insightful

      Based on my experience, I have to agree with this. I think the proportion has declined a bit with time, but it is still close to half the time.

      Of course, this usually isn't on the schedule. Management's view is that if you spent 6 weeks testing and few bugs were found, then the time was wasted and the product could have shipped out earlier.

      But regardless of the schedule, the test time that Brooks states will get spent. Often that time is spent on repeated testing as a result of bug fixes. Last minute bugs end up causing schedule slips and those slips are basically all testing, retesting, and debugging. The sooner tests are done, the sooner and cheaper bugs can be found and fixed.

      But as you said we still ignore this (or rather we cross our fingers and hope it won't happen to us this time). Just a couple months ago on my current project, my boss told me that it had been decided that "we didn't have time for integration testing".

    3. Re:The Mythical Man-Month by Anonymous Coward · · Score: 0

      Just like we had the state of software back in 1956 when he wrote the book.

      It was actually 1975. But your point still holds true.

  69. Extreme Programming by malcomm77 · · Score: 1
    XP http://www.extremeprogramming.org/ has a lot of relevance here. A lot of the concepts put forth in XP have direct impact on your choices for how QA works. As is the XP way, you don't have to do the whole package, but here's some things that I've found very useful:

    1. Strict adherence to the test first methodology (JUnit). It isn't enough to just write test cases, without nightly (or frequent) builds JUnits loose a lot of their effectiveness - especially in large groups. In addition, having regular code reviews to make sure people aren't just blowing smoke is essential.

    2. Early and often QA cycles. Not only will the development team love this, so will your product owners. Here's a good starter for the http://www.extremeprogramming.org/rules/releaseoft en.html release often concept. Doing this will make your QA cycles much more effective and manageable.

    3. Don't over automate. Automation can be a very effective tool; however, there must balance.

    As for tools (sorry pretty Java centric here), I'd suggest starting with:
    - http://htmlunit.sourceforge.net/
    - http://jakarta.apache.org/cactus
    - http://httpunit.sourceforge.net/

  70. This is ONtopic, squared by mangu · · Score: 0, Offtopic

    The article is about software testing, and the parent post complained that slashcode isn't tested enough. I second that. Why do we keep getting those 503 errors? Why does the lameness filter forbid posting a short snippet of Perl code to illustrate a point? If slashdot did a halfway decent testing of their code we wouldn't have to live with petty annoyances like those.

    1. Re:This is ONtopic, squared by SoSueMe · · Score: 1, Offtopic

      Slashdot is tested every day.
      Bugs are reported publicly, as evidenced by your post.
      The only difference between this and what I do for a living (enterprise web application testing) is that the developers don't listen or don't know how to fix things.

      WAIT A MINUTE: There is NO difference.

  71. Our testing department: by Anonymous Coward · · Score: 0

    Customers. We just ship it and see what happens.

  72. A few useful tools by BeatdownGeek · · Score: 1
    I've been interning in the QA department for a Software company for a while now. Since I'm really going to school for Software Engineering, manual testing gets boring very fast.

    Luckily, my boss has tasked me with looking for better automating solutions. The product being a J2EE web app, I've found a few useful tools from Apache's Jakarta project:

    • Cactus (functional verification of J2EE components)
    • JMeter (for performance- based evaluation, more from an HTTP front-end, but you can write Java plugins for it).
    I've used JMeter a bit, writing a Java extension to make requests to an XML interface to the product. Works well for functional verification, as well as performance- testing the business layer.
  73. Touchscreen voting by goombah99 · · Score: 1
    Here's a specific real life question. How can one validate a touchscreen voting system. In a major metropolitan area any given election might have 50 ballot designs (different legisative districits, languages, and multiple party primaries). Each ballot might have 80 choices to make each of which might have 2 to 8 options. Your looking to eliminate errors that might happen less than one in hundred times. and you have to use you fingers to test 1000 terminals.

    Since in practice you wont be able to review each ballot cast all you can do is look a totals. So to do this you need to encode you entries--vote the first option 1 time, the second option 2 times and so on. That way you can detect if two buttons have been accidentally swapped.

    And of course you are error intolerant to as I said the less than 1% level. So were talking billions of button presses assuming you always press the right one and dont make a mistake.

    So how do you pull this off?

    is there any way to gaurd against other kinds of errors like buttons offset from their images too?

    is there any analogous industry that has this issue?

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Touchscreen voting by Scorillo47 · · Score: 1

      This doesn't sound too complicated.

      First, you have come up with a general plan.
      - What exactly do you want to test - and to what degree of certainity
      - What are your priorities - here I would say that the accuracy must be less than 1%
      - What are your resources (i.e. how many testers, their qualifications)
      - What is the timeline
      - What is the estimated cost (and ultimately, what is the real profit from this stuff?)

      Then you start to develop a small test plan. First, you need a precise behavioral model of your system. This means that if you have 1000 terminals, you have to define a model which says how the votes "add up" together in the main system.

      Next step you design a real, physical interface to enter data in the system. This needs to be completely automated. Yes, you will need to use rubber fingers (or something equivalent) hooked up to some electromagnetic devices that triggers a finger to be "pushed" at a certain time. Then you define a module that would accept, say, RS232 commands and in response will push a certain finger. This is not very complicated and not expensive either. Then you just need one PC to send these commands over a set of serial cables to each "voting monkey" device.

      If you have the ability to run the touch-screen software in a simulator test the software separately, using some scripts that simulate the "touch" commands directly in the simulator. This would be a cheaper solution although you will still need to do some manual/semi-automated end-to-end testing.

      Finally, you have to one or several machines that will:
      - Run the main test programs
      - Run the "monkey scripts" that ultimately will cause these rubber fingers to go in action
      - Gather various activity logs from the affected systems
      - Correlate the data gathered from the voting systems with the actual votes.

      The main difficulty would be writing the whole test package, depending on how complicated your test needs to be. You can decide how much time you need to spend on functionality testing vs. longhaul tests etc.

      Anyway, what I wrote is a very high-level overview of a plan. The main point is that developing an end-to-end, 100% automated test for a system containing things like touch screens is not rocket science as long as you know what you are doing and you hired the right people.

      --
      Don't try to use the force. Do or do not, there is no try.
    2. Re:Touchscreen voting by Egonis · · Score: 1

      Sure,

      Set up small degree voting stations in department stores, youth centres, community centres, restaurants, and libraries for such things as:

      - New Services? Which are most popular
      - Materials for Libraries, what would be used most frequently?
      - Most Popular Items on a Menu

      When done across a board, this is a nice way to get free testing, and please many different agencies and companies by providing this free service, thus improving the image of the voting system.

  74. Validation and Verification by Anonymous Coward · · Score: 0

    There are two parts of testing:
    Validation - testing requirements, paper testing designs, code reviews, usability hueristics etc...
    Verification - unit testing, integration testing, regression testing, user testing etc........
    The key is to balance each type, although Validation is the best since bugs are caught early and don't cost as much. Verification can be automated as much as possible. What bothers me are people who say that user and manual testing is the way to go? By the time something gets to user testing, the bug is going to cost a lot of money. And manual testing is a waste of skilled time.

  75. Video Games by Gnpatton · · Score: 0

    Most Video Games release a demo version or have beta testing group. A way this could translate is to have some clients who run a beta version. You dont have to say its beta, but rather tell them that they are the first to try out this new software. Let them use it for free for a while and say that you are letting them use it for feedback on functionality and interface. Then while they tell you what they do and dont like about the software, they'll aslo bug you about the bugs that pop up in the program. then...PROFIT!

  76. Don't test it yourself by majkqball · · Score: 1
    The biggest thing I've found so far is if you're testing your own application, you have an unfair advantage. Something that looks obvious to you might not to the average user. You might know to click here, type in this parameter this way, etc, while a user doesn't know what's going on inside your head.

    For most testing, I pass my code to my team mates. My boss has an especially easy time finding funny and stupid bugs. Keep in mind I'm actually complimenting his ability here. Saves me a bit of embarassment is he catches it before a user ever sees it.

    So testing really needs to be done by people who need to use the application in it's environment (and their environment too).

    --
    SBC stands for Stupid Bell Company
    AT&T stands for All Telephones Tapped
  77. Autoexpect by HermanAB · · Score: 2, Informative
    Expect and Perl.

    Expect is a Tcl thing, that is also a module in Perl.

    Autoexpect is a script generator of sorts for Expect.

    Using that combination, you can create a test harness that can also test things that were not designed to be tested, such as GUIs, Browsers, SSH and Password sessions.

    However, it is not easy and yes it works on Windoze too...

    --
    Oh well, what the hell...
  78. AKA Extreem Testing by qaguru · · Score: 1

    I go even further, and automate the integration test during the development phase. When the code is submitted, I update the general UI input/output routines and UI definintions, and have a working automated test.

  79. Trained monkeys. by A.S. · · Score: 2, Funny
    (And I don't mean developers.)

    The solutions to your problem is trained monkeys. it has been shown in trained monkeys that wide-dynamic-range neurons in the cerebral cortex participate in the encoding process by which monkeys perceive (Kenshalo et al., 1988). There has not been so large a demand for the little guys since Mustacioed italians wandered the steets of New York with them almost a centruy ago.

    I find that ring-tailed monkeys (from South America, principally Brazil) are the best for software testing. They are usually shipped in lots of twenty-five. They will be classed by customs as with the capuchin, which means the value-add taxes will be very reasonable.

    If you are having trouble importing primates, you can always try checking local campuses for desperate college students. They may not be good at sitting still for verylong, but their wages will be even lower than the monkeys.

  80. from the trenches.. by MikeHunt69 · · Score: 1
    I have worked as an "automated testing specalist" for the last 7 years.

    In my experience, automated functional testing is good for 1 situation: functional GUI regression testing on systems using a classic "waterfall model" setup where the GUI dosen't change much and there are more than about 3-4 releases per year.

    In any other situation, you usually don't get the payback. The software is expensive (I use Mercury Interactive's Winrunner), often running into $100k range. The skill set required is quite specific - you can't just throw 12 arts student graduates at it and expect it to work (which is what happened to me for y2k testing). You need people with development and scripting skills, because it is a development effort. And developers frequently don't want to "lower" themselves to QA (where I don't want to lower myself to dev... heh)

    Automated gui testing dosen't work with XP (tried it) or probably any other RAD approach where the gui is constantly changing. Also, an app needs to be a cerain size (or really really frequent release cycles) before it's worth automating. Sometimes it's cheaper and faster to hire test monkeys.

    The biggest benefit I see with automated testing is with performance testing. The apps are still $100-150k (MI Loadrunner), but in most cases it's worth it. I can simulate 3000 users on a web server farm after writing a few scripts, making it as simple or as complicated as you like. You usally only write 10 scripts max so one person can finish the scripting in 2-6 weeks, depending on complexity. Compare this with functional testing which ideally needs at least 1 person full time per 100 test scripts, just to maintain/run/write new scripts/report bugs.

  81. My experiences with testing.... by Tangurena · · Score: 1
    I have worked at several companies that had licences for Winrunner and Loadrunner, but because the software was so expensive, they wouldn't let anyone who was uncertified touch it, and the cost of the software blew the budget for testing for well over a year. End result: 6-digit price tag software sits on a shelf for several years.

    During the dotBoom, I coughed up $500 out of my own pocket for Visual Test. I thought it would help me with the hard parts of testing my code: the NT services and the database connectivity. Unfortunately, VT was only good at testing UI pieces, of which there were very little (although one of the Access applications had about 300 forms). The latest version runs about $4k.

    My current employer knows we need to do some better testing and version control, but won't allocate time or resources to installing, oh, say, cvs or subversion or visual source safe. We also can't take the time to install and use NUnit (current shop uses microsoft dev tools exclusively). So all the time used learning NUnit has to be done on my own.

    Of all of the employers I had in the last 5 years, none actually used the automated test tools they had, instead all depending on human activity (button pushing), with excel spreadsheets to record the results. One place actually fired testers that didn't pass software.

  82. Related Mac History by musselm · · Score: 1

    One testing app created for the first Macintosh by Steve Capps was Monkey Lives, which created random desktop events in order to find bugs.

    Story here at folklore.org: Monkey Lives

    Folklore.org is a really neat site made apparently by Andy Hertzfeld, one of the original Macintosh team. It has lots of anecdotes, of which one of my favorites is I'll Be Your Best Friend, including the choice humor of convincing a waitress to divide toppings in thirds on a pizza.

  83. Canoo by javajedi · · Score: 1

    Check out Canoo WebTest. This is my favorite tool for the kind of high-level functional testing you're talking about (assuming your app is a web app).

  84. Tools by Anonymous Coward · · Score: 1, Interesting

    I have used a few tools, and like anything else it comes down to your proficiency with the language.

    WinRunner http://www.mercury.com/ = Gotta know C++, and you better not be looking at modern tech (.net, java, etc...) plus requires add ins

    Quick Test Pro http://www.mercury.com/ = Expensive but deals with modern tech if you but the extention and know VB needs add ins

    OpenSource = OK for light stuff

    Rational http://www.rational.com/ = Very confusing

    SmarteScript http://www.accordsqa.com/ = easy to use, but doesnt require programming experience, new to market, no need for add ins

    compuware http://www.compuware.com/ = have to hire them as consultants

    just a few views.

  85. Real Real Users by JDonahoe · · Score: 1

    I've found that users who will eventually use the system are the best testers. This means deploying a full development environment, and mimicking live data. Try to get someone that has been using software in the particular context for a while. They'll tell you about the features they loved in the systems they used in the 1970's, as well as the features they've always wanted. Try to get a user who is just starting in the industry. They will tell you which parts of your app don't make sense. Those parts are the ones that are going to drive up training costs in the future. Outside of getting a solid product, there is an added advantage to this approach. The test users will recognize their suggestions in the finished product, which increases user buy-in in the end.

  86. That's why we have users... by rascanban · · Score: 0

    For any large scale system that needs testing in its whole, I would refer to a small beta group of users who originally asked for the system or the system's improvements. I find unless I write a testing grid of input and expected output, and adhere to it like a SysAdmin holding a full pot of coffee, I find that I may not be the best one to test my own code. That's why we have users. We develop because it is our art, our hobby, our zen. Any functionality that benefits a user base is purely accidental.

    --
    "Beauty is the ultimate defense against complexity." - David Gelernter
  87. Test and quality by Anonymous Coward · · Score: 1, Informative
    OK, first some disclosure: I work as test manager and also as software quality assurance responsible in an ISO certified and CMM rated company working on critical software (think medical, space etc).

    The first thing to keep in mind is that test is not QA. I am puzzled so many conflate the two and I suspect the reason is that the QA chief is not visible in the company. If anyone follow up to this posting of mine I would appreciate if you say wethe ror not you have seen/talked to the QA crew much.

    OK, so let's start with test: I recommend a single sheet set of testing guidelines and a test process requirement set. test is done at several levels:

    • Unit test: Keep the test manager out of this one, here is where the developer tests. Keep is short and simple but do record if it has been completed. Those responsible for integration should refuse integrating untested units. Just a single rotten apple in the works can cause week long integration nightmares; I guess we have all been there, right? Avoid it, and track down what went wrong. Fix problems, not people. Suggestions:
      • Test interfaces:
      • Legal values (this is what most people do, nuice, safe values, basically testing to see that it works)
      • Out of range values (here is where many developers skip testing)
      • Borderline/fencepost cases
      • User interfaces:
      • View every new tab, window, button etc.
      • Check with GUI expert, if there is one
    • Integration test (into components, CSCIs or the finished product, many levels possible): The test manager rules here. Test from scripts (written or automated) but do make variations. Explore the unusual cases. Unlike developers the test manager is supposed to provoke the system, try to make it crash, see that it is robust. Suggestions:
      • Check use cases (if applicable)
      • Check that all units communicate, try stimulating all interfaces
      • Use multiple testers; everyone has different ways of doing things that very often shake out different bugs. Your alternatie is that your end customers find the bugs for you and you fail acceptance testing...
    • Acceptance test Typically project leader runs, assited with test manager who this time has the schizophrenic job of avoiding known bugs.
      • Test contract items
      • Refuse interruptions of other variations if your contract can support this stance
      • Record actions if costomer runs a free test as part of the acceptance testing

    Note that test manager should review unit test documents and review possibility of automation. Resist automating GUI testing until system is getting stable, otherwise the overhead in setting up will eat up all benefits in running it.

    A test manager needs of course thoroughness and a sense of details but also intuition. The latter part is more important them most people realise. I can from personal experiences tell you it is no fun to be tere with a customer at an acceptance test that has tanked.

    Next is Quality Assurance. This is not about testing, it is about process, the process that includes testing, verification and validation.

    Do consider CMM (Capability Maturity Model). many Indian companies are top rated and this is used as a lever to get outsourcing contracts. Sure, many cheat and we all know that there are consulatnts that can brief you on the "right answers" on an audit. No matter what, do try to live up to the intentions at least within the company. It does have a useful function, including the unofficial but very real ombudsman function. Thus this job requires tact and diplomacy as there is some authority associated with it. Suggestions:

    • Analyse defects for a pattern
    • Do make sure experiences are acted upon
    • Respect your confidentiality, people can lose their jobs over what you say
    • In analysing defects you will find not just what is wrong but also who makes most mistakes. Fix the problem, not the person, underlying issues can often be elsewhere
    • Be prepared to leave before caving in to management pressure

    I'd be interested in hearing from others with CMM/SQA experiences.

  88. In my Own Company by linuxislandsucks · · Score: 1

    In my own Company, yes there are sladotters here actually start up startups, I am moving towards automating as much testing as possible..

    But even with moving automated tests towards the front of OOP object designed code I still have to manual acceptance testing...

    But since Iam in j2me Gaming I really do not want acceptance tsting automated as then I woudl not get to play any neat games :)

    --
    Don't Tread on OpenSource
  89. Automated Software QA/Testing? by Anonymous Coward · · Score: 0

    I did something like this for the resource manager product. we had performance and workload profile data from thousands of systems ... and we built a parameterized benchmarking/testing infrastructure. we predefined something like 1000 benchmarks that selected statistical samples from range of workloads and configurations. we then developed a workload and performance model implemented in apl.

    after the first 1000 or so benchmarks, all the results were feed into the apl performance and workload model which got to pick the next set of workload and configuration parameters for the next benchmark ... this was automated and turned loose. In all approximately 2000 benchmarks were run taking three months of elapsed time to calibrate and validate the operation of the resource manager before it shipped to customers. some benchmarking methodology references:
    http://www.garlic.com/~lynn/subtopic. html#bench
    various performance, scheduling and resource manager references:
    http://www.garlic.com/~lynn/subtopic. html#fairshar e

  90. XP and Testing by Chorizo · · Score: 1
    In our large-scale web application, we've adopted Extreme Programming (XP) as a means of increasing product quality, and thus far it has worked very well.

    Our application is just about all Java, written in a J2EE application container, and almost all of our tests are written in some form of Java as well. We use Test Driven Design to drive our API design, and end up with unit tests written with JUnit. We run these unit tests continuously, after every batch of checkins, using Cruise Control which performs an automated build.

    To perform functional tests, we use JWebUnit which sits on top of HTTPUnit. The combination emulates a web browser, performing clicks and form sets against the actual server. We automate the running of these tests against an installed system, using Tinderbox, and we do this on every platform that we support (combinations of application servers, databases, and operating systems). The tinderboxes run 4 times a day, using the Cruise Control results.

    It takes a lot of hardware (the tinderboxes for each platform) but the infrastructure is easy to set up with free software. The HttpUnit tests are tedious to write, mostly because they take a long time to run. Because of this, we don't consider a feature (user story in XP) complete until it has an automated HttpUnit test.

    As for process, we have a small QA team that design test documents for each user story. We use those test documents to design the HttpUnit tests. Since we do this during the development stage, we involve the QA team on a daily basis.

    When a user story is considered finished by the development team, the tests are reviewed by QA and the functionality is reviewed by the product manager that designed the feature. This way, we have no big surprises when everything is done, everyone can see the product progress day by day.

    I won't say we ship a 100% bug free product, but our quality is through the roof compared to what it used to be, and it's actually much higher than we were even expecting.

    1. Re:XP and Testing by Anonymous Coward · · Score: 0

      HttpUnit is very time-consuming. I've found that WWW::Mechanize (Perl) is awesome for web testing. Hook it into a Perl test framework like Test::Unit and bob's your uncle.

      Here's an actual web test (a "webcase") from one of my projects. I've hacked it up to automatically parse the HTML with LibXML so you can query it with Xpath:

      sub test_valid_login {
      my $self = shift;

      $self->get($LOGIN_URL);

      # Make sure we're indeed at the login page.
      $self->assert(qr/\w+: Log In/, $self->page_title);

      $self->form_name('login')
      or $self->fail("Couldn't find login form at " . $self->uri);
      $self->set_visible($USERNAME, $PASSWORD);
      $self->submit;

      # Make sure no error box is present.
      $self->assert_str_equals('', $self->errorbox_text);

      # Make sure the page contains a #username DIV, with the username and a
      # logout link.
      $self->assert(qr/$USERNAME\s*:\s*Logout/,
      &nbs p; $self->xpathvalue(q{//div[@id='username']}));

      # Now follow the logout link, we should now be back at the login page.
      $self->click_on('Logout');
      $self->assert(qr/\w+: Log In/, $self->page_title);
      }

  91. Mod up, now! by Anonymous Coward · · Score: 0

    What's up with moderators today? This guy shows insight making an important distinction but is buried in the noise.

    Right, so it is the colour scheme that stops moderation?

  92. Division of Labor by thepseudogenie · · Score: 1

    I guess this isn't exactly what you are looking for, but in an enterprise setting, the (high paid) developers should not be doing any testing. That ever so fun task of QA testing should be delegated to the (lower paid) testers.

    Its a fundamental rule of business. Why pay developer cash for tester skill? Seperate it. The developers can get more done (faster deployment time, more features, better code, etc) by not 'wasting' their time on testing. Plus, it makes for a happier developer; a happy developer is a productive developer. And don't stop there; break it out into one more level - Software Engineers, Developers, Testers. IMHO the rule of three is the way to go.

    Of course, this could backfire... The PHB might just come to the conclusion that we can loose some developers, hire testers, and cut costs. Silly PHB - ticks are for kids. (get it? bugs, ticks - kids,... oh never mind...)

  93. Well this is less fun by Anonymous Coward · · Score: 0

    Here are things that are less fun:

    1. The database servers going down due to badly written stored procs performing extremely intensive queries against poorly designed schemas

    2. Billing your customers redundantly or billing them a completely wrong amount causing small claims lawsuits and potentially class actions.

    3. Revealing credit card info or other sensitive data by accident

    4. Opening your entire infrastructure to your competitors and hackers

    You tell me what's less fun. I for one welcome our new QA/Automated testing conquerers.

  94. This color scheme could use some testing by scruffy · · Score: 0, Troll

    There's no way to avoid a lot of manual testing, except at /. where they can implement an awful color scheme with next-to-zero testing, apparently.

  95. Automation All The Way by Karnak23 · · Score: 1

    Write automation at all levels: UI, middle-tier and data-level. You can also write mock objects to simulate the other layers, e.g. the database layer, so you can test each layer in isolation. This takes some effort to design and implement properly. Just treat it as part of the developement effort from the start. That way, writing test automation becomes part of the fun. Don't wait to design and create tests for your code. That's a sure-fire reciepe for creating buggy software.

  96. Mercury by Anonymous Coward · · Score: 0

    Mercury has the premier testing tools, for both funcational and performance testing. For specific products check out Load Runner and Quick Test Professional.

    I am not saying that these tools will replace a solid QA staff but they will increase the test coverage dramaticly and permit you to measure and manage quality and performance of your applications. Once you have used them, you can never go back. It makes that kind of difference.

  97. What's so old-fashioned about that? by Anonymous Coward · · Score: 0

    Or do you still do it the old-fashioned way? (manually operating the UI, going through the data to check every transaction, etc.)

    Isn't that the point of the system in the first place?

  98. Code to test by Baldrson · · Score: 1

    A lot of this issue is resolved when you simply code your tests before you design your code. By having the tests coded you have a functional spec that is rather hard to squirm out of and since it is pre-coded you can run it automatically!

  99. 2 words by g8oz · · Score: 1

    Rational Robot

  100. Don't re-invent the wheel ! by alanp · · Score: 2, Interesting

    I've been in QA for a number of companies and have found one consistent problem... re-invention of the wheel...
    I attribute this to two things

    1) Commercial tools are over complicated and not very good
    2) There's no tool that exists to do X Y Z
    3) Our software can't be automatically tested !
    4) A lot of time is taken up with reporting !

    1).. Totally agree... have you ever seen Test Director ? It's a nightmare to use, takes ages to import testcases, and it's automation interface sucks... plus it costs a FORTUNE.
    Consequently people end up storing testcases in excel sheets, word docs or spreadsheets...

    2) In some cases thats true, but in most its not.. I've seen companies write there own test environments that address problems that have been addressed (often much better) millions of times before... I'm talking automating starting / stop processes and test scripts, reporting, logging, seeding with test data etc... ALL COMMON problems...
    The answer to this is SIMPLE
    Take a look at STAF (Software Test Automation Framework) by IBM. It's free and GPL. It gives a common framework for witing tests scripts and applications in java/perl/python/c and a few other languages. It consists of a STAF process running and a set of APIs and a command line interface. Services exist to start / stop processes on remote boxes, transfer files, global variables, semaphores, logging.... in fact EVERYTHING you would want to do in automation.
    Take a look at
    http://staf.sourceforge.net/
    This tool saves many man-months of coding in a test environment and gives a consistent way of doing things. No more tester X has this cool script, tester Y has this, dept Z does this....
    If you are a tester you need to look at this !

    3) This argument normally doesn't hold water anymore... most things can be automatically tested. The question is IS IT PRACTICAL ? If you are only going to test a product once (think end customer doing acceptance testing on your product) then often it's not.
    However if you are a software house, then there is no excuse for not doing automated testing, especially when you've got access to source code. You can also buy lots of expensive analysers and script generators for stimulating systems under test.

    4) Reporting... yes management wants to know how you are getting on.... A lot of companies do this by email... Each QA person has to send an email every day detailing what they've tested, problems they've had, progress etc . etc.
    This is UNNECESSARY. This is the perfect excuse for automation.
    An analysts' time should not be taken up with this crap. They should enter this info into a centralised test management system and management should be able to query and manage the test cycle using this tool. Again Test Director tries to do this, but it's TOO complicated.

    Now for the shameless Plug....
    I have writen a GPL testcase management system called Testmaster which does most of the above and integrates with STAF, allowing test scripts access to the testcase database via STAF.
    It provides web front end which holds all testcases and proceedures for multiple projects and departments, imports testcases from word docs, CSV files or directly into the DB and is the primary interface for everyone involved in the QA process.
    So now you have your testscripts running, automatically marking tests as passed/failed etc, automated emails going off to management on progress, a web based system for testers and managers to use and the ability with STAF to stop/start/pause testing at the click of a button on multiple remote systems.
    It's easy to use, free, under the GPL, eerything is held in a database and runs on almost any Unix system...

    Take a look at
    http://testmaster.sourceforge.net/

    and see if it will make your job easier.
    End shameless plug

    --

    Alanp

    1. Re:Don't re-invent the wheel ! by Anonymous Coward · · Score: 0

      Totally agree... have you ever seen Test Director ?

      Let me guess, you had a short implamentation with Mercury. I have seen Test Director twice, once three years ago and the second time with TD 8.0 and full services implamentation with Mercury. The first one was hard, the second one went in quickly and we were rapidly productive. We had some minor issues but no show stoppers. By the end of the second implamentation and training we were significantly more productive and had the dashboard to prove ROI to the PHBs.

  101. We do both by DaveJay · · Score: 1

    We do automated testing where we can, to make sure everything's working properly after every build.

    At the same time, we also utilize full-time testers when we hit milestones, to make sure that items related to look, feel and IA are caught and dealt with.

    So, to sum up:

    Automated testing to sanity-check builds

    Manual testing to ensure milestone quality

  102. What does QA mean in software by Qrlx · · Score: 1

    I don't understand how QA could happen in software. QA is a manufacturing spot-check to make sure you're not turning out duds. How does that translate to software? Is click-testing a website in a bunch of different browsers QA? Please explain.

    1. Re:What does QA mean in software by Anonymous Coward · · Score: 0

      This is one of those questions that sounds a little clueless but is actually kinda thought-provoking.

      Trying to get my mind wrapped around the point of view indicated by the question...

      Yes, what you describe is one method of testing just about anything: spot-checking or sampling, however there are 100's of ways / ideas / methods / practices and or approaches applied to software testing, google is your friend, try 'software qa'.

    2. Re:What does QA mean in software by Qrlx · · Score: 1

      google is your friend, try 'software qa'.

      Okay, I did that and here's what I got:

      "Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to 'prevention'"

      That's not QA, that's project management. Or process management. Or lifecycle management. What's it got to do with quality? At what point are you validating the deliverable goods and the consumer experience? Answer: Never.

      Software QA is middle-management bullshit. Convince me I'm wrong.

      I don't believe QA can really apply to software. Now, if you want to redefine the term QA to mean something other than making sure a five pound bag of chicken wings weighs five pounds, and is full of chicken wings, fine. But please tell me where you work so I don't ever accidentally get a job there.

  103. Don't forget Valgrind by inflex · · Score: 1

    Although not quite specifically what you asked for, I can attest that using valgrind definately helps find many bad errors which invariably would send your coders insane.

    I run a small open/commercial hybrid development company here - valgrind has been one of the most impressive bug prevention tools we've ever added to our arsenal.

    One very important area of testing/QA is regression testing. Always make sure you have a record of what worked in the /previous/ versions so that when you make a new version you can validate the results against the old. What this does is to make sure that you at least are as reliable as your last version.

    We run an automated testing setup (custom scripts) which checks the new software against about 45,000 testcases; the worst part is that it takes about 8 hours with valgrind to get through this (time to buy a bigger server!).

    One last thing, if you're compiling C code, turn on -Werror, although some warnings may seem annoying/benign at the time - it's best to fix them all up lest they turn out to be your intermittent, confusing as hell bug later.

    PLD.

  104. Developers don't test by baggins2002 · · Score: 1

    The developer testing should never be the last step in testing. Developers shouldn't even build the test scenario's. These should be built seperately from customer input and spec's. Scenarios can be reviewed by developers prior to testing, but they shouldn't be doing the actual testing.
    Developers during coding develope a mindset of how a user should interact with an application. The users invariably do it differently and the system breaks. So developer only tests for the way he/she thinks the user should work on the system. Then the user uses it and the system breaks.
    You usually end up wasting time and money having developers test a system.

  105. Testers are Professionals Too by gwiner · · Score: 2, Insightful

    I have had many years of experience in QA departments over my career. My observation is that it is difficult to attract good talent to a QA depratment. Many developers and technically inclinded folks see QA as menial labor. This mentality misses the value add and complexities of a true QA department/function. Ideally, you would hire dedicated and technically experiences individuals that: + Can analyize requirements into test plans (not by following the programming logic, but by following the business logic) + Understand the application architecture and environments so they can design tests to get at those components and risks + Develop automation tools, test harnesses and tests data loaders. You really want the technical expertise in your QA department to think about certifying or trying to break your application from a different perspective. When developers guide test plan development too closely, QA can never really be sure they are getting the best test coverage. Do thses skills sound like a "college entry level job"? I think not. Companies that hire inexperienced QA analysts are missing the real benefits of an objective QA department. Depending on the size of the organization, it is helpful to have a QA department report into a centrallized org structure, like the PMO (Project Management Office), or have policies requiring "hard signoff" on quality from QA. This allows them a level of objectivity and ability to ensure the quality of the product. I challenge developers to think of QA differently than in the past. Look for talented independant technical professionals in your QA department, and you will truely assure quality.

  106. before I left, my company was getting aggressive by Anonymous Coward · · Score: 0

    with automated testing. Unfortunately it was really kinda silly. They got a new head of QA who went to one of the biggest party schools in California. He hired all of his old buddies from chico and together they chased out all of the good employees. Anyway, his buddy, the head of auotomation and tools decided we would spend a shitload of money to get a whole farm of machines and an enterprise SILK (segue) license. They thought that the QA team could write down each of their tests in baby steps that the automation team could then automate. They though that they could exhaustively test using automation. Worst of all, they thought that they could use automation to test for new bugs.

    A year later, and I don't know how many dollars, the powers that be got rid of him (by promoting him to a harmless positions as an "architect" - whatever the fuck that is) and unfortunately kept his buddy as the head of the automation team, although they did roll automation back under the control of QA (thank god). Anyway, they also decided that automation is best for regression testing, as in testing things that used to work and making sure they still work. It's also great for load testing. It totally sucks for testing new features, but it's pretty good at testing legacy features. It's not a good idea to have "automation developers" who have no fucking idea how the product they are supposed to tetst works, and only know how to write silk scripts and 4test and all that other proprietary seque bullshit. Instead it's a much better idea to train the QA team to write automation tests themselves. THere are things QA people know and learn and live and love that make them good at QA testing, and you can't switch to automation only without losing that "instictual" bug finding ability. Finally, the idea that you can replace your QA team with machines is stupid and costs you money in the long run. Last I heard though, the idea that you can replace your QA team with Indians is still believed in over there.

    One more thing, the best way to get automation in your testing is to build it into your product. There are some products wiht "unlimited undo" and a full blown command line interface to the engine. It will literally record what the program is doing, each function call, etc. When a bug happens, it spits out the history just like a stack trace, only QA testers, Beta testers, even high-value customers can take this and send it back in. You as a developer and launch the file and get your operating environment in the exact same situation, tracing the exact same crash. It's like time-shifting and station-shifting for bug traces. Of course, this is well known and implimented by Intuit, Microsoft and even mozilla in their little _ would you like to send information about this error to microsoft" feature - which may or may not be under patent pressure by MS, but was used in some forms long before ms, and should be used inhouse at the very least regardless of patent rights (imho). Anyway, there you have it. Automation is useful, is not a holy magic bullet, and QA is worth paying for.

    Also, segue is way overpriced and could use some Open Source competition.

    Finally, if anyone has applied automation tools towards their p2p application with success, please share with us what you used that worked. Thanks.

  107. Spelunking Analogy by Anonymous Coward · · Score: 0

    Fun is where you find it. All the good testers I know enjoy their work, they really get a kick out of investigating something new and being the one to find the interesting artifact.

    Think about cavers, these people go to great lengths to explore underground caverns just for the sake of going somewhere no one else has been before and finding that interesting stalactite or other underground formation etc. I really enjoy software testing but would never go caving, it seems like a huge amount of effort for very little return but there you go.

    Coders think they have seen it all because they are the original creators of a product but in an odd kind of way they haven't. Once any non-trivial program is put together and run in the real world all sorts of interesting and unexpected things happen that only a thorough, independent tester will see for the first time (hopefully before a customer does).

  108. does there exist.... by zogger · · Score: 1

    ... any sort of central searchable repository of source code? Not complete apps, just raw code? something like a google for code? Or just a way to do it if not in a centralised location?

    Just seems like an idea to make developing easier. I was thinking about this reading the difficulties in testing and the various tecnhiques. I keep thinking perhaps "better solutions" might be out there, but hidden in non related apps to what any developer looking for code might be working on, so he wouldn't even bother looking there. A searchable database might be a good tool. Say some aspect of an app is doing a particular thing that would be useful in some other totally unrelated project, so maybe the person trying to develop for it might not even be aware of it, but if he could search for it in some manner it might already exist.

    It's like patent searching in a way, it should be easier to search, and it should be *there* to search.

  109. Wrong by Anonymous Coward · · Score: 0

    No you have to test the actual ballot each elections. You are not trying to prove that touch screen selections can be done accurately in general.

  110. You are ignoring cognative factors by Anonymous Coward · · Score: 0
    You also have to have camera's to make sure the screen shows the correct text associated with the button you beileve you are pressing. You have to do this every election and on each machine not just one machine and one ballot. You have to simulate off-button presses as well.

    and this needs to be done in every legilative districit. Not al districits will have the funds to do this properly.

  111. fun? you must still be young by scphantm · · Score: 1

    i was the director of testing for a company for a long time. the formula i figured out was take the amount of time it took you to write it, triple it, and thats how long it will take you to adequatly test it. that worked until i stopped a release because i wouldn't sign off on it.

    when i finally left, their system of testing was also called, SHIPPING.

    and you think this i fun? have no fear, your still young.

    --
    *** I suffer from a colorful array of psychological problems
  112. At the company I work for ... by skurrier · · Score: 1

    ... the most automated testing facility we use is a system to press buttons to a script, which is used mainly for stress testing. All other testing is done "old-style" by doing "operations" on the system then checking that all the data for these is saved correctly, which usually means hand trawling through thousands of lines of XML.

    I must admit that occasionally finding a bug makes it all worth it, almost.

  113. 1) start testing as early as possible 2) AUTOMATE! by Anonymous Coward · · Score: 0

    What you need to do is:

    First, make sure all your developers are "test infected". They should all be good at unit testing, and most importantly, test-first development (not exactly the same as test-*driven* development, more like a subset).

    Tests should be written *before* the code. This does two things.. first of all it makes sure the tests are written, second of all it keeps the code *SIMPLE*. Everytime you add an exception handler, for instance, you *must* write a test for it first. Pretty soon you learn to leave the exception handling in higher, more-abstract layers where it belongs. Etc.

    When it comes to GUI's you will soon learn to strip as much logic as possible out of the GUI and put it in testable controller classes. Basically your GUI does nothing but send and receive events from controllers, and the controllers are tested using the same hooks that the GUI uses.

    This takes discipline but I've found in my own experience it is one of the few "achievable" things that require discipline. Once you get into the rhythm you can't give it up (that's what "test infected" means). Your guys most *love* testing. They must get a kick out of 100% test coverage.

    Everytime a bug report comes in, write the test that exposes the bug, *then* fix the bug, and watch the test pass. Fun!

    Next, you must AUTOMATE everything you can. I wholeheartedly recommend reading Pragmatic Project Automation by Mike Clark for some ideas.

    Finally, you need professional testers if your app is big and complicated. They will sit down with your user docs and start testing your builds. This gets expensive of course.

    Oh yeah, be sure to TRIPLE all your time estimates. You have to write good docs, and create good tests, and each of those takes almost as much time as writing the code.

    Yes testing (especially the non-unit testing, functional, integration, whatever) is super-expensive. But once you start noticing that your bugs have slowed to a trickle, you will be impressed.

    It also helps if the end-user of the software is enthusiastic and actually reports problems and guides the development.

    If you can't get professional testers, focus on building as many AUTOMATED tests as you can!

  114. CTH Technologies by bbulzibar · · Score: 1

    http://cthtech.com/ has a product called Get IT Right that can be used to create scripts to do regression, QA, automation. The plus side of this company is that they actually listen to customers when they have good ideas http://cthtech.com/index.php?option=content&task=v iew&id=2&Itemid=25.

  115. Generally speaking you can only automate... by Assmasher · · Score: 1

    ...regression testing.

    --
    Loading...
  116. For web app: automatic 'smoke test' via link check by codeguilder · · Score: 1

    For a Web app, a link checker can act as an automatic 'smoke test'. While link checkers do not substitute for unit tests and coverage matrices, they offer a nice trade-off as a low-cost, automatically-expanding tool that can uncover problems quickly.

    Any link checker will do for well-linked 'public' pages which do not require a login. On linux, see checklinks for example.

    With some additional code, a link checker can:

    * log into a login-protected web app and carry the resulting cookie between queries
    * spider from each of a list of start pages (ensuring each of these is hit, at minimum)
    * parse resulting HTML for required common components (e.g. header/footer), as well as for human-readable error messages like the text "Cannot display ..."
    * limit redundant visits to same 'state' with different parameters (requires a URL scheme with identifiable finite state)

    For an example of a FOSS link checker with these features, see morebot.

  117. Moo by Chacham · · Score: 1

    Programming done "properly" is both design and coding. Ideally, (and crucial on large projects) there is design of all functions including "in and out". Anyone whose coded in Assembly knows this is a must.

    If properly speced, bounds checking and others tests are very simple to write, and either Q&A can do it, or a day can be set aside where you listen to your favorite music, book on tape, or movie, and test each module. Testing is simple, and many suites make it even easier.

    Ultimately, the problem with testing is poor design. Poor design means functions and modules are haphazzardly designed, and being unspeced, it is hard to know the "in and out" of them. Thus, it cannot be tested, for it is now known what to test.

    Even if it is not kept to, for whatever the reason, it is worthwhile to note that it *should* be 80% time design , 20% coding and debugging. Design, design, design. Find someone who like it, and it'll answer nearly all your problems. There no reason to feel in the dark, and complain that turning on the light removes all the excitement.

  118. All programmers should be required to test. by Anonymous Coward · · Score: 0

    Being a tester for to many years to count. I say all testers should be required to test for 2 years before thay are allowed to get the CS degree.

  119. 10 years of QA... by drdreff · · Score: 2, Interesting

    ...has shown me that most of the commercial tools available are of extremely limited use. If you're working in any cutting edge environment or pushing existing technology to its limits the tools will not be able tohelp you.

    Home grown test suites built to suit the job at hand have always turned out to be the bets testing solution. Automation is the only way to keep up with the test effort required for a large project. Especially when QA is seen as an afterthough or a barrier to release. Automation will kepp the code from regressing and serves as a great check for problems duing large merges of patches.

    Load test tools are invaluable for verifying the stability of a system. The quality of these tools vary greatly, but things like Apache Flood and httpload have done wonders for stressing web services.

    FWIW YMMV

    --
    As seen on Wired: Get a free desktop PC
  120. Test First Programming by SKarg · · Score: 2, Interesting
    Software Development Magazine had an article about test first programming of a GUI application that describes a method of incorporating the automated testing into the application.

    The example GUI application is a simple game, but the methodology could be used for any GUI application.

    From the article:
    The big question was how to handle all the stuff that would normally be considered GUI code-specifically, the hit-testing: Where do users click, and what should happen when they click there?

    I suspected that hit-testing would be the most complex part of the application, so I wanted to ensure that I had tests for it. It also didn't belong in the model, since that should contain only basic game concepts. I needed an intermediary class somewhere: The Swing code would get a mouse event and delegate it to this intermediary class. The intermediary would interpret the mouse coordinates and determine if something had to happen. It would possibly do this by interacting with the model. If anything did happen, an event would be broadcast back to the Swing class.

    The author goes on to discover, after searching with Google, that he had developed "a pattern known as Model-View-Presenter (MVP), a variant of Model-View-Controller (MVC)."

    In MVP, the View actually serves as both the view and controller (presenting output and managing input). The Model is the Model, as in MVC. The extra middle layer is considered a bridge between the View and the Model. It's specific to the application and is often considered throwaway if the View needs to change (for example) from Swing to HTML. In this situation, the Model would remain unchanged.

    Martin Fowler has a good description of how the Model View Presenter works.

    The example source code is available on the site. It utilizes an automated Java test suite called JUnit

    Software Development Magazine is a magazine targeted at software developers, and there is no charge to subscribe to it.
  121. Testing's Many Layers by nimblebrain · · Score: 1

    The best defense against a client-side blowup is to have as many layers as possible helping out, because they all have their various strengths and vulnerabilities.

    In development:

    • Good design: The larger the project, the more cowboy coding and migrated-to-production prototype code can hurt the process. Many bugs come in the form of workarounds, repeated code, or unclear code responsibilities, all of which can be mitigated by good design.
    • Unit test: Developers have a better idea of the contract the rest of a program has with various classes than any other department. Unit testing is all about proving that contract still holds, and can not only protect you against breaking that contract with other code changes, but provide a spot to add tests for newly-discovered failures (we can't necessarily account for all failures in advance). Remember: before fixing a bug, write a test that fails with the bug but should succeed, run the test and ensure it fails, THEN fix the bug.
    • Assert ... or whatever equivalent to assertions you have that you don't turn off. So many bugs come from things that are deemed to be "impossible". If they're so "impossible", prove it. They may not be impossible in the future - most come from bad input, or changed assumptions about the code or the environment. You don't need to code in Eiffel in order to assert/complain that the input was out of range, or null, or blank, or that the lengths of two lists you're keeping in the same class should be the same. COROLLARY: If you have an assertion on bad data, you should make a unit test case with bad data, and tell the unit test case that you expect it to fail.
    • Reduce combinations: If you can simplify your path through the code, do it. If you have trouble tracing through the code (especially in a long method), or identical code appears throughout, extract the common pieces into something sensibly named. Many bugs crop up due to 'not remembering to update everything', or just plain not being able to keep track of the logic flow through the code in the first place, or when making changes.

    QA:

    • Good people: Wow, does this make a difference! I thank the circumstances-that-be for our QA head Scott. Any replacement will have big shoes to fill :)
    • Good communication: Often, QA ends up being a liaison in many ways between support, deployers, and R&D - to ask/verify how problems happen, how things are supposed to work, and what new features and bug fixes are and imply.
    • Automation tools: For the tedious parts, and for regression testing. We use TestComplete for things like stress-testing, overnight testing, ensuring problems don't come up for any items in a set (good for when you have many items to load and test in any solution), and testing expectations in different environments. It also includes a slightly more white-box feature for writing test scripts that can verify exposed internal values.
    • Good backbone and support: QA itself needs to have the temerity to put their foot down and say "it's not ready", and it's the responsibility of others to throw their hat into the ring in support whenever this is the case, because it can be an unpopular stance. Not standing your ground on this can end up blowing up. That doesn't mean there's no ground for negotiation (e.g. we can release this to THIS specific client IF we test only for one database back-end with office-only deployment and a roll-back plan), but it's a strong starting stance.

    Support and IT

    • Believe them: They're not making up software problems, at the very least the ones they're seeing with their own eyes. Something "impossible" just happened. It could be that there's another piece of software that munches your PDF-printing DLL, it could be a firewall setting, it cou
    --
    Binary geeks can count to 1,023 on their fingers :)
  122. You shouldn't do it anyway. by LittleBigLui · · Score: 1

    At least not if you wrote the thing.

    It's your baby, you don't wanna hurt it. You also know what it likes and what it doesn't like. You're not fair, you're too nice when testing.

    Get someone who wasn't directly involved in developing it. He'll find gazillion of bugs that you won't.

    --
    Free as in mason.
  123. Please learn how to make links. by Anonymous Coward · · Score: 0
    Your blatant plug would be even blatanter if you would learn how to make links.
    <a href="http://www.empirix.com">Empirix</a>
    (without the trailing ";" put there by Slashdot) yields: Empirix
  124. Mythical Man-Month dates by DragonHawk · · Score: 2, Interesting

    Me: "Just like we had the state of software back in 1956 when he wrote the book."

    AC: "It was actually 1975. But your point still holds true."

    That was a deliberate over-simplification. I should have known somebody here would call me on it. Full version:

    The original edition of TMMM was copyright in 1975, yes. However, Brooks based his writings on his professional experience. He was working on projects relating to IBM's mainframe computer products in 1956. He became manager of the OS/360 project in 1964. He actually wrote most of the essays in TMMM from 1965 to 1974. I don't have exact dates for original publication, but I know some or all of the essays (including the "The Mythical Man-Month") were published separately, albeit in much less widely distributed media, prior to the book.

    Then, of course, in the "20th Anniversary" Edition, we have a renewed copyright of 1995, an essay "No Silver Bullet" first published in 1986, and a retrospective chapter written in 1994.

    I, of course, used the 1956 date because it sounds the most impressive. However, I honestly believe it is a valid "starting date" for the field of personal experience on which Brooks bases his essays.

    --

    dragonhawk@iname.microsoft.com
    I do not like Microsoft. Remove them from my email address.
  125. Some useful things by sonamchauhan · · Score: 1

    These things have proved true to me:

    (o) Just like coding testing is engineering: you have limited resources, and have to allocate them to get the max. benefit.

    (o) Some small enterprises cannot afford full-time software testers. Some have huge existing code bases, and small or non-existent QA teams. And that just has to do.

    (o) Black-box testing for regressions is often where the max. bang for your buck is. Consider: your unit tests may cover 99% of code, and 100% of the units tests may pass. But when one high-level user interface bug creeps in close to release, and your units tests do not detect it, and it stops thousands of users doing the most common operation on your system, and that forces a recall of your software CDs, of what use were your unit tests? Yes, user-interface testing can be a pain, but it is far better to test the 20% of operations that comprise 99% of high-level actions of real users, then to try and code inane tests for every object.

    (o) Developers can double as testers.

    (o) Yes. Developers can write decent unit tests. Developers can also write good integration tests, black box tests and regression tests. This just needs developers committed to quality software, and a management that sees the benefits of this approach, and pushes for it. For eg: it considers test reviews part of the code review process. Yes, uncommitted developers can do a shoddy job with testing. But committed developers can do a great job. They can also use their inside knowledge of the code to write "grey-box" tests that are more likely to tease out bugs in their own code. For eg: feeding a string "bausch & lomb" to a component that they _know_ converts it to XML for internal use, then making sure that the non-XML output is NOT "bausch & lomb".

    (o) Consider critically, the current XP-related fashion of unit-testing everything. It may be useful in some areas, but not in others.

    (o) If you have to test web-based systems, consider Apache/Jakarta Jmeter: http://jakarta.apache.org/jmeter/ - a great web testing tool. It is unfortunately focussed on load testing, and hence lacking in some functional testing areas. I wrote a perl wrapper (not open-source) that automates black box integration and load testing with multiple test applications , JMeter being one of them. It has proven quite useful, regularly catching bugs in our system under test, and also on a different system that our system interfaces to.

    (o) If you have to test GUIs , it is quite difficult. Consider some of the commercial tools.

    (o) Load testing / stress testing is often as important as simple correctness or integration testing. Some bugs can only be "teased out" under load.

    (o) Testers are human, just like developers. Testing is generally boring, repetitive work. No one likes boring, repetitive work. Automate testing as much of it as possible. People like being creative. The more you automate, the better will be the quality and quantity of newer tests.

    1. Re:Some useful things by sonamchauhan · · Score: 1
      Correction, this line should have read:
      For eg: feeding a string "bausch & lomb" to a component that they _know_ converts it to XML for internal use, then making sure that the non-XML output is NOT "bausch &amp; lomb".
      (I didn't test the preview properly ;)

      Also, the example isn't all that great I admit.
  126. QA is fun !!! by max_nor · · Score: 1

    I'm a qa engineer for 8 years now and each days , i feel i like it more than the previous... (except some bad ones of course , but remembering that i could work in the johnson and johnson company provides much help) You could compare QA with a detective job, trying all days to find the little bugs hidding in the code. And laughing with the devellopers when asking then how damn this f... soft works !! i love doing QA.. i think it's the same way that developer loves creating soft... Max.

  127. Thanks for the tip. by Futurepower(R) · · Score: 2, Funny


    Drop "it." from the URL to get rid of /.'s stupid new color scheme

    Thanks for the tip. Whoever designed the new scheme probably has to have his wife pick out his clothes for him, so the colors will match.

  128. Size matters - my exp as a developer by Anonymous Coward · · Score: 0

    In Soviet Russia we do it like this:
    10 coders: 2 years - 4 full-time testers, unit tests (moderate coverage), functional testing, regression testing(love it) - c# + mssql project

    3 developers: 2 months C Bulider / 9 months ASP(JScript)+mssql/6 months C Builder - 1 part time tester for each of 3 projects, peer reviews(low coverage)

    1 developer: 1 part time tester for most of the projects that last for more than 2 months(mostly php + mysql).

    Release often(I prefer weekly releases), it helps a lot. Perform usability testing: it rocks and it's free (use you office mom, for example).

  129. Re:It starts with design - Got a theory.. by meburke · · Score: 1

    OK, I've been thinking about this and doing a couple of tests, and I believe it's theoretically possible to design an automated testing suite concurrently with the objects themselves if the method of designing objects is similar to the method described in another Jaaksi-Aalto book, "Tried and True Object Development: An Industry-proven approach using UML".

    The difficulty is certainly no harder than port-knocking, decryption or virus pattern searching, and would be much faster because you could use a table of valid I/O responses on each object interface, along with a table of test data for communicating with each object and each integrated iteration. Once the test app's framework is designed, it should be re-usable from project to project. After the object is designed your responsible programmer would add the valid input data and valid response data to the appropriate tables. After the object is developed, those I/O's would be used to test the Object for logic and arithmetic errors, at the least. Final testers would integrate the object testers into app testers and confirm the logic. It seems to me that the testing suite would be something on the order of a script that replaced the user interface for massive testing.

    Sounds like a good project!

    Mike

    --
    "The mind works quicker than you think!"
  130. You should be doing it TOO by Anonymous Coward · · Score: 0

    While I agree that it is essential to have indepdendent testing of whatever you're writing, I don't think that absolves you of the responsibility to test your work yourself. Too often, I see developers who just assume their logic works without even trying it once...

    Only once a developer is fully confident that there are no problems should he or she send it off to the Testing Team. There should be no "Ooops" moments.

  131. Human testing doesn't scale by andy@petdance.com · · Score: 1
    Automated testing is the single most important thing you can do on a project to make sure that you don't screw it up along the way. Human testing does not scale. Once you test that your login screen works, you as a human will never run that test again. If you write an automated test to check out the screen, you can add it to your test suite and have it run once an hour/day/whatever.

    There's stuff on testing with Perl at http://qa.perl.org/, including slides from a couple of talks I've done on the subject.

  132. Re:Wooooah...take care on tool choice!! by glesga_kiss · · Score: 1
    Each the above tools is good, and I'd also add Rational Robot and the newer "IBM Rational Functional Tester for Java and Web" tools to the list. I've got a lot of automation experience and I'm presently using the later one. Very powerful and hackable, I've got it doing all sorts of things it's not designed to do. It's Java based, so if you don't like their method, extend the class and write your own. Fantastic.

    HOWEVER, and I cannot stress this enough, you need the correct tool for the job. Some tools will work better with different tool sets, some not at all. Try each of the front-runners and make sure whatever choice you make integrates well with your application. This is a one-time decission that if made poorly will kill an automation project. You'll spend more time writing workarounds rather than tests to click on that strange widget your app uses.

    One very useful paradigm we've employed in automation is to use it to *prep* the system under test.

    Absolutely. The first things I automate are usually installation and configuration. My goal is to have tests running overnight, using all of those spare cycles. I usually plug directly into the build process to get the test running straight away.

    I usually open up the tools and let developers use them to configure their systems for their own use. That way they appreciate and understand the automation, another important aspect. If you have developers changing things in the GUI without warning or reasonable cause (it happens, moving icons around "because"), then it's good to have something they use get broken by it. They soon learn!!