<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Crank</title>
    <description>The latest articles on DEV Community by Crank (@crank).</description>
    <link>https://dev.to/crank</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1954%2Fc2c088cc-6999-4c58-bc61-d6a37bf81db9.png</url>
      <title>DEV Community: Crank</title>
      <link>https://dev.to/crank</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/crank"/>
    <language>en</language>
    <item>
      <title>The Biggest Gap in QA You've Never Heard Of</title>
      <dc:creator>Eric Peterson</dc:creator>
      <pubDate>Mon, 24 Feb 2020 19:23:27 +0000</pubDate>
      <link>https://dev.to/crank/the-biggest-gap-in-qa-you-ve-never-heard-of-3i5b</link>
      <guid>https://dev.to/crank/the-biggest-gap-in-qa-you-ve-never-heard-of-3i5b</guid>
      <description>&lt;p&gt;The developer ecosystem for test automation is huge.  Need to test your web app?  Look no further than Selenium or Puppeteer and the myriad frameworks built on top.  Is your team only responsible for the API layer?  Postman's great for automation and exploration.  Oh, your team builds mobile apps?  Appium to the rescue.&lt;/p&gt;

&lt;p&gt;What few realize is that, despite this vast ecosystem, these tools are all used to maintain quality for just a fraction of the ways in which a customer experiences a product, company, or brand: code.  Even at technology companies, code is just one piece of the customer experience pie.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where No QA Has Gone Before
&lt;/h2&gt;

&lt;p&gt;For example, the process by which a customer discovers, learns about, purchases, and renews a product is almost entirely driven by automation in many organizations.  The logic and rules for these business processes are almost exclusively architected, implemented, and maintained by people who are not developers; they are technology administrators in groups like Marketing Operations or Sales Operations.&lt;/p&gt;

&lt;p&gt;They automate these processes by purchasing, integrating, and configuring SaaS software like Salesforce, HubSpot, Tealium, and &lt;a href="https://chiefmartec.com/2019/04/marketing-technology-landscape-supergraphic-2019/"&gt;literally thousands&lt;/a&gt; more, with only minimal (and commonly no) support from developers or testers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OiV_Ty5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/df1brzyy2fvrf6s3kc3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OiV_Ty5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/df1brzyy2fvrf6s3kc3v.png" alt="Visual Programming for Business Users" width="880" height="441"&gt;&lt;/a&gt;&lt;/p&gt;
Some platforms allow business users to define their logic using visual programming.



&lt;p&gt;This shift has been accelerating as subscription-based SaaS software has increasingly become the norm over the past decade.  And on the whole, this transition has been good for everyone!  Business users are no longer beholden to limited development capacity to solve their problems, meanwhile developers are more free to work on innovation in their products.  But there are downsides too.&lt;/p&gt;

&lt;p&gt;Far from the QA rigor and influence of product and IT teams, these business technologists end up owning complex, distributed, and brittle systems that break down in emergent and costly ways.  What could be worse than a bug in a system with millions of dollars in ads and technology in front of it and the potential for lost revenue and unhappy customers behind it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing QA to The Rest of the Business
&lt;/h2&gt;

&lt;p&gt;It's with this context in mind that we built a test automation tool called &lt;a href="https://crank.run?utm_medium=referral&amp;amp;utm_source=dev.to&amp;amp;utm_campaign=biggest%20gap%20in%20qa"&gt;Crank&lt;/a&gt;.  Our goal is to empower engineers, SDETs, and QA Engineers who support these business users and interface with their technologies to close the quality gap.  (And full disclosure: we're also &lt;a href="https://www.automatoninc.com"&gt;building a business&lt;/a&gt; on top of it to empower the business users who don't have developers supporting them at all.)&lt;/p&gt;

&lt;p&gt;What is Crank?  Well, it's a BDD test automation framework for integrated SaaS.  That's a dense summary, so let's unpack it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BDD&lt;/strong&gt;: If there was ever a use-case for Behavior-Driven Development, this is it.  What better way to collaborate with &lt;em&gt;the business&lt;/em&gt; when testing something that they themselves have created?  Here's an example Scenario file that works with Crank:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;scenario&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Contact Form Lead Sync&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Proves the Contact-Us Form Works.&lt;/span&gt;

&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Given I navigate to https://example.com/contact?utm_source=ABC&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;When I fill out input[name=fullName] with Emily Doritos&lt;/span&gt; 
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;And I fill out input[name=email] with emilyd@example.com&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;And I submit the form by clicking input[type=submit]&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Then the FullName field on Salesforce Lead emilyd@example.com should be Emily Doritos&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;And the UtmSource field on Salesforce Lead emilyd@example.com should be ABC&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Finally, delete the emilyd@example.com Salesforce Lead&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Test Automation&lt;/strong&gt;: Just like developers, business technologists move fast too, so automation is key.  Crank is a CLI that can run BDD test scenarios like the one above.  You can run it locally before or after a launch.  You can install it and run it in your CI/CD pipeline.  You can schedule it via cron.  Use it however best suits your organization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MKZXq5UG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ai5km40cf1n8dn7mf3bh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MKZXq5UG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ai5km40cf1n8dn7mf3bh.gif" alt="Crank Run - Business Technology Test Automation" width="880" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Framework&lt;/strong&gt;: Crank is extensible.  It's &lt;a href="https://crank.automatoninc.com/?utm_medium=referral&amp;amp;utm_source=dev.to&amp;amp;utm_campaign=biggest%20gap%20in%20qa"&gt;built on gRPC&lt;/a&gt; to enable any developer to write action and assertion steps in any supported language (packaged in docker containers we call Cogs) for any SaaS system.  We've built out &lt;a href="https://crank.run/discover-cogs?utm_medium=referral&amp;amp;utm_source=dev.to&amp;amp;utm_campaign=biggest%20gap%20in%20qa"&gt;quite a few Cogs&lt;/a&gt; to start, but anyone can contribute to the global library of actions and assertions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight protobuf"&gt;&lt;code&gt;&lt;span class="kd"&gt;service&lt;/span&gt; &lt;span class="n"&gt;CogService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Define Cog metadata.&lt;/span&gt;
  &lt;span class="k"&gt;rpc&lt;/span&gt; &lt;span class="n"&gt;GetManifest&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ManifestRequest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;returns&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CogManifest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

  &lt;span class="c1"&gt;// Run a single assertion/action step.&lt;/span&gt;
  &lt;span class="k"&gt;rpc&lt;/span&gt; &lt;span class="n"&gt;RunStep&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RunStepRequest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;returns&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RunStepResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

  &lt;span class="c1"&gt;// Run a series of assertion/action steps.&lt;/span&gt;
  &lt;span class="k"&gt;rpc&lt;/span&gt; &lt;span class="n"&gt;RunSteps&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt; &lt;span class="n"&gt;RunStepRequest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;returns&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt; &lt;span class="n"&gt;RunStepResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;For Integrated SaaS&lt;/strong&gt;: By this, we mean two things.&lt;/p&gt;

&lt;p&gt;First, Crank is not a test automation framework for everything; you won't use it to test your product's core features, just where your product or site interfaces with other SaaS technology.  Limiting its scope in this way allows us to stay focused in an already immense problem space.&lt;/p&gt;

&lt;p&gt;Second, Crank's action and assertion steps rely on the APIs of SaaS platforms.  The Salesforce Cog, for example, exposes steps that use Salesforce CRUD APIs to alter and inspect the state of a Salesforce instance.  When you author a Scenario that spans multiple platforms, you can start to see the power in testing the complex ways in which SaaS tools interact.&lt;/p&gt;




&lt;p&gt;Think this tool might help?  &lt;a href="https://crank.run/intro?utm_medium=referral&amp;amp;utm_source=dev.to&amp;amp;utm_campaign=biggest%20gap%20in%2qa"&gt;Install Crank Now&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Don't really work with this kind of stuff?  Forward this article to a colleague who does!  Better yet, seek out those marketing and sales technologists in your company and &lt;em&gt;help them&lt;/em&gt;!  They need it.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
