<?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: Laura Cressman</title>
    <description>The latest articles on DEV Community by Laura Cressman (@flaurida).</description>
    <link>https://dev.to/flaurida</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%2Fuser%2Fprofile_image%2F282992%2F762249a7-9f87-413c-977f-70f664ac5572.jpeg</url>
      <title>DEV Community: Laura Cressman</title>
      <link>https://dev.to/flaurida</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/flaurida"/>
    <language>en</language>
    <item>
      <title>3 End-to-End Testing Pitfalls to Avoid</title>
      <dc:creator>Laura Cressman</dc:creator>
      <pubDate>Wed, 04 Aug 2021 16:19:55 +0000</pubDate>
      <link>https://dev.to/flaurida/3-end-to-end-testing-pitfalls-to-avoid-1d0h</link>
      <guid>https://dev.to/flaurida/3-end-to-end-testing-pitfalls-to-avoid-1d0h</guid>
      <description>&lt;p&gt;After being in the quality assurance (QA) space for several years, we've had a front row seat to how companies big and small do QA. The main area of struggle we see is with setting up automated end-to-end tests. End-to-end tests go through your application like a user would, to check that critical workflows like sign up aren't broken. These tests can be difficult to create and integrate into your process.&lt;/p&gt;

&lt;p&gt;If you don't have automated tests yet, getting started can feel daunting. In this guide we explore three common pitfalls companies face, and provide solutions for how to avoid them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #1: Trying to run before you walk
&lt;/h2&gt;

&lt;p&gt;We've had this conversation more than a few times now:&lt;/p&gt;

&lt;p&gt;Company: "We need to run hundreds of tests on every browser and device size on every commit."&lt;/p&gt;

&lt;p&gt;Us: "Cool! How many tests do you have now?"&lt;/p&gt;

&lt;p&gt;Company: "...zero."&lt;/p&gt;

&lt;p&gt;While it's great to aspire to running hundreds of tests on every commit, these lofty goals can paralyze companies from getting started in the first place.&lt;/p&gt;

&lt;p&gt;It's easy to get hung up on a long list of "must haves" like testing different versions of Chrome or creating preview environments for every commit. When starting from scratch, the only "must have" should be running a single test however you can. Otherwise, you risk constantly delaying your testing efforts while searching for the perfect solution.&lt;/p&gt;

&lt;p&gt;Avoid putting undue pressure on your team to build the perfect QA process upfront. &lt;strong&gt;Instead, start with the smallest attainable goal and go from there.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don't have any tests yet, create one basic test and run it only on Chrome. If you don't have a way to test every commit, run tests once a day on staging. You can always improve your process later, without sacrificing coverage today.&lt;/p&gt;

&lt;p&gt;In short, don't beat yourself up for not having your dream QA process in place. Every company has to start somewhere. The most important thing is to start at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #2: Using the wrong (or no) success metrics
&lt;/h2&gt;

&lt;p&gt;There are many ways to do QA, such as having developers write tests or using an outsourced team. Regardless of how it's implemented, you should measure the success of your QA efforts.&lt;/p&gt;

&lt;p&gt;Ultimately, QA is about providing your customers with a quality product. Automated tests check that user flows (like adding an item to the cart or logging in) aren't riddled with bugs. Therefore, a "north star" QA metric should tie into your user experience.&lt;/p&gt;

&lt;p&gt;In practice, many companies don't know whether they're doing a good job with QA. The result is treating QA like a box to be checked, rather than a way to earn customer love and gain a competitive advantage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We think the single best QA metric is user workflow coverage.&lt;/strong&gt; This means the share of common user actions (like creating a comment or changing a password) that are tested.&lt;/p&gt;

&lt;p&gt;While it's impossible to get to 100% coverage (there are infinite ways to use a site), prioritizing test cases based on what your users are actually doing keeps QA aligned with your larger business goals.&lt;/p&gt;

&lt;p&gt;Today, few companies have the tooling in place to understand the most common and most buggy user journeys. One place to start is by reviewing user data from services like &lt;a href="https://www.hotjar.com/" rel="noopener noreferrer"&gt;Hotjar&lt;/a&gt; and &lt;a href="https://www.fullstory.com/" rel="noopener noreferrer"&gt;FullStory&lt;/a&gt;. You can also use QA Wolf for this, which converts your analytics into test cases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqawolf-public.s3.us-east-2.amazonaws.com%2Fblog%2Fend-to-end-testing-pitfalls%2Fsession.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqawolf-public.s3.us-east-2.amazonaws.com%2Fblog%2Fend-to-end-testing-pitfalls%2Fsession.gif" alt="user session"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of user interactions recorded with QA Wolf&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall #3: Not treating automated testing as an engineering problem
&lt;/h2&gt;

&lt;p&gt;Automated QA can be as simple as running one test on staging. Still, it's critical to keep your team's long-term success in mind from day one.&lt;/p&gt;

&lt;p&gt;It can be tempting to do something - anything - to get QA off your plate. A common trap is to delegate automating QA to non-technical team members like interns or customer success. While these team members can contribute to an existing process, they typically don't have the skills to create a good process themselves.&lt;/p&gt;

&lt;p&gt;There are two basic parts to standing up automated QA: creating stable tests and integrating them into your process. Both involve specific engineering knowledge. Just as you wouldn't rely on a product manager to shape best practices for your React components, you should make sure to give QA the engineering attention it deserves.&lt;/p&gt;

&lt;p&gt;One manifestation of this is the rise of "no code" testing tools. Though the message is appealing (I don't have to think about QA - my intern can do it!), we have yet to see these tools work well in practice. Every site has its own quirks that only the flexibility of code can automate. No code has its place elsewhere, but when it comes to testing: just say no to no code.&lt;/p&gt;

&lt;p&gt;If you don't have the time or skills to set up a process yourself, &lt;strong&gt;find someone (internal or external) with the engineering chops to build that solid foundation.&lt;/strong&gt; Then you can invite more of your team to take QA to the next level.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We hope that this post has made getting started with testing seem less scary. All companies, including yours, are capable of taking that first step. And when you do, your customers will thank you. :)&lt;/p&gt;

&lt;p&gt;At QA Wolf, we manage QA for you by converting user analytics into automated tests. If you'd like to learn more, or just want to talk testing, you can reach me at &lt;a href="//mailto:laura@qawolf.com"&gt;laura@qawolf.com&lt;/a&gt;. 🐺&lt;/p&gt;

</description>
      <category>testing</category>
      <category>jamstack</category>
      <category>architecture</category>
      <category>qa</category>
    </item>
    <item>
      <title>Why We Open Sourced Our Entire Product</title>
      <dc:creator>Laura Cressman</dc:creator>
      <pubDate>Wed, 13 Jan 2021 23:29:59 +0000</pubDate>
      <link>https://dev.to/flaurida/why-we-open-sourced-our-entire-product-2jae</link>
      <guid>https://dev.to/flaurida/why-we-open-sourced-our-entire-product-2jae</guid>
      <description>&lt;p&gt;A little over one year ago, &lt;a href="https://twitter.com/jon_perl/status/1193726557988118530" rel="noopener noreferrer"&gt;we open sourced&lt;/a&gt; the first version of &lt;a href="https://github.com/qawolf/qawolf" rel="noopener noreferrer"&gt;QA Wolf&lt;/a&gt;, a tool to help developers create browser tests.&lt;/p&gt;

&lt;p&gt;Our goal with QA Wolf was to help developers ship confidently and improve the quality of web-based software. Since then, we've shipped over a hundred releases based on feedback from our users. ❤️&lt;/p&gt;

&lt;p&gt;Despite these improvements, we learned that QA Wolf was still too difficult to use for many developers (including ourselves). They still needed to install a Node.js package, set up CI, and become a detective to understand why their test failed. 🕵️&lt;/p&gt;

&lt;p&gt;These learnings inspired us to build &lt;a href="https://www.qawolf.com/" rel="noopener noreferrer"&gt;QA Wolf 2.0&lt;/a&gt;: an easy way to create, run, and debug tests directly from the browser. And we had an important decision to make...&lt;/p&gt;

&lt;h3&gt;
  
  
  Should QA Wolf 2.0 be open source?
&lt;/h3&gt;

&lt;p&gt;We kicked around various ideas, including open sourcing parts of the codebase while keeping others closed source. Then we asked ourselves, "what if we just open source all of it?"&lt;/p&gt;

&lt;p&gt;It sounded terrifying at first. Our minds dwelled on the possibility of someone ripping off our entire product.&lt;/p&gt;

&lt;p&gt;After the initial wave of anxiety subsided, the arguments for open sourcing came clearer into focus. We talked it over with our investors, and they agreed: the pros vastly outweighed the cons.&lt;/p&gt;

&lt;p&gt;So today we are &lt;a href="https://github.com/qawolf/qawolf" rel="noopener noreferrer"&gt;open sourcing QA Wolf 2.0&lt;/a&gt;. We are excited for you to check it out, and look forward to your feedback!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqawolf-public.s3.us-east-2.amazonaws.com%2Ffinn-code-review.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqawolf-public.s3.us-east-2.amazonaws.com%2Ffinn-code-review.gif" alt="confused dog"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Our code reviewer Finn&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is why we open sourced everything:&lt;/p&gt;

&lt;h3&gt;
  
  
  It helps build a community
&lt;/h3&gt;

&lt;p&gt;QA Wolf is built for developers who want an easy way to set up browser tests. Open sourcing allows us to meet our audience where they are, and invites the feedback we need to build a great experience.&lt;/p&gt;

&lt;p&gt;Open sourcing helps gain developers' trust. They can use QA Wolf without worrying about vendor lock-in. They can peek at the source code, and edit it for their own use case.&lt;/p&gt;

&lt;p&gt;Being open source also makes product improvements public, building confidence about the future of the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  We will move faster and build a better product
&lt;/h3&gt;

&lt;p&gt;Building in the open is scary. Someone might discover a security hole, or make fun of that gross code we wrote.&lt;/p&gt;

&lt;p&gt;We've found this to be a powerful forcing function. Having open issues motivates us to fix them faster, and we feel embarrassed if we don't show consistent progress. We also write better code knowing that anyone can see it.&lt;/p&gt;

&lt;p&gt;Finally, we will be grateful for any contributions we get from being open source. 🙏&lt;/p&gt;

&lt;h3&gt;
  
  
  Open core is a headache
&lt;/h3&gt;

&lt;p&gt;We considered adopting an "open core" model, where only some parts of the codebase would be publicly available. As we evaluated this option, we realized that it created more problems than it solved.&lt;/p&gt;

&lt;p&gt;Open core software is harder to contribute to and maintain. We would have to manage separate packages for various parts of the codebase, and no one else could contribute to the closed source code.&lt;/p&gt;

&lt;p&gt;On top of deployment headaches, we would need to constantly evaluate whether new code should be open or closed source. Having a single open source project relieves us and future developers from this burden. It also allows our community to have maximum visibility into our codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  It just feels right
&lt;/h3&gt;

&lt;p&gt;"Be open" is one of our values, and open sourcing feels like the right thing to do.&lt;/p&gt;

&lt;p&gt;When we reflect on the good things that have happened to us this year, all of them came from being an open source company. We got invaluable feedback from the very first iteration of QA Wolf. We were also able to raise a pre-seed round (more to come soon in an upcoming post!).&lt;/p&gt;

&lt;p&gt;After committing to making our source code public, we had to answer one more question.&lt;/p&gt;

&lt;h3&gt;
  
  
  What license do we use?
&lt;/h3&gt;

&lt;p&gt;We want to clarify one thing upfront: &lt;b&gt;we're still not sure we made the right decision&lt;/b&gt;. We did what we thought was best at the time to keep moving forward. In the future, our license may change based on your feedback.&lt;/p&gt;

&lt;p&gt;After studying open source licenses, we narrowed down our options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use a permissive license like Apache-2.0. This license allows people to use your code however they want, including to directly compete with your service.&lt;/li&gt;
&lt;li&gt;Use the Business Source License (BSL). This license allows people to use your code however they want, except to directly compete with your service without buying a license. Over the past few years, companies like &lt;a href="https://blog.sentry.io/2019/11/06/relicensing-sentry" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt; and &lt;a href="https://www.cockroachlabs.com/blog/oss-relicensing-cockroachdb/" rel="noopener noreferrer"&gt;CockroachDB&lt;/a&gt; have adopted this license.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We decided to pursue both options.&lt;/p&gt;

&lt;p&gt;We've licensed &lt;a href="https://github.com/qawolf/qawolf/blob/main/LICENSE.md" rel="noopener noreferrer"&gt;most folders&lt;/a&gt; (CLI and helpers, code generation and test runner) under Apache-2.0. QA Wolf 2.0 would not be possible without similarly licensed open source projects like the &lt;a href="https://github.com/microsoft/playwright" rel="noopener noreferrer"&gt;Playwright test framework&lt;/a&gt;. It's important that we give back to the community that has given so much to us.&lt;/p&gt;

&lt;p&gt;The remainder of our product is licensed under BSL. When evaluating this option, we found that &lt;a href="https://blog.sentry.io/2019/11/06/relicensing-sentry#deciding-to-re-license" rel="noopener noreferrer"&gt;Sentry's goals for licensing&lt;/a&gt; resonated with us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Anyone should be able to run [the service] for themselves or their business"&lt;/li&gt;
&lt;li&gt;"No difference between our cloud service and our open source product (no open core model)"&lt;/li&gt;
&lt;li&gt;"Minimal limitations on usage of code, as free as possible"&lt;/li&gt;
&lt;li&gt;"Protection from other companies selling our work"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our goal is to build a sustainable business around our product, and we need to have the resources to do that. BSL allows us to share our source code while giving us some protection over our work.&lt;/p&gt;

&lt;p&gt;In the future, we may license the entirety of QA Wolf under Apache-2.0. We're starting here to ensure that we get more rather than less permissive over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Thanks for making it this far. We hope you'll try &lt;a href="https://www.qawolf.com" rel="noopener noreferrer"&gt;QA Wolf 2.0&lt;/a&gt; and let us know how it goes. 🐺&lt;/p&gt;

&lt;p&gt;If you'd like to get in touch, we'd love to hear from you at &lt;a href="mailto:hello@qawolf.com"&gt;hello@qawolf.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>startup</category>
      <category>testing</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
