The Polyglot Tester 153

Posted by Uncle Bob Sat, 19 Dec 2009 17:22:00 GMT

Behavior Driven Development, and it’s emphasis on the Given / When / Then structure of specification has been well accepted by many parts of the software industry. Tools such as JBehave, Cucumber, GivWenZen, have taken a prominent role, and rightly so. After all, it’s hard to argue with the elegance of simple statements such as:

Given that I am a user named Bob with password xyzzy
When I log in with username Bob and password xyzzy
Then I should see “Welcome Bob, you have logged in”.

Yes, it’s hard to argue with it, but argue I shall…

The BDD style is very pretty. Certainly business people can easily read and write it. Moreover, the BDD style provides a conceptual framework within which automated test specification and be efficiently composed. Better still, the BDD tools provide a powerful parsing mechanism that conveniently translates the natural GWT statements into function calls to be executed as tests.

The problem is that the BDD style is simply not appropriate for all, or even most kinds of tests. Why? Because it’s wordy. Consider:

Given a Juke box that shows 0 credits
When I deposit .25
Then the Juke Box shows 1 credit.

Given a Juke box that shows 0 credits.
When I deposit 1.00
Then the Juke Box shows 5 credits.

Given a Juke Box that shows 0 credits.
When I deposit 5.00
Then the Juke Box shows 30 credits.

How is this better than:

Jukebox Credit Table

Deposit Credits
25 1
1.00 5
5.00 30
  • Which of the two is the more elegant?
  • Which of the two is easier to read?
  • If you were looking for a specification error, in which of the two would you be more likely to find it?

I think the answers are rather obvious.

  • There is value in brevity.
  • There is elegance in sparseness.
  • Elaborate wordy structures are not always the best approach.

OK, I can hear the complaints starting to bubble up already; so hold on. I’m not arguing against BDD. I really like the GWT style. And Yes, I realize that many of the BDD testing tools allow you to compress your tests into tables so that you can avoid the wordiness.

My issue is not with the tools. My issue is with the idea that BDD is the only true way, and that all tests should be expressed in GWT format forever and ever amen.

Is this a strawman? Unfortunately not. In my travels over the last several years, I have seen this attitude showing up over and over again. Someone will write a suite of complex tests using GWT style, without realizing that they could shorten it by a factor of 10 or so by recomposing it into a simple table.

Actually my issue is with the tools. Cucumber, for example, is written around Given, When, Then. If you use Cucumber, or JBehave, or any of the other BDD tools, you think in GWT and find it hard to even express something as simple as the table above.

Consider, for example, the following strange test. It measures how well the juke box selects random songs based upon their popularity. More popular songs should be played more often than less popular songs. You might specify it this way in GWT style.

Given a Juke box with 1 credit
When the user presses “You Decide”
Then the juke box will randomly choose a song based on its ranking.

Now this is a perfectly good statement of intent, and I’d certainly want it to turn green if I ran the test. However, if this turns green, what have we really learned? The test result does not really tell us whether or not the selection algorithm is accurate. The GWT statements above are really just hand-waving statements that loudly say Trust Me without necessarily verifying anything.

Now look at the following tables.

Repeat you decide 10000 times and count results
Average credits should ~=1.3

Song Times played
Stairway to Heaven 880 < _ < 1120
In-a-godda-da-vida 1880 < _ < 2120
Viva La Vida 2880 < _ < 3120
Incense and Peppermint 880 < _ < 1120
Comfortably Numb 2880 < _ < 3120

Perhaps you don’t like the magic numbers. There are ways to deal with that, but they are beyond the scope of this blog. So let’s forget about the magic-ness of the numbers for the moment. When you run this test you see something like this:

Repeat you decide 10000 times and count results
Average credits should 1.295 ~=1.3

Song Times played
Stairway to Heaven 880 < 998 < 1120
In-a-godda-da-vida 1880 < 2007 < 2120
Viva La Vida 2880 < 2950 < 3120
Incense and Peppermint 880 < 1019 < 1120
Comfortably Numb 2880 < 3026 < 3120

It’s hard to argue that the green-ness is hand-waving. Nothing here says: Trust Me. You can see that the selection algorithm is random, and is weighted properly.

Now I’m certain that we could construct a set of GWT statements that captures the above semantics perfectly; but why would we? The simple tables express the intent in a format that is simpler and more accessible than GWT.

Conclusion

As programmers we have already learned that we must be polyglots. If you want to write a rails system you’d better know ruby, haml, css, erb, xml, etc. If you want to write a J2EE system, you’d better know Java, JSP, HTML, XML, CSS, etc.

Testers also need to be polyglots. Writing in a single style such as GWT is not going to cut it. GWT has it’s place, but it’s not sufficient. Other testing languages are also useful. Therefore testing tools need to be polyglot tools.

Comments

Leave a response

  1. Avatar
    BenAlabaster@live.com 21 minutes later:

    While as a programmer I tend to agree that sparse is usually elegant and that with every line of code, I add complexity and room for bugs to creep in so keeping it as sparse as possible makes for elegant and concise code.

    However, from a business standpoint what makes sense to us in its elegance loses meaning in translation. Your table is very elegant and sparse and perhaps wouldn’t be mistranslated, but the fact that it requires interpretation means that there is room for human error.

    Your wordy instructions – like legalese have been written for brevity and removal of ambiguity hence, so long as the reader reads English and can follow logical instructions, there is no room for error in translation.

    So the two sides of the argument are both valid, but don’t hold water when looking at them from the opposing team.

  2. Avatar
    Markus Gärtner 33 minutes later:

    I’d put it that way: - BDD style Given/When/Then is one tool to use in my tool-belt - Table style is one tool to use in my tool-belt - Flow-style is one tool to use in my tool-belt - JUnit is one tool to use in my tool-belt.

    I’m happy that FitNesse/Slim provides a great varietee of styles I can use (despite JUnit style). It’s me that has to know what’s in my tool-belt and decided what to use for the application at hand. But I need to know that not everything is suitable in every circumstance (and that I should refuse to use copy&paste testing).

  3. Avatar
    mike@mikedoel.com 39 minutes later:

    Have you really eliminated GWT in your example? Sure, you don’t use the specific words, but aren’t they implied. Actually, I guess I don’t see the Given implication in your example. And without it, how am I supposed to know if the Times Played specification in your test captures expected behavior (maybe it’s randomly choosing by song length instead of popularity).

    I think the basic point should be rephrased to something like – if you’re using GWT, aim for conciseness.

    Given “Vida La Vida” is twice as popular as “Comfortably Numb” When I repeat you decide 100000 times Then the play count for each song should fall in the range Song Times Played Vida La Vida 5500 – 7500 Comfortably Numb 2500 – 4500

    And FWIW – the average credit thing is a bit confusing in your example. What does it have to do with picking songs based on popularity?

  4. Avatar
    Colin Jones about 1 hour later:

    Great points! The tabular style definitely cuts down on the repetition, and I like it a lot better than the repetitive Given/When/Then examples above.

    I think the Jukebox Credit Table you have is easier to understand, as long as you have the context that the first column is the setup and the second column is the one being tested. I’m not sure I agree that Cucumber, in particular, makes it hard to express something akin to the table examples.

    An analogous Cucumber test might look like this:

    Scenario Outline: jukebox credits
      Given there are 0 credits
      When I deposit 
      Then I should have  credits
    Examples:
      | deposit | credits |
      | 0.25    | 1       |
      | 1.00    | 5       |
      | 5.00    | 30      |

    Granted, it’s a bit wordier (though not as much so as the Given/When/Then examples above), but I also think it’s a bit clearer because the context is all there. That said, all programming is based on conventions, and we don’t want to build everything from the ground up every time, so I can also understand wanting to eliminate unnecessary context from the tests. I guess a lot may depend on who’s reading them?

  5. Avatar
    Colin Jones about 1 hour later:

    Shoot, I screwed up the Textile above. The scenario outline should read

    When I deposit <deposit>

    and

    Then I should have <credits> credits

  6. Avatar
    msuarz about 1 hour later:

    This is represented in cucumber with Scenario Outlines http://wiki.github.com/aslakhellesoy/cucumber/scenario-outlines.

    >

    I have my own implementation in fitnesse that will become a framework. I am keeping an eye on what you do with Given/When/Thens.

    Here is an example of Scenario Outlines in fitnesse http://aprogblog.com:8888/job/zunzun/ws/src/Test/fitnesse/FitNesseRoot/SpecsSuite/UpdateStatusSuite/ShorteningUrls/content.txt

    cheers mike

  7. Avatar
    Johannes Brodwall about 1 hour later:

    Duplication in given/when/then steps is something that I see a lot, too. There’s actually a little used feature in Cucumber to deal with it called Scenario outlines. Your example with scenario outlines:

    Scenario: Purchase credits
      Given a Juke box that shows 0 credits 
      When I deposit <deposit>
      Then the Juke Box shows <credits> credit.
    
    Examples:
      | deposit  | credits   |
      | .25      |  1        |
      | 1.00     |  5        |
      | 5.00     |  3        |
    

    The issue of test quality is important in general. Another problem I would like to see addressed is the 30 column FitNesse tables that people use to “put in all the test data before every test”.

    In general, just as given/when/then style testing tends to get a lot of duplication, table-style testing tends to get a lot of superfluous data that makes tests hard to understand

  8. Avatar
    KevDog about 2 hours later:

    You had me until the last line about polyglot testing tools. Sooner or later, a tool that attempts to do everything will end up doing a poor job on something.

  9. Avatar
    VitaminJeff™ about 5 hours later:

    Woot woot for polyglots! :D

  10. Avatar
    Ted M. Young about 7 hours later:

    This is exactly why I’ve argued against GivWhTh-style testing because English Is Bad For Your Tests. Maybe I’m old-school, but I always thought the problems with huge requirements documents is not necessarily because they’re huge, but because they try to be precise in a language that is, by its nature, ambiguous.

    In the GivWhTh style, who is the “I”? What does it mean that “I Deposit”? How does the Jukebox “show” its credits? Merely by using English, you end up endowing the test with a lot of assumptions. By, instead, using a bit more formality (yes, the Fitnesse table format is a formality), you imply less and therefore become more precise.

    The other issue, and I’ve got a pending blog entry on it, is the discoverability of the GivWhTh style. How do I, as a test-writer, know that the scenario should be written using “I” rather that “the user”, or 25 cents or $0.25, e.g.:

    Scenario: Purchase credits
    Given a Jukebox ...
    When the customer deposits 25 cents

    or

    Scenario...
    Given...
    When I deposit $0.25
    Then ...

    They’re both proper English. They’re both precise. However, if you only handle the “25 cents” and “I deposit”, you’ve already limited the way the test can be expressed, and the test writer will find out that they didn’t express their intent in the proper way when the test fails. If you want to allow more flexibility in the input, you’d have to write more test scaffolding. By implying that you accept any English, you’ve made the test that much harder to write since the choices of words are wide open.

  11. Avatar
    Andras Hatvani about 18 hours later:

    Every developer writing clean code surely also wants to write clean tests/specifications. Therefore, the developers of BDD tools most probably want to provide tools best supporting the writing of clean tests. This is the case with JBehave as well, since you can formulate table examples the same style as with Cucumber; see http://jbehave.org/reference/stable/table-examples.html. Moreover, I’m sure that the developers of such tools also welcome improvement suggestions, which help them and the users of frameworks to write unambiguous, concise, and for everyone understandable tests.

    @Uncle Bob: As the lack of tables are by no means a problem, since both, Cucumber and JBehave support tables, what other kind of behavior specification style/language/syntax would you still add?

  12. Avatar
    Mark Nijhof 1 day later:

    Kent Beck said in his interview with Industry Misinterpretations #164 that you should also be DRY in your tests, meaning that if you can verify some behavior in one test versus two tests then you should use one. I guess this somewhat follows that path as well.

    Link: http://www.cincomsmalltalk.com/blog/blogView?showComments=true&;printTitle=Industry_Misinterpretations_164:_Going_for_the_Longball&entry=3436948975

  13. Avatar
    Steve Py 1 day later:

    BDD is no more the “only true way” than TDD is. The GWT syntax of the test is a means of expressing the requirement and the test by the desired behaviour.

    The significance of this is that the test now directly correlates to a business requirement and can take over the role of a requirement in some vague document, or a story card sitting on some white-board.

    Personally, I don’t use the GWT syntax, but I definitely grok the rationale behind expressing tests in this manner.

    BDD tests are not just a more verbose version of a unit test; a unit test is geared at testing a unit of work where the BDD test is an expression of the satisfaction of the underlying requirement.

    A better example of a BDD test might be for a vending machine: Given I select a $1.50 candy bar and the machine has sufficient change, when I insert $2.00 and select the candy bar, then I should receive the candy bar and $0.50 change. [Test] EnsureWhenSufficientChangeAndSufficientFundsProductIsProvidedAndChangeGiven()

    Given I want to buy a $1.50 candy bar and the machine does not have sufficient change, when I insert $2.00 and select the candy bar, then I should receive my $2.00 back with a message to use exact change. [Test] EnsureWhenInsufficientChangeAndSufficientFundsProductIsNotProvidedCustomerNotifiedAndMoneyRefunded()

    etc.

    Granted by doctrine that giving product, giving change, giving refund, etc. can be considered their own behaviours and written as separate tests.

    My $0.02 change.

  14. Avatar
    Liz Keogh 4 days later:

    “Therefore testing tools need to be polyglot tools.”

    JBehave and RBehave (which evolved to become Cucumber) were originally designed to elicit conversation and help developers learn more about the domain and the requirements. I’d call them learning tools first, testing tools second.

    BDD was founded on the confusion caused by the word “test”, and I see more of that confusion here. Nobody I know in the BDD movement suggests that G/W/T is the only way to test, or even to capture requirements. Wordy English is, however, a great way to learn.

  15. Avatar
    Real estate in india 5 days later:

    Great describe. I really enjoy your experience.I am Agree with ” The tabular style definitely cuts down on the repetition, and I like it a lot better than the repetitive Given/When/Then examples above.”

  16. Avatar
    dungeon fighter gold 6 days later:

    Personally, I don’t use the GWT syntax, but I definitely grok the rationale behind expressing tests in this manner.

  17. Avatar
    Voyance paris 9 days later:

    very important.

  18. Avatar
    tarot 9 days later:

    this article is very interesting.

  19. Avatar
    dialogue sexe 9 days later:

    good luck.

  20. Avatar
    ittay 11 days later:

    GWT is to verify your requirements are meant. They are meant to be seen by non-developer stakeholders. In the random selection example, if there’s no requirement on distribution, then it’s fine not to verify it. If there is a requirement on distribution, then a GWT can be written (Given that you decide is selected 100 times…).

    GWT is no more than an english-to-computer_language bridge. When implementing the GWT statements, you can choose whatever tool suites you.

  21. Avatar
    tester_guy 16 days later:

    I think your jukebox example is too rudimentary. When you are dealing with complex systems the added benefit of using words is helpful for both readability and collaboration.

  22. Avatar
    derek smyth 17 days later:

    Hi, I’m reasonably new to BDD and I luv how it’s about doing TDD correctly (the outer acceptance test loop and the inner unit testing / class specification loops)

    I’m not really in a position to say whether GWT limits thinking. At the moment for me it doesn’t; it actually opens my mind up a bit to new possibilities. I also know that it will help the adoption of agile like development to a number of non-developers in the place I work; the GWT being very similar to user stories.

    I take on board what Uncle Bobs says though and keep in mind.

    What I would like to comment on is the polygot tester.

    Unfortunately not everyone who tests (or codes) on a project is a trained software developer / tester (hey it’s easy!). I know from experience that introducing multiple technologies that do the same thing differently can meet with a lot of resistance.

    If I told my team that we were going to use both Cucumber and Fitnesse to do acceptance testing on the next project I know I would be asked ‘why use both?’ and ‘when should I use one over the other?’

    I’m all for being a polygot but not everyone is… the principle of least effort.

  23. Avatar
    legal document 27 days later:

    Object may refer to, Object (philosophy), a thing, being or concept. Entity , something that is tangible and within the grasp of the senses

  24. Avatar
    legal documents 30 days later:

    He was chief scientist of the Embedded Systems Division at Mentor … He has contributed to the Object Management Group

  25. Avatar
    François about 1 month later:

    GreenPepper supports both multiple table (ie business rules, collections, etc.) type including a BDD style scenario interpreter (http://www.greenpeppersoftware.com/confluence/display/GPWODOC/5.+Scenario+Fixture) giving you the flexibility to use GWT or not.

  26. Avatar
    Endep 2 months later:

    Interesting analysis

  27. Avatar
    Matt 3 months later:

    Thanks for sharing this great article! That is very interesting Smile I love reading and I am always searching for informative information like this.

  28. Avatar
    annie2278 3 months later:

    Therefore testing tools need to be polyglot tools.

  29. Avatar
    card 3 months later:

    Yes, you’re right. We must be polyglots!

  30. Avatar
    secured 3 months later:

    Testing tools are important.

  31. Avatar
    disney restaurants 3 months later:

    Your table is very elegant and sparse and perhaps wouldn’t be mistranslated, but the fact that it requires interpretation means that there is room for human error. I’m sure that the developers of such tools also welcome improvement suggestions, which help them and the users of frameworks to write unambiguous, concise, and for everyone understandable tests.

    The analysis are very interesting

  32. Avatar
    han 4 months later:

    Cucumber, GivWenZen, have taken a prominent role, and rightly so. After all, it’s hard to argue with the elegance of simple statements such as:

  33. Avatar
    parça TL kontör 4 months later:

    Very nice art, thank you for this site!

  34. Avatar
    FLV extractor 4 months later:

    come to have a look

  35. Avatar
    Blu-ray ripper mac 4 months later:

    Free download Blu-ray to iPad Mac, you can easily convert Blu ray and DVDs to iPad for playing.

  36. Avatar
    http://www.louboutinshoesmall.com 5 months later:

    Many popular christian shoes for you to choose, like Christian Louboutin gold & black sandles Christian Louboutin colorful flower sandals Christian Louboutin BLACK suede leather pumps

  37. Avatar
    Carter Eduardo 5 months later:

    I think it’s a coincidence while is true that some words can reach a fad;; they may be used by politicians or media due to some events or it’s just wooden language. rehearsal dinner

  38. Avatar
    dentist acton 7 months later:

    Nice to be visiting your blog again, it has been months for me. Well this article that i’ve been waited for so long.

  39. Avatar
    Youtube converter 7 months later:

    Really awesome article

  40. Avatar
    Employee Performance Appraisal 8 months later:

    Perfode looks at solutions from a different result-driven perspective. With our years of experience in Human Resource and IT, we have brought what we have learned to combine with state-of-the-art software technology and practical deployment.

  41. Avatar
    Singapore SEO Consultant 8 months later:

    If the programmer are working with these toold, then they must be polyglots.

  42. Avatar
    wood splitter 8 months later:

    This article gives the light in which we can observe the reality. This is very nice one and gives in depth information. Thanks for this nice article Good post…..Valuable information for all. I will recommend my friends to read this for sure.

  43. Avatar
    cheap vps 8 months later:

    However, from a business standpoint what makes sense to us in its elegance loses meaning in translation. Your table is very elegant and sparse and perhaps wouldn’t be mistranslated, but the fact that it requires interpretation means that there is room for human error.

    Your wordy instructions – like legalese have been written for brevity and removal of ambiguity hence, so long as the reader reads English and can follow logical instructions, there is no room for error in translation. cheap VPS So the two sides of the argument are both valid, but don’t hold water when looking at them from the opposing team.

  44. Avatar
    A line skirt 8 months later:

    Personally, I don’t use the GWT syntax, but I definitely grok the rationale behind expressing tests in this manner.

  45. Avatar
    pregnant after a miscarriage 8 months later:

    If your looking into trying to get pregnant after a miscarriage but you are not having any luck, Then I’m glad you found my blog and I strongly suggest you continue reading…

  46. Avatar
    bucharest taxi 8 months later:

    Cu o experienta de peste 12 ani de cand a intrat pe piata de Taxi Bussines Class, compania noastra doreste sa devina un expert in turism si transporturi.

  47. Avatar
    Bucharest taxi 8 months later:

    Taxi Bucuresti operates in Bucharest, but you can make a reservation for any destination you choose.

  48. Avatar
    Free Cpanel Hosting 8 months later:

    THANK YOU! :D I’ve just implemented this on my blog and it worked perfectly. I appreciate you sharing this advice.
    Free Cpanel Hosting

  49. Avatar
    buy perfumes 8 months later:

    excellent information. Quite helpful. I gonna share this with my communities.
    buy perfumes

  50. Avatar
    Margarita Machine Rental San Diego 8 months later:

    We rent interactive inflatables, party jumps and bounce house inflatable rental, inflatable rental slide, carnival ride and amusement rides (Swing Ride Rental, Ferris Wheel Rental, Trackless Train Ride Rental,

  51. Avatar
    wood baseball bats 8 months later:

    Your post will be rather good, and I’m sure some will find it interesting because it’s about a topic that’s as widely discussed as others. Some may even find it useful.Thanks so much for your post.

  52. Avatar
    Homes for sale in new bern nc 8 months later:

    awesome article!

  53. Avatar
    DM800 8 months later:

    In many cases. students become full-time employees after graduation.

  54. Avatar
    scented rocks | scented crystals | crystal potpourri">john 9 months later:

    juke box credit table is pretty interesting scented rocks | scented crystals | crystal potpourri

  55. Avatar
    facebook, Trisodium Phosphate manufacturers | ccnt 9 months later:

    Thank you for taking the time to publish this information very useful! I?m still waiting for some interesting thoughts from your side in your next post thanks.

  56. Avatar
    facebook, caustic soda suppliers | caustic soda solid suppliers "> soda 9 months later:

    Thank you for taking the time to publish this information very useful! I?m still waiting for some interesting thoughts from your side in your next post thanks.

  57. Avatar
    Havelock NC Homes for sale 9 months later:

    I wont lie…i had to read this twice to understand it..lol

  58. Avatar
    Serotonin Levels 9 months later:

    The way you tell about things is awesome. i always wait for your posts. They are inspiring and helpful.Thanks for sharing your information and stories.

  59. Avatar
    iphone Leather 9 months later:

    This was exactly what i was searching for. Have been fighting for a while to do this, thanks for have posted.

  60. Avatar
    Cebu Beach resort 9 months later:

    This such an interesting topic for me. Thanks for sharing this.

  61. Avatar
    Emergency Fuel 9 months later:

    This is so cool. I am such a huge fan of their work. I really am impressed with how much you have worked to make this website so enjoyable.

  62. Avatar
    Carbon Fiber Sheets for sale 10 months later:

    This is so cool. I am such a huge fan of their work. I really am impressed with how much you have worked to make this website so enjoyable.

  63. Avatar
    Sell Gold For Cash 10 months later:

    The significance of The GWT syntax is that the test now directly correlates to a business requirement and can take over the role of a requirement in some vague document, or a story card sitting on some white-board.

    Personally, I don’t use the GWT syntax, but I definitely grok the rationale behind expressing tests in this manner.

  64. Avatar
    Designer Bags 11 months later:

    Nice topic.Thanks for sharing!!

  65. Avatar
    chanel store 11 months later:

    I am very happy to leave my footprint here, thank you

  66. Avatar
    Jordan 11 months later:

    You are doing a good job especially by the way you are making the blog very interactive and questions are just answered instantly and preciously. What else can I wish for in the morning if not the perfect information that I am looking for.

  67. Avatar
    Protein Rich Foods List 11 months later:

    You had me until the last line about polyglot testing tools.

  68. Avatar
    add site 11 months later:

    Sum programming is based on convocations, furthermore we don’t wish to physique all from the soil up all term, so I can besides discern deficient to abolish nonessential meaning from the ordeals.

  69. Avatar
    Smth Arney 11 months later:

    I’ve got a pending blog entry on it, is the discover-ability of the GivWhTh style.

  70. Avatar
    video to ipad converter 12 months later:

    best Video Converter for iPad for Converting Video for iPad with high quality. Guide on How to Convert Videos to iPad and Convert Movies to iPad.

  71. Avatar
    OG0-091 12 months later:

    This is a good resource. Results seem to vary from other websites I’ve used. This seems to be pretty accurate.

  72. Avatar
    Pandora 12 months later:

    But it’s not actually that hard to do, and the results can be very rewarding.

  73. Avatar
    Quickquid 12 months later:

    I extremely enjoyed your great experience and I agree that the tabular style definitely cuts down on the repetition.

  74. Avatar
    davli 12 months later:

    Pretty good post. I just stumbled upon your blog and wanted to say that I have really enyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soo

  75. Avatar
    puma about 1 year later:

    If you mean to find great shoes for your children puma speed trainers also provides a mixture of finicky and affordable shoes for them. There are a lot of choices, it is up ring call,Ugg Boots, after by people that indigence an incredible quantity of column. This will make the customers happier. If you are often tangled in Singapore womens puma future cat shoes sale at Sainte Marie that could enhance operational efficiency, range visibility and turnaround time,” said Desmond Chan, managing boss, South Asia, Menlo Worldwide Logistics. “Our multi-client facility in Boon Lay Way provides puma trainers with different flag. puma uk’s youngest targets are toddlers. The puma for sale shoes are incredibly affordable, yet they still hold the grace. Wearing comfortable shoes will help children exploit better.

  76. Avatar
    HealthMaster Reviews about 1 year later:

    There have also been tests done on the healthmaster. You can find lots of info on the web

  77. Avatar
    <a href="http://www.watershipdanes.net/">whole house water filter</a> <a href="http://www.lowglycemicfoodslist.com/glycemic-foods-list/low-glycemic-index-foods-low-list/">List of low glycemic index foods</a> about 1 year later:

    have also been tests done on the healthmaster. You can find lots o

  78. Avatar
    toothache remedies about 1 year later:

    Greetings I am so happy I found your website, I really found you by accident, while I was browsing on Aol for something else, Nonetheless I am here now and would just like to say thanks for a remarkable post and a all round thrilling blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have bookmarked it and also included your RSS feeds, so when I have time I will be back to read much more, Please do keep up the great job.

  79. Avatar
    moncler about 1 year later:

    thanks for Moncler Jackets || Christian louboutin UK || Moncler coats || Christian louboutin shoes || Christian louboutin pumps your post!

  80. Avatar
    Animesh Pal about 1 year later:

    Very much informative post. I like it. Thanks for sharing in the web. Organic SEO

  81. Avatar
    women's handbags about 1 year later:

    Thanks for you artical.

    I would like to introduce a good online store about women’s handbags.Every woman need a beautiful handbag for their life.For example,if you want to shopping,you will need a high capacity handbags to carry phone,wallte,and need space to deposit what you buy just now,then you need a Tote Handbags,or a large Hobo Handbags.And if you join a party,you need a Shoulder Bags to collocate you clothes.If you work in the office,and you will carry some document and purse,you choose a Satchel Handbags is a very wise decision.In the part time,you may go outdoors,you need a Backpack Handbags for you clothes,mirror,cosmetics,and so on.

  82. Avatar
    goodman air conditioners about 1 year later:

    I have been reading out many of your articles and it’s pretty clever stuff. I will make sure to bookmark your blog.

  83. Avatar
    Audio Visual Denver about 1 year later:

    You know what, the Jukebox Credit Table is can easily be understand. And you’re right, Programmers like you must be Polyglot. Thanks

  84. Avatar
    Bookmark about 1 year later:

    Very nice article now I already bookmark you site in my bookmark

  85. Avatar
    aurangabad real estate about 1 year later:

    Very nice and Informative post i like this,Keep Continue

  86. Avatar
    vendita computer about 1 year later:

    great tool

  87. Avatar
    Lago di caldonazzo about 1 year later:

    ottimo post esiste in italiano?

    a href=”http://www.nextland.it”>vendita computer lago di caldonazzo

  88. Avatar
    MuratCan about 1 year later:

    The story comes with a young man.He comes from a small town.chat

  89. Avatar
    lead lined drywall about 1 year later:

    Great! I really appreciate this article. It is really hard to create a game. You need a lot of time. You must have a wide knowledge of programming.

    lead lined drywall

  90. Avatar
    led gu10 bulb about 1 year later:

    Classic exposition, I have also mentioned it in my blog article. But it is a pity that almost no friend discussed it with me. I am very happy to see your article.

  91. Avatar
    DUI Attorney Virginia Beach about 1 year later:

    “You know what, the Jukebox Credit Table is can easily be understand. And you’re right, Programmers like you must be Polyglot.” I agree to this… it’s understood already.

  92. Avatar
    Mario spelletjes about 1 year later:

    I have been reading out many of your articles and it’s pretty clever stuff. I will make sure to bookmark your blog.

  93. Avatar
    Plumbers Raleigh about 1 year later:

    Can you show us any picture tha will represent your post?

  94. Avatar
    cable ties about 1 year later:

    Classic idea.

  95. Avatar
    web hosting about 1 year later:

    I absolutely agree with you that testing tools need to be polyglot tools

  96. Avatar
    Guilderland Martial Arts about 1 year later:

    Polyglot tester can be use to understand Behavior Driven Development? This is great.

  97. Avatar
    t?umaczenia symultaniczne about 1 year later:

    Awesome website layout, even better page.

  98. Avatar
    next day loans about 1 year later:

    Thanks for sharing this information with us. This is very informative and interesting blog.

  99. Avatar
    dory about 1 year later:

    Useful information will I follow your posts. Social Network

  100. Avatar
    Seobaglyak about 1 year later:

    a Seobaglyak igazán éjszaka érzik elemükben magukat. Szinte ”kétlaki” életet élnek. A Seobaglyak éjszaka sokkal éberebbek, és agresszívabbak, olyannyira, hogy olyankor saját fajtársaikat tartják a legnagyobb ellenségeiknek.

  101. Avatar
    http://como-quitar-la-celulitis.blogspot.com/ about 1 year later:

    aprende en esta pagina como quitar la celulitis

    como quitar la celulitis
  102. Avatar
    okey oyunu oyna about 1 year later:

    like it.

    internette görüntülü olarak okey oyunu oyna, gerçek kisilerle tanis, turnuva heyecanini yasa.

  103. Avatar
    wholesale imitation jewelry about 1 year later:

    Polyglot tester can be use to understand Behavior Driven Development? This is great

  104. Avatar
    mac cosmetics about 1 year later:

    I’m glad things are getting better for you :D

  105. Avatar
    Como conquistar a un hombre about 1 year later:

    conoce en esta pagina como conqusitar a un hombre

    como conquistar a un hombre
  106. Avatar
    Brownstone Insurance Brooklyn about 1 year later:

    Better still, the BDD tools provide a powerful parsing mechanism that conveniently translates the natural GWT statements into function calls to be executed as tests.

  107. Avatar
    healthy coffee about 1 year later:

    I realize that many of the BDD testing tools allow you to compress your tests into tables so that you can avoid the wordiness.

  108. Avatar
    Delhi about 1 year later:

    Just stumbled upon this blog and I must say that your BDD analysis is a very well thought read, will bookmark. CHEERS!

  109. Avatar
    cookies gift baskets about 1 year later:

    it needs a bokmark so i can come back to it later ,nice stuff

  110. Avatar
    ac repair augusta ga about 1 year later:

    I realize that many of the BDD testing tools allow you to compress your tests into tables so that you can avoid the wordiness.

  111. Avatar
    Vance and Hines exhaust about 1 year later:

    The mechanism that conveniently translates the natural GWT statements into function calls to be executed as tests.

  112. Avatar
    Fake Oakleys about 1 year later:

    A man walking in the street, I remembered that I bought her that mobile glasses, in fact also pretty good

  113. Avatar
    cartier bangle about 1 year later:

    http://www.alijewelry.com/burberry-earring-c-10.html"> Burberry Earring ,
    http://www.alijewelry.com/burberry-bangle-c-11.html"> Burberry Bangle ,
    http://www.alijewelry.com/bvlgari-earring-c-12.html"> Bvlgari Earring ,

  114. Avatar
    Como Conquistar a Un Hombre about 1 year later:

    thanks for sharing! I love your blog, Keep it up :D

  115. Avatar
    Emily about 1 year later:

    Hi buddy, your blog’s design is simple, clean, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!<a href=”http://www.fakelvbelts.com”>Fake louis vuitton belts< /strong> Louis Vuitton sale< /strong> louis vuitton belts sale< /strong> cheap louis vuitton belts< /strong>

  116. Avatar
    cileungsi about 1 year later:

    Simply want to say your article is as tonishing. The clearness in your post is simply spectacular and i can assume you are an expert on this subject. Well with your permission allow me to grab your rss feed to keep up to date with updates updated

  117. Avatar
    AC Repair Clearwater about 1 year later:

    Polyglot on Android? can that be possible? It’s hard to think the 2 will combine however, you have the choice in which of the two would you be more likely to find it?

  118. Avatar
    Sunglasses Hut about 1 year later:

    One way to tell the fakes from the real thing are by these tell tell signs 1 On any pair of fakes the Oakley name on the lenses will be screen printed in white.

  119. Avatar
    bagsupplyer about 1 year later:

    It is nice of you to post this.I will pay more attention on it. Wholesale fashion women Alife Lowcut shoes from China free shipping,more order,more discount

  120. Avatar
    canada goose coat about 1 year later:

    Canada Goose Outlet is Marmot 8000M Parka. The Marmot 8000M Parka is really a waterproof, breathable jacket with 800 fill canada goose jacket feathers. It truly is design and light colored shell is produced for trendy, but uncomplicated, protection from cold temperatures. Reinforced shoulders, elbows and adjustable waist and hem make the Marmot a perfect alternate for skiing and other outdoor sports that want fairly a bit of arm motion. The 8000M Parka weighs three lbs., comes in bonfire and black colours and might be stuffed and stored like a sleeping bag to your convenience.This is one of well-know and prime down jacket brands.Hope our friends like its!Like canada goose womens and Canada Goose Expedition Parka.There are wholesale canada goose.

  121. Avatar
    Regallautsprecher kaufen about 1 year later:

    Since you wrote this awesome article i suppose you are one of the most gifted writers in the web. Best article i read. Online journalism is not so far where i come from.

    Best wishes.

  122. Avatar
    Blogger Nusantara Blogpreneur Indonesia about 1 year later:

    Wonderful post. I am searching awesome news and idea. What I have found from your site, it is actually highly content. You have spent long time for this post. It’s a very useful and interesting site. Thanks! Blogger Nusantara Blogpreneur Indonesia | Blogger Nusantara Blogpreneur Indonesia

  123. Avatar
    Christian about 1 year later:

    asa sdf0+a8s d+f8as+d9f dfd

  124. Avatar
    moncler about 1 year later:

    asdfa sdf0+6s7d4 +98sfg

  125. Avatar
    Louboutins about 1 year later:

    asdasd f68as6s66

  126. Avatar
    MTS??Mac about 1 year later:

    “I’m aware of the fact that if there’s a plane in the sky and it’s over Manhattan and it’s close to the anniversary of Sept. 11 it’s a connection people might make,” she said. “I wanted to wait long enough after the anniversary that people wouldn’t make that connections but I can see how they could.” MTS?? Plans for the skywriting were announced ahead of time , with Beck encouraging witnesses to email her photos. She was inspired by the “Surrender Dorothy” skywritten message in “The Wizard of Oz.” MTS??Mac

  127. Avatar
    fake louis vuitton belts about 1 year later:

    Hi buddy, Great post, please write more about this, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!

  128. Avatar
    Ashley Bowling about 1 year later:

    Work expands so as to fill the time available

  129. Avatar
    christian louboutin about 1 year later:

    Hi buddy, Great post, please write more about this, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!

  130. Avatar
    httplinks.com about 1 year later:

    Nice tester

  131. Avatar
    httplinks.com about 1 year later:

    Simply want to say your article is as tonishing. Thanks

  132. Avatar
    how to appeal my property taxes about 1 year later:

    Sometimes it’s hard to argues with the elegance of simple statements.

  133. Avatar
    ac repair augusta ga about 1 year later:

    I think Polyglot extension provides automatic redirects based on user language. This allows for multilingual content to be handled more easily.

  134. Avatar
    nikeheelsdunk over 2 years later:


    A first aid kit is a must for small and accidental injuries. Of course it’s unavoidable to scrape your arm on rough bark or falling off the tree stand, at least there’s an available remedy in that box. Always make sure to dispose of the Nike heels for women material properly.

    Other equipment such as rifles or bows must be kept unloaded. Most States will commission a guide for hunters to carry the ammunition and probably help the hunter carry some of the necessary equipment. It’s not like having a Jordan Heels For Women caddy carrying the bag, but he is there to ensure the safety of the hunter as well as the forest.

    Never drink anything that may compromise or deteriorate your physical or mental faculties.
  135. Avatar
    http://www.microsoftoffice2010mall.com/ over 2 years later:

    Curse Office 2010 whomever you may, but only if you had earlier known Microsoft Office 2010 what could have gone wrong, it would have been a wonderful day with people clapping in appreciation your genius and ingenuity.

  136. Avatar
    outlet juicy couture over 2 years later:

    Shopping inside a incredibly outlet juicy couture sale in regards to the web can be incredibly a great offer handy especially once the regional shop outlet exactly where it is possible to buy the item that you desire is a good offer out of your area. Apart from this, going to malls demands some trip and of course, you would ought to devote resources to the fare of going to mall.

  137. Avatar
    Polo Ralph Lauren Pas Cher over 2 years later:

    Hi, Brilliant, just I have learnt, what I needed to know. thank you for writing such an excellent article.Please keep it up.

  138. Avatar
    fake ray bans over 2 years later:

    Welcome to fake raybans store online!Our company is fake ray bans manufacturer & supplier,our company also supply fake ray bans .we have been in designer sunglasses for 8 years.there u can get the cheapest price in our company sites,waiting for u visiting.Fake ray bans sold in our company.our company’s .fake raybans let you enjoy your life withour paying high prices,and our daily necessities have been sold all over the world for many years and influenced by the customers’ approval.our company is your first choice.

  139. Avatar
    fake ray bans over 2 years later:

    Welcome to fake raybans store online!Our company is fake ray bans manufacturer & supplier,our company also supply fake ray bans .we have been in designer sunglasses for 8 years.there u can get the cheapest price in our company sites,waiting for u visiting.Fake ray bans sold in our company.our company’s .fake raybans let you enjoy your life withour paying high prices,and our daily necessities have been sold all over the world for many years and influenced by the customers’ approval.our company is your first choice.

  140. Avatar
    Sarkari Naukri over 2 years later:

    Great! I really appreciate this article. It is really hard to create a game. You need a lot of time. You must have a wide knowledge of programming.

  141. Avatar
    Government jobs over 2 years later:

    Hi buddy, Great post, please write more about this, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!

  142. Avatar
    Bank jobs over 2 years later:

    Hi, Brilliant, just I have learnt, what I needed to know. thank you for writing such an excellent article.Please keep it up.

  143. Avatar
    Classifieds over 2 years later:

    Hi buddy, Great post, please write more about this, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!

  144. Avatar
    como quitar la celulitis over 2 years later:

    A first aid kit is a must for small and accidental injuries. Of course it’s unavoidable to scrape your arm on rough bark or falling off the tree stand, at least there’s an available remedy in that box. Always make sure to dispose of the Nike heels for women material properly.

  145. Avatar
    youngbrown over 2 years later:

    Thanks for the information, I’ll visit the site again to get update information Toys

  146. Avatar
    bladeless fans over 2 years later:

    The Polyglot Tester 145 good post107

  147. Avatar
    louboutin sales over 2 years later:

    The Polyglot Tester 146 hoo,good article!!I like the post!182

  148. Avatar
    Injection mold over 2 years later:

    Intertech Machinery Inc. provides the most precise Plastic Injection Mold and Rubber Molds from Taiwan. With applying excellent unscrewing device in molds,

    Intertech is also very professional for making flip top Cap Molds in the world. Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Molds for their worldwide customers.

  149. Avatar
    Injection mold over 2 years later:

    Intertech Machinery Inc. provides the most precise Plastic Injection Mold and Rubber Molds from Taiwan. With applying excellent unscrewing device in molds,

    Intertech is also very professional for making flip top Cap Molds in the world. Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Molds for their worldwide customers.

  150. Avatar
    hermes chocolat over 2 years later:

    In the late 1990s, there was a collegiate football team with a losing record, low stadium attendance, and a dismal recruiting program?

  151. Avatar
    Rubber Molds over 2 years later:

    With more than 20 years of experience, Intertech provides an extensive integrated operational ability from design to production of molds 100% made in Taiwan. Additional to our own mold making factory, we also cooperate with our team vendors to form a very strong working force in Taiwan.

    For the overseas market, we work very closely with local representatives in order to take care of the technical communication and after-sales service to our customers. We also participate in the EUROMOLD & FAKUMA exhibitions and meet our customers every year in Europe. By concentrating on mold “niche markets”, we play a very useful mold maker role from the Far East whenever customers want to develop their new projects. We provide services from A to Z to our customers on a very economic cost and effect basis.

  152. Avatar
    Hogan over 3 years later:

    Are generally abbastanza HOGAN sui fiori—floriation montone tessuto pendio trick una sola scarpa

    Marca: HOGAN

    Modello: 11E101031

    Each Sesso: Femminile

    Colore: giallo

    Stile: Around trick le scarpe

    Stagione: primavera edward real estate

    Materiale: Pelle PU

    Altezza tacco: 6, 5 cm

    Impermeabile: 1. 5 cm

    Età: 20-35-year-old

    Ligament di prezzo: 249-439

    Prodotto web page link: http://www.hogansitoufficialeu-italian.net/

    Recensioni: camminare with prima linea di scarpe di marca di moda HOGAN sempre riusciti some sort of deludere, lo stile di pattern trimestrale è sempre così popolare, qualunque sia lo stile, il colore oi colori creano dipendenza. Conosciuto are available scarpe da passeggio uno dei migliori confort della scarpa donna tacco some sort of zeppa è sempre indispensabile. HOGAN distintivo di questa pista di pecora floreale preparato trick una sola scarpa è are generally vostra scelta Wow. Nel settore della moda, gli elementi di fiori not for è mai bassa marea di pelle di pecora popolari floreali, gentle, belle, petali sottili frange, rivelando il respiro dolce. Trick una scarpa, not for dovrete mai preoccuparvi di obsoleto, verrà ridicolizzato each aver indossato vecchio stile. Preparazione di canapa del pendio trick un pizzico di pastorale stile, ease age buona each andare, riempiendo il vento naturale. Le suole delle scarpe è unico wow, alla very good dello stampaggio gomma, stampato trick un disegno d’amore lovely, with modo che sia facilmente 100 di PU all’interno dei pattini, ease age morbidezza. Tali paio di scarpe è anche molto buono trick Wow, ze è trick when i pantaloni Capri, che scorre about to, pantaloncini i pantaloni, denim sono ALL RIGHT. Entrambi vogliono guardare più with alto sono anche preoccupati che some sort of piedi each lo looking stanco piccola age schiacciare, zeppa è are generally scelta migliore.

  153. Avatar
    Send gifts to Pakistan  over 3 years later:

    A real informative blog like this is an exceptionally cool helping resource for a needy information seeker like me! Thanks a lot…

Comments