{"id":538,"date":"2010-08-31T08:40:43","date_gmt":"2010-08-30T22:40:43","guid":{"rendered":"http:\/\/www.software-testing.com.au\/blog\/?p=538"},"modified":"2012-06-08T09:21:07","modified_gmt":"2012-06-07T23:21:07","slug":"does-cucumber-suck","status":"publish","type":"post","link":"http:\/\/www.software-testing.com.au\/blog\/2010\/08\/31\/does-cucumber-suck\/","title":{"rendered":"Does cucumber suck?"},"content":{"rendered":"<p>I&#8217;ve been having a lot of rants about Cucumber of late, as it&#8217;s the new  shiny thing for agile teams.\u00a0 Does anyone else have issues with it?\u00a0  I&#8217;ve asked all of my programmer friends to convince me of its worth, and  they&#8217;ve all failed so far.\u00a0 I&#8217;ve not seen it adding any value above  building a good API (and I see it bringing a lot of negatives relative  to other possible approaches).<\/p>\n<p>In my experience, I&#8217;m seeing &#8211;<\/p>\n<p>&#8211; Customers\/non-programmers never write the tests (because they have  very little interest in specifying everything in given-when-then.\u00a0 They  just want to tell us what they want.\u00a0 And  it doesn&#8217;t make much sense to specify everything in that format anyway).<br \/>\n&#8211; Customers\/non-programmers write the tests but it focuses the test  effort on writing those kinds of tests, rather than other testing that  seems to add more value.<br \/>\n&#8211; The tests are written in English, but what the test actually does  depends on how the developers convert the english phrases into code (so  there&#8217;s no guarantee it tests what the customer intended anyway).<br \/>\n&#8211; Avoidance of conversation (ie. tests as contracts).<br \/>\n&#8211; Cucumber and the related tools (through the toy examples they provide)  encourage developers to put lots of implementation detail into the  tests (and sometimes to do a lot more testing through the GUI\/http layer  rather than pushing some of that testing down).<br \/>\n&#8211; Refactoring sucks as we lose IDE support.<br \/>\n&#8211; Much heavier test artefacts (when a lot of the teams I work with are  already struggling with the weight of their agile test automation).<br \/>\n&#8211; A continued focus of tests on what the system does and not why it does it and the business outcome.<br \/>\n&#8211; Anecdotally, I&#8217;m not seeing better outcomes than people were getting  with other approaches.\u00a0 I realise it may be leading to better designs,  but then I&#8217;d expect to see improvements somewhere in the process.\u00a0 That  looks like it would require better modelling skills than I&#8217;m seeing in  most of the cucumber tests on my projects.<\/p>\n<p>Most of the examples that I&#8217;ve seen where people are claiming success  are fairly small applications.\u00a0 I&#8217;m not seeing the approach scale that  well.\u00a0 Yes, most teams could write their cucumber tests better, but even then, in my  experience, other approaches would be more effective and more efficient.<\/p>\n<p>Any thoughts?\u00a0 If there&#8217;s interest, I&#8217;ll try and post some examples of what I think those tests might look like if we pushed them into other forms.<\/p>\n<blockquote>\n<div id=\"yiv1451324842\"><!--~-|**|PrettyHtmlEnd|**|-~--> <!--~-|**|PrettyHtmlStart|**|-~--> <!-- #yiv1451324842 #yiv1451324842ygrp-mkp { border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}  #yiv1451324842 #yiv1451324842ygrp-mkp hr { border:1px solid #d8d8d8;}  #yiv1451324842 #yiv1451324842ygrp-mkp #yiv1451324842hd { color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}  #yiv1451324842 #yiv1451324842ygrp-mkp #yiv1451324842ads { margin-bottom:10px;}  #yiv1451324842 #yiv1451324842ygrp-mkp .yiv1451324842ad { padding:0 0;}  #yiv1451324842 #yiv1451324842ygrp-mkp .yiv1451324842ad p { margin:0;}  #yiv1451324842 #yiv1451324842ygrp-mkp .yiv1451324842ad a { color:#0000ff;text-decoration:none;} #yiv1451324842 #yiv1451324842ygrp-sponsor #yiv1451324842ygrp-lc { font-family:Arial;}  #yiv1451324842 #yiv1451324842ygrp-sponsor #yiv1451324842ygrp-lc #yiv1451324842hd { margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}  #yiv1451324842 #yiv1451324842ygrp-sponsor #yiv1451324842ygrp-lc .yiv1451324842ad { margin-bottom:10px;padding:0 0;}  #yiv1451324842 a { color:#1e66ae;}  #yiv1451324842 #yiv1451324842actions { font-family:Verdana;font-size:11px;padding:10px 0;}  #yiv1451324842 #yiv1451324842activity { background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}  #yiv1451324842 #yiv1451324842activity span { font-weight:700;}  #yiv1451324842 #yiv1451324842activity span:first-child { text-transform:uppercase;}  #yiv1451324842 #yiv1451324842activity span a { color:#5085b6;text-decoration:none;}  #yiv1451324842 #yiv1451324842activity span span { color:#ff7900;}  #yiv1451324842 #yiv1451324842activity span .yiv1451324842underline { text-decoration:underline;}  #yiv1451324842 .yiv1451324842attach { clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}  #yiv1451324842 .yiv1451324842attach div a { text-decoration:none;}  #yiv1451324842 .yiv1451324842attach img { border:none;padding-right:5px;}  #yiv1451324842 .yiv1451324842attach label { display:block;margin-bottom:5px;}  #yiv1451324842 .yiv1451324842attach label a { text-decoration:none;}  #yiv1451324842 blockquote { margin:0 0 0 4px;}  #yiv1451324842 .yiv1451324842bold { font-family:Arial;font-size:13px;font-weight:700;}  #yiv1451324842 .yiv1451324842bold a { text-decoration:none;}  #yiv1451324842 dd.yiv1451324842last p a { font-family:Verdana;font-weight:700;}  #yiv1451324842 dd.yiv1451324842last p span { margin-right:10px;font-family:Verdana;font-weight:700;}  #yiv1451324842 dd.yiv1451324842last p span.yiv1451324842yshortcuts { margin-right:0;}  #yiv1451324842 div.yiv1451324842attach-table div div a { text-decoration:none;}  #yiv1451324842 div.yiv1451324842attach-table { width:400px;}  #yiv1451324842 div.yiv1451324842file-title a, #yiv1451324842 div.yiv1451324842file-title a:active, #yiv1451324842 div.yiv1451324842file-title a:hover, #yiv1451324842 div.yiv1451324842file-title a:visited { text-decoration:none;}  #yiv1451324842 div.yiv1451324842photo-title a, #yiv1451324842 div.yiv1451324842photo-title a:active, #yiv1451324842 div.yiv1451324842photo-title a:hover, #yiv1451324842 div.yiv1451324842photo-title a:visited { text-decoration:none;}  #yiv1451324842 div#yiv1451324842ygrp-mlmsg #yiv1451324842ygrp-msg p a span.yiv1451324842yshortcuts { font-family:Verdana;font-size:10px;font-weight:normal;}  #yiv1451324842 .yiv1451324842green { color:#628c2a;}  #yiv1451324842 .yiv1451324842MsoNormal { margin:0 0 0 0;}  #yiv1451324842 o { font-size:0;}  #yiv1451324842 #yiv1451324842photos div { float:left;width:72px;}  #yiv1451324842 #yiv1451324842photos div div { border:1px solid #666666;height:62px;overflow:hidden;width:62px;}  #yiv1451324842 #yiv1451324842photos div label { color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}  #yiv1451324842 #yiv1451324842reco-category { font-size:77%;}  #yiv1451324842 #yiv1451324842reco-desc { font-size:77%;}  #yiv1451324842 .yiv1451324842replbq { margin:4px;}  #yiv1451324842 #yiv1451324842ygrp-actbar div a:first-child { margin-right:2px;padding-right:5px;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg { font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg table { font-size:inherit;font:100%;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg select, #yiv1451324842 input, #yiv1451324842 textarea { font:99% Arial, Helvetica, clean, sans-serif;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg pre, #yiv1451324842 code { font:115% monospace;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg * { line-height:1.22em;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg #yiv1451324842logo { padding-bottom:10px;}  #yiv1451324842 #yiv1451324842ygrp-mlmsg a { color:#1E66AE;}  #yiv1451324842 #yiv1451324842ygrp-msg p a { font-family:Verdana;}  #yiv1451324842 #yiv1451324842ygrp-msg p#yiv1451324842attach-count span { color:#1E66AE;font-weight:700;}  #yiv1451324842 #yiv1451324842ygrp-reco #yiv1451324842reco-head { color:#ff7900;font-weight:700;}  #yiv1451324842 #yiv1451324842ygrp-reco { margin-bottom:20px;padding:0px;}  #yiv1451324842 #yiv1451324842ygrp-sponsor #yiv1451324842ov li a { font-size:130%;text-decoration:none;}  #yiv1451324842 #yiv1451324842ygrp-sponsor #yiv1451324842ov li { font-size:77%;list-style-type:square;padding:6px 0;}  #yiv1451324842 #yiv1451324842ygrp-sponsor #yiv1451324842ov ul { margin:0;padding:0 0 0 8px;}  #yiv1451324842 #yiv1451324842ygrp-text { font-family:Georgia;}  #yiv1451324842 #yiv1451324842ygrp-text p { margin:0 0 1em 0;}  #yiv1451324842 #yiv1451324842ygrp-text tt { font-size:120%;}  #yiv1451324842 #yiv1451324842ygrp-vital ul li:last-child { border-right:none !important; } --> <!--~-|**|PrettyHtmlEnd|**|-~--><\/div>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been having a lot of rants about Cucumber of late, as it&#8217;s the new shiny thing for agile teams.\u00a0 Does anyone else have issues with it?\u00a0 I&#8217;ve asked all of my programmer friends to convince me of its worth, and they&#8217;ve all failed so far.\u00a0 I&#8217;ve not seen it adding any value above building [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4,27,32],"tags":[108],"class_list":["post-538","post","type-post","status-publish","format-standard","hentry","category-agile","category-agile-testing","category-ruby","category-systems-thinking","tag-cucumber"],"_links":{"self":[{"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/posts\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":4,"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/posts\/538\/revisions"}],"predecessor-version":[{"id":592,"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/posts\/538\/revisions\/592"}],"wp:attachment":[{"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/media?parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/categories?post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.software-testing.com.au\/blog\/wp-json\/wp\/v2\/tags?post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}