<?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: a1qa testing lab</title>
    <description>The latest articles on DEV Community by a1qa testing lab (@a1qa_testing).</description>
    <link>https://dev.to/a1qa_testing</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%2F185502%2F07e1fa3b-2509-42ad-9ee8-899644bd7ef3.jpg</url>
      <title>DEV Community: a1qa testing lab</title>
      <link>https://dev.to/a1qa_testing</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/a1qa_testing"/>
    <language>en</language>
    <item>
      <title>Get more value with DevOps: the evolving role in test automation</title>
      <dc:creator>a1qa testing lab</dc:creator>
      <pubDate>Fri, 02 Aug 2019 14:40:47 +0000</pubDate>
      <link>https://dev.to/a1qa_testing/get-more-value-with-devops-the-evolving-role-in-test-automation-4jgc</link>
      <guid>https://dev.to/a1qa_testing/get-more-value-with-devops-the-evolving-role-in-test-automation-4jgc</guid>
      <description>&lt;p&gt;Over the past decade, companies worldwide and across every vertical have implemented DevOps and Agile methodologies to launch flawless solutions that can satisfy the needs of consumers.&lt;/p&gt;

&lt;p&gt;Now there’s no longer a demand for adopting DevOps practices – instead, the focus is on refining this methodology and continuously improving the efficiency of this process. Most enterprises want to enhance the delivery process and provide stability and security during production.&lt;/p&gt;

&lt;p&gt;This approach irrevocably leads to the integration of test automation into a CI/CD pipeline, speeding up the feedback, and improving collaboration among teams.&lt;/p&gt;

&lt;p&gt;In this article, we will briefly focus on the role of test automation in DevOps, moving from the discussion of the optimal SDLC model to the ongoing processes of this methodology.&lt;/p&gt;

&lt;h2&gt;Waterfall vs. hybrid model&lt;/h2&gt;

&lt;p&gt;A short while back, enterprises used to develop their solutions entirely based on the classical Waterfall model with checks being conducted after the development stage.&lt;/p&gt;

&lt;p&gt;Let us explain why this won’t always play out. Imagine you are planning to build a huge billing solution that has at least 1,000 subsystems, and every month, a new version is to be released. It is implied that you must test the system and make sure everything is working smoothly (including all 1,000 subsystems).&lt;/p&gt;

&lt;p&gt;But what if you added a new functionality a week ago? Now, you must check the whole software, which might take weeks, months, or even more.&lt;/p&gt;

&lt;p&gt;Examples like this show that nowadays, there’s a huge demand in meaningful approaches to make development processes quicker, more clear-cut, and controllable, DevOps (and &lt;a href="https://www.a1qa.com/blog/understanding-agile-testing-6-questions-answered/"&gt;Agile&lt;/a&gt;) being among them.&lt;/p&gt;

&lt;p&gt;According to the World Quality Report (WQR) 2018-19, companies are adopting the best of Agile methods and combining them with Waterfall model advantages (for example, clear definition and documentation of the total project scope) to build a convenient hybrid approach. It allows the PMO to improve results for long-term projects and more effectively address risks and uncertainty.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/2iv5rcg127tip92gduhe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--b3SqVEW1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2iv5rcg127tip92gduhe.png" alt&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://www.capgemini.com/service/world-quality-report-2018-19/"&gt;&lt;/a&gt;&lt;a href="https://www.capgemini.com/service/world-quality-report-2018-19/"&gt;https://www.capgemini.com/service/world-quality-report-2018-19/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In conformity to the WQR, the methods of organizing testing responsibilities (between Agile and non-Agile ones) show that the hybrid model is preferable for most companies.&lt;/p&gt;

&lt;h2&gt;Reach to DevOps Determined but do not get Distracted&lt;/h2&gt;

&lt;p&gt;What we want to highlight in this article is the &lt;a href="https://www.a1qa.com/blog/how-devops-is-changing-software-testing/"&gt;DevOps practice&lt;/a&gt;. Now the use of this approach is increasing by leaps and bounds, as everyone can see the value it brings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/w31y271ety02bpgg0mre.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fYf-NRJx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w31y271ety02bpgg0mre.jpg" alt&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://www.gartner.com/smarterwithgartner/8-steps-to-get-devops-right"&gt;&lt;/a&gt;&lt;a href="https://www.gartner.com/smarterwithgartner/8-steps-to-get-devops-right"&gt;https://www.gartner.com/smarterwithgartner/8-steps-to-get-devops-right&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is extremely important to automate at all stages of DevOps pipeline simply by starting from the application code development.&lt;/p&gt;

&lt;p&gt;This tendency is proved by the latest IDC report concerning DevOps. Over a quarter of the DevOps Determined organizations (these statistics are based on the recent study of 420 large European enterprises) have the attitude to “automate everything”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/fgsa6j45stc732dcvfks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--roJ-e27j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/fgsa6j45stc732dcvfks.png" alt&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source: &lt;a href="https://www.microfocus.com/en-us/assets/application-delivery-management/the-journey-to-becoming-devops-determined"&gt;&lt;/a&gt;&lt;a href="https://www.microfocus.com/en-us/assets/application-delivery-management/the-journey-to-becoming-devops-determined"&gt;https://www.microfocus.com/en-us/assets/application-delivery-management/the-journey-to-becoming-devops-determined&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In a DevOps environment, the main objective is to deliver applications at a faster pace with the assurance of quality. This methodology is rapidly changing the way in which the companies approach software development using continuous application updates.&lt;/p&gt;

&lt;p&gt;DevOps incorporates four basic ongoing processes: &lt;strong&gt;continuous delivery, continuous testing, continuous integration, and continuous monitoring.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The manual mode of checks conducted significantly slows down the process. To get the full benefits of DevOps practices, organizations have to smoothly integrate test automation into their CI/CD pipeline. It is almost the only way to ensure that releases occur at both high frequency and comply with the paradigm, “Quality at Speed”.&lt;/p&gt;

&lt;p&gt;The benefits the enterprises get in this case are manifold: cost reduction on maintenance and upgrades, standardization of processes, bringing isolated teams (dev, QA, and operations) together, and many more.&lt;/p&gt;

&lt;h2&gt;What to know about continuous testing&lt;/h2&gt;

&lt;p&gt;Now let us have a closer look at the techniques that are typically implemented in a DevOps effort that we consider among the most significant ones.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
&lt;strong&gt;Continuous delivery (CD)&lt;/strong&gt; is a technical practice used to shorten development cycles, reduce the risks and costs of releases, and provide software adjustments at any given moment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CD becomes possible due to the existence of continuous testing (CT).&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
&lt;strong&gt;Continuous testing&lt;/strong&gt; is the process of executing frequent and thorough checks aimed at mitigating business risks throughout the SDLC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CT largely depends on test automation (as it is an essential part of the delivery pipeline) but is different from it.&lt;/p&gt;

&lt;p&gt;To make continuous testing practice improve the overall product quality, one has to build four pillars to support it: ensure code quality, ascertain that the code can pass the environments without manual intervention, be certain the created features are correct, and, finally, make sure that the best user experience is delivered.&lt;/p&gt;

&lt;p&gt;It is important to understand that automation itself does not enable continuity in testing, but it helps assess the risks and reduces them. Continuous testing turns the application into a constantly deliverable one, as adjustments made can be reliably deployed at any given moment.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
&lt;strong&gt;Continuous monitoring&lt;/strong&gt; is used to evaluate the health of the software as it runs in the production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By collecting, ordering, and analyzing logs and metrics in real time, one can understand how the app amendments and updates influence the customer experience of the software product. With continuous monitoring, you can actively control the services, mitigate risk issues, find the source of problems, and take corrective actions.&lt;/p&gt;

&lt;p&gt;By employing all these concepts, QA engineers can find defects at the early SDLC stage (which are considerably less expensive to fix) – it can help decrease issues related to the delivery schedule.&lt;/p&gt;

&lt;h2&gt;Bottom line&lt;/h2&gt;

&lt;p&gt;DevOps approach has become the common practice for many enterprises who want to deliver superior customer experiences and achieve other multi-purpose business values.&lt;/p&gt;

&lt;p&gt;To achieve these goals, one must understand the role of test automation in one’s work. &lt;a href="https://www.a1qa.com/services/testing_automation/"&gt;Choose the optimal test automation solution&lt;/a&gt; that can be seamlessly integrated in the project, keep the release cycles short, continuously get feedback, organize the team's progress, and get the expected results or even more!&lt;/p&gt;

</description>
      <category>testautomation</category>
      <category>softwaretesting</category>
      <category>devops</category>
      <category>testing</category>
    </item>
    <item>
      <title>How to ensure the quality of smart contracts in decentralized applications</title>
      <dc:creator>a1qa testing lab</dc:creator>
      <pubDate>Fri, 26 Jul 2019 13:53:39 +0000</pubDate>
      <link>https://dev.to/a1qa_testing/how-to-ensure-the-quality-of-smart-contracts-in-decentralized-applications-1j9a</link>
      <guid>https://dev.to/a1qa_testing/how-to-ensure-the-quality-of-smart-contracts-in-decentralized-applications-1j9a</guid>
      <description>&lt;p&gt;The world of blockchain and cryptocurrency is associated with decentralization.&lt;/p&gt;

&lt;p&gt;Decentralization eliminates the need of one authority and ensures the privacy of information and security as nobody fully owns the system. What makes it work is cryptography – a method of using digital signatures in a form so that only those network members, who should get access to some piece of data, will get it.&lt;/p&gt;

&lt;p&gt;The possibilities of blockchain application are endless – and this is where decentralized apps come into play.&lt;/p&gt;

&lt;p&gt;Before we dive into testing specifics, let’s quickly go over some important terminology.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A smart contract is a small piece of code that codifies some business logic and is executed on blockchain in a decentralized manner. Their main functions are to store rules, facilitate rules, and self-execute rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Smart contracts help gain autonomy and independence from third-party structures and have other advantages like reliability, security, accuracy, and profitability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A decentralized application (DApp) is the application that is run on a peer-to-peer network of computers and doesn’t depend on a central computer to send or get information. Decentralized apps use the power of blockchain and smart contracts to enforce the agreement between the parties.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today, the most popular way to run a dApp is to install it on a blockchain platform (for example, on Ethereum).&lt;/p&gt;

&lt;p&gt;And the world of business eagerly embraces smart contracts and dApps. We see now and will see in the nearest future numerous applications in IoT, financial sector, etc. The prime examples include games, DEX (Decentralized Exchange), NFT marketplaces, gambling, blockchain-powered social networks, DeFi (Decentralized Finance).&lt;/p&gt;

&lt;p&gt;Now let’s focus on how to test smart contracts and how to ensure high quality of decentralized applications.&lt;/p&gt;

&lt;p&gt;WHY IS IT IMPORTANT TO TEST SMART CONTRACTS?&lt;/p&gt;

&lt;p&gt;Due to the immutable nature of blockchain, if any errors are found, a new contract should be created because you cannot change the code of the blockchain-based contract.&lt;/p&gt;

&lt;p&gt;Even a minor logic error in the application can lead to serious damages and costs.&lt;/p&gt;

&lt;p&gt;For example, a couple of years ago, Parity Ethereum MultiSig wallets were blocked due to smart contracts vulnerabilities. Could the blockage have been avoided? Yes. By means of thorough testing.&lt;/p&gt;

&lt;p&gt;WHAT TO TEST IN A SMART CONTRACT?&lt;/p&gt;

&lt;p&gt;Testing is the best way for using the contract in different situations without any risk to make sure it’s working properly.&lt;/p&gt;

&lt;p&gt;Here are the aspects of the smart contract that a professional QA team should take into consideration:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Digital signature process&lt;/li&gt;
&lt;li&gt;Contract code and its changes fixation&lt;/li&gt;
&lt;li&gt;Subject of the contract&lt;/li&gt;
&lt;li&gt;Tools that are necessary for the contract execution&lt;/li&gt;
&lt;li&gt;The terms of execution in the contract code&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Errors and sending messages&lt;/li&gt;
&lt;li&gt;Changes made in the status of contracts and their balance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HOW TO TEST A SMART CONTRACT?&lt;/p&gt;

&lt;p&gt;It is necessary to simulate, consider, and predict all possible conditions in the logic of each particular contract:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what events should be initiated&lt;/li&gt;
&lt;li&gt;what techniques should be fulfilled&lt;/li&gt;
&lt;li&gt;how the status and balance of the contract are changing&lt;/li&gt;
&lt;li&gt;to whom and how to transfer funds&lt;/li&gt;
&lt;li&gt;what error to cause&lt;/li&gt;
&lt;li&gt;check the author of the message and the correct use of the current time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, when executing a smart contract in Ethereum, it is important to take into account the limitation and spending of the Gas value – the cost of a smart contract that Ethereum has set for its launch.&lt;/p&gt;

&lt;p&gt;All this is closely related to the security of the agreements. The situation when means are “stuck” in the contract differs just a little from the situation when they are stolen.&lt;/p&gt;

&lt;p&gt;Otherwise, the general principle is similar to testing any other code: a set of reference method calls is created in a predefined environment, for the results of which the expected results are written.&lt;/p&gt;

&lt;p&gt;HOW TO MAKE SOFTWARE TESTING PROCESS MORE EFFECTIVE?&lt;/p&gt;

&lt;p&gt;In the case of smart contracts, the most accurate solution would be to conduct &lt;a href="https://www.a1qa.com/services/testing_automation/" rel="noopener"&gt;automated testing&lt;/a&gt;, especially considering a large number of validations during contract processing, rapid growth, and network transformation, the presence of multiple nodes and their various combinations.&lt;/p&gt;

&lt;p&gt;Often for defect-free work, BDD (Behavior-Driven Development) practices are used, which allows creating documentation and examples along with tests. We have talked more about BDD &lt;a href="https://www.a1qa.com/blog/building-test-automation-solution-in-behavior-driven-development-environment/" rel="noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;THE ELEMENTS OF DAPP&lt;/p&gt;

&lt;p&gt;Let’s move on to testing of decentralized applications.&lt;/p&gt;

&lt;p&gt;Any application consists of the back-end and front-end. The back-end of a decentralized application has its own internal code that is run on the blockchain.&lt;/p&gt;

&lt;p&gt;DApp also consists of an intermediate – a browser (for example, Toshi) or extensions for it (like MetaMask). Front-end can be written in any programming language.&lt;/p&gt;

&lt;p&gt;TESTING A DAPP&lt;/p&gt;

&lt;p&gt;Although blockchain applications are still an innovative industry, many methods applied for testing other products are also suitable for dApp checks.&lt;/p&gt;

&lt;p&gt;Apparently, there is no difference between a dApp and any other application. Many users do not even know that they have an application where the back-end is a blockchain.&lt;/p&gt;

&lt;p&gt;In our previous &lt;a href="https://www.a1qa.com/blog/specifics-of-testing-blockchain-based-apps/" rel="noopener"&gt;article&lt;/a&gt;, we have discussed the characteristics of functional, security, and load testing that help improve the quality of blockchain-based products.&lt;/p&gt;

&lt;p&gt;In addition, other testing types should be carried out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart contracts testing&lt;/li&gt;
&lt;li&gt;Transaction testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This type of testing includes checking the number of operations performed, service fields, hash validity, time of the transaction, data about the author and recipient, and many more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;End-to-end testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This type of testing is performed to ensure the quality of all the functionality of the application and verify that all dApp parts work as intended. As a rule, end-to-end checks try to predict the behavior of a real user and how he/she will interact with the system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integration testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;QA engineers will check the interaction of modules and systems as a whole and the integration of data that reaches the back-end from the front-end.&lt;/p&gt;

&lt;p&gt;Read more about the tools to test blockchain-based apps in our previous &lt;a href="https://www.a1qa.com/blog/specifics-of-testing-blockchain-based-apps/" rel="noopener"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ON A FINAL NOTE&lt;/p&gt;

&lt;p&gt;Getting rid of centralization has become a dominant trend and has greatly changed workflows in many industries. First-gen P2P networks, DAO, and other dApps, smart contracts, EOS (decentralized OS) are just beginning to gain momentum and determine what the Internet will be like in the future.&lt;/p&gt;

&lt;p&gt;Early software testing can help business successfully take advantage of seamless blockchain technology, solve longstanding problems, and take their place in the competitive market.&lt;/p&gt;

&lt;p&gt;No doubt, blockchain is a powerful technology. But not being tested properly, it can cause troubles you may not think about.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>qa</category>
      <category>softwaretesting</category>
      <category>qualityassurance</category>
    </item>
  </channel>
</rss>
