{"id":21047,"date":"2022-04-28T13:28:24","date_gmt":"2022-04-28T11:28:24","guid":{"rendered":"https:\/\/stage-fp.webenv.pl\/blog\/?p=21047"},"modified":"2023-02-27T10:21:00","modified_gmt":"2023-02-27T09:21:00","slug":"when-disaster-knocks-on-your-door-the-importance-of-quality-assurance","status":"publish","type":"post","link":"https:\/\/www.future-processing.com\/blog\/when-disaster-knocks-on-your-door-the-importance-of-quality-assurance\/","title":{"rendered":"When disaster knocks on your door &#8211; the importance of Quality Assurance"},"content":{"rendered":"\n<p>In my <strong>12 years of testing experience<\/strong>, I&#8217;ve come across high-risk projects many times. I&#8217;m convinced that we have always been able to steer clear of at least some issues or \u2013 in other cases &#8211; <strong>significantly mitigate their impact on the projects <\/strong>because of having the <strong>dedicated quality programming specialists onboard<\/strong>. I&#8217;m referring to both the legal and financial issues, as well as the client&#8217;s image perception externally, i.e. when the product doesn&#8217;t meet the users&#8217; expectations or leaves them disappointed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><br>A story of an efficiency<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><br>First Case<\/h3>\n\n\n\n<p>In the case of this project, we were approached by a client who already had an <strong>existing system in place<\/strong>. So the first step we took was getting to know that particular customer&#8217;s needs. That way, we were able to define the project&#8217;s objective: achieving the desired result within a given timeframe <strong>using available resources<\/strong>. <\/p>\n\n\n\n<p>The client&#8217;s existing system was associated with <strong>financial solutions<\/strong>. It had been created based on older technologies and developed for many years by various teams. Additionally, it had been passed on numerous times from one contractor to another, who all <a href=\"https:\/\/www.future-processing.com\/blog\/software-quality-assurance-why-is-it-more-important-than-ever\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Software Quality Assurance \u2013 why is it more important than ever?\">approached Quality Assurance very differently.<\/a> As a result, the code&#8217;s quality was very low, and it lacked suitable project templates, among other things. Consequently, the <a href=\"https:\/\/www.future-processing.com\/blog\/the-risks-of-neglecting%e2%80%afquality-assurance%e2%80%afactivities\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"The risks of neglecting\u202fquality assurance\u202factivities\">quality of the whole system suffered<\/a>, rendering it an obstacle to the effective implementation of business objectives. <\/p>\n\n\n\n<p>For example, the processing of some <a href=\"https:\/\/www.future-processing.com\/blog\/how-to-choose-the-best-data-solution-for-you\/\" title=\"How to choose the best data solution for you?\">data<\/a> points was measured in days. That also caused serious problems with using the software, which \u2013 in turn &#8211; significantly damaged the client&#8217;s reputation in the eyes of their end-users. Hence, <strong>improving the overall system efficiency became our highest priority<\/strong>. Its successful implementation would allow us to <a href=\"https:\/\/www.future-processing.com\/blog\/why-do-you-need-business-process-mapping\/\" title=\"Why do you need business process mapping?\">achieve the project&#8217;s main business objective<\/a>. The timeframe for achieving the desired result &#8211; improving the efficiency &#8211; was also a part of that objective. <\/p>\n\n\n    <div class=\"o-icon-box__wrapper\">\n        <div class=\"o-icon-box o-icon-box--big o-icon-box--italics m-cool-gray-light\">\n            <div class=\"o-icon-box__text f-headline-extra-big\">\n                The system was supposed to be implemented for new clients before the new tax year, so the solution had to be delivered strictly according to that implementation plan. There was no room for delays or deadline negotiations at all.            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<p>Additionally, to achieve the desired result within the given timeframe, we needed to clarify available resources in the context of the team and the tools. The team comprised a few <strong>experienced developers and QA representatives<\/strong>. Their task was to <a href=\"https:\/\/www.future-processing.com\/blog\/ensuring-clients-success-what-is-it-like-to-be-an-ad-specialist-at-future-processing\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Ensuring clients\u2019 success \u2013 what is it like to be an Analysis&amp;Design specialist at Future Processing?\">ensure that the quality of the process<\/a> and the delivered solution would be maintained at all times. The tools were chosen according to the technology the whole system was based on. It was related to the project itself. Apart from <strong>the main application&#8217;s code, verifying the tests&#8217; code was also one of the tasks<\/strong>. The tests were supposed to detect errors in the early stages of the implementation of new functionalities. <\/p>\n\n\n\n<p>Unfortunately, in the case of this particular project, they were <strong>practically non-existent<\/strong>. All verifications and validations up until that point had been carried out manually. That made everything very <a href=\"https:\/\/www.future-processing.com\/blog\/maximise-income-cut-costs-and-plan-confidently-using-data\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Maximise income, cut costs and plan confidently using data\">costly and time-consuming<\/a>, and, keeping in mind the strict upcoming deadlines, we couldn&#8217;t afford to lose more time. Therefore, our QA team was tasked with the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>developing a test approach for <strong>legacy<\/strong> type systems,<\/li><li>defining <strong>system quality indicators<\/strong> to monitor the state of the system and its quality,<\/li><li>designing and implementing tests to verify achieving <strong>the desired project result<\/strong> \u2013 improving the efficiency,<\/li><li>devising a <strong>CI\/CD<\/strong> process with emphasis on the tests,<\/li><li>designing and implementing automatic <strong>regression tests<\/strong> to assure stakeholders of the lack of regression in all areas, i.e. in terms of financial calculations.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Action plan<\/h2>\n\n\n\n<p>We spent the first few weeks drafting an <strong>action plan<\/strong>. Manual testing was not financially viable, and establishing a full framework for automatic testing was impeded by insufficient resources. Therefore, we focused on the <strong>Rich Based Testing methodology<\/strong>, recommended when time, budget, and resources are limited. Thus, we defined the business, technical and project risks. Based on all that, we were able to determine the action plan.<\/p>\n\n\n\n<p>Next, we designed a fairly unique set of tests which convinced us that the modifications in the application itself wouldn&#8217;t impact financial calculations. While creating the solution, we also carefully considered the <a href=\"https:\/\/www.future-processing.com\/blog\/a-simple-guide-to-the-roi-of-ux\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"A simple guide to the ROI of UX \u2013 what is it all about?\">ROI associated<\/a> with the automation of all the remaining process elements.<\/p>\n\n\n    <div class=\"o-icon-box__wrapper\">\n        <div class=\"o-icon-box o-icon-box--big o-icon-box--italics m-cool-gray-light\">\n            <div class=\"o-icon-box__text f-headline-extra-big\">\n                In the end, we delivered the product to the client&#8217;s satisfaction. The system&#8217;s efficiency was significantly improved.            <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<p>We were able to reduce the time needed to process some operations from a few hours to a few minutes, while also being certain that no regression was introduced to the code itself. That was possible due to the <strong>properly designed and implemented test harness<\/strong>. Ultimately, we reached the <strong>objective within the designated timeframe<\/strong>. As a result, the improved product was delivered to the clients and end-users on time.<\/p>\n\n\n\n<p>The dedicated <strong>QA specialists<\/strong> team ensured that:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>risks and dangers were well-defined, and then mitigated or eliminated,<\/li><li>the process was constantly monitored, and potential dangers were detected in the early stages,<\/li><li>efficiency was improved without the fear of regression,<\/li><li>tests to reduce the number of errors in future improvements were designed and implemented.<\/li><li>Integration is key<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><br>Second Case<\/h3>\n\n\n\n<p>In the second case study, I joined an already existing team working on a project in the <strong>transport sector<\/strong>. Its objective was <strong>transport improvement<\/strong> by introducing an innovative system to manage, analyse, and distribute permits, access points, and payments.<\/p>\n\n\n\n<p>The concept was based on<strong> micro-services <\/strong>and the<strong> integration with external suppliers<\/strong>. The project was already in the advanced stages of development with many requirements set in stone. And some micro-services were ready to be deployed. A dedicated <strong>QA team<\/strong> was not involved in the process from the start, and that situation posed a real challenge. Because of it, the existing process didn&#8217;t include the following features: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>an approach to testing at different project stages;<\/li><li>testing processes for each release;<\/li><li>best practices for test automations;<\/li><li>defining risks and taking actions to mitigate them.<\/li><\/ul>\n\n\n<div class=\"b-button\">\n            <a\n            class=\"o-button o-button--primary o-button--s o-button--icon-right o-button--arrow\"\n            href=\"https:\/\/www.future-processing.com\/software-services\/digital-transformation\/\"\n        >\n            Deliver high quality software solutions\n            <svg class='o-icon o-icon--16 o-icon--arrow '>\n            <use xlink:href='#icon-16_arrow'><\/use>\n          <\/svg>\n                            <svg class='o-icon o-icon--24 o-icon--arrow '>\n            <use xlink:href='#icon-24_arrow'><\/use>\n          <\/svg>                    <\/a>\n    <\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Testing strategy<\/h2>\n\n\n\n<p>After getting acquainted with the project&#8217;s objective, documentation, and existing code, we proceeded to establish a <strong>testing strategy <\/strong>and <strong>general approach to testing<\/strong>. <\/p>\n\n\n\n<p>The first essential deadline (and goal at the same time) was delivering the <strong>first version of the software for the meeting with the stakeholders<\/strong>. It was important to get it right \u2013 the <a href=\"https:\/\/www.future-processing.com\/blog\/can-everyone-build-a-successful-product\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Can everyone build a successful product?\">success of that event would determine the funding for the whole project<\/a>. One of the decisions we made was to invest heavily in automatic testing. The tests\u2019 role was to <strong>confirm our assumptions that every module met the client&#8217;s needs and that the integration worked properly<\/strong>. At the same time, we decided to expand the QA team to run manual tests on the already existing components. <\/p>\n\n\n\n<p>While <a href=\"https:\/\/en.wikipedia.org\/wiki\/Software_testing\" target=\"_blank\" rel=\"noreferrer noopener\">testing<\/a>, it turned out that <strong>some services returned integration defects<\/strong>, which negatively impacted the general payment calculations. This early error detection during the testing phase spared the client the cost of fixing those issues at later stages. It would have surely been much <strong>more expensive if the software had been already delivered to the clients and users<\/strong>. However, that cost could have also been reduced further had the QA team participated in the initial project phases when the testing requirements and documentation were being established.<\/p>\n\n\n    <div class=\"o-icon-box__wrapper\">\n        <div class=\"o-icon-box o-icon-box--big o-icon-box--italics m-cool-gray-light\">\n            <div class=\"o-icon-box__text f-headline-extra-big\">\n                Thankfully, we were able to quickly eliminate the detected errors and the results of our work were delivered to the client on time. Our solution&#8217;s presentation was received very positively by the stakeholders, who granted the expected funding for the project.             <\/div>\n        <\/div>\n    <\/div>\n\n\n\n<p>Consequently, we were able to pass to the next implementation phases and develop the application further.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><br>Having established a dedicated QA team, we were able to succeed in the following areas:<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>devising a <strong>strategy <\/strong>and t<strong>esting process for the project<\/strong> \u2013 from <a href=\"https:\/\/www.future-processing.com\/blog\/software-testing-project-management-2021\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Software testing project management \u2013 2022 guide\">testing new functionalities and automation<\/a> to regression tests and application quality reports;<\/li><li>designing an <strong>early error detection process <\/strong>that prevented potentially lower confidence in the product and higher costs of fixes as opposed to spotting errors in the production phase;<\/li><li>implementing <strong>QA in the requirement definition process<\/strong> to detect potential errors much quicker;<\/li><li>devising an automatic testing solution to cover both individual modules and the integration between <strong>micro-services<\/strong> and <strong>external systems<\/strong>;<\/li><li>introducing testing in the <strong>CI\/CD process phase<\/strong>, thanks to which we were provided with quick feedback on the current application status;<\/li><li>delivering high-quality software in a <strong>timely manner<\/strong>, both as a presentation for the stakeholder and later for the end customers.<\/li><\/ul>\n\n\n<div class=\"b-button\">\n            <a class=\"o-button o-button--primary o-button--s o-button--icon-right o-button--arrow\" href=\"https:\/\/www.future-processing.com\/software-services\/software-audits\/\">\n            Ensure your software&#8217;s quality\n            <svg class='o-icon o-icon--16 o-icon--arrow '>\n            <use xlink:href='#icon-16_arrow'><\/use>\n          <\/svg>\n                            <svg class='o-icon o-icon--24 o-icon--arrow '>\n            <use xlink:href='#icon-24_arrow'><\/use>\n          <\/svg>                    <\/a>\n    <\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Conclusion<\/h2>\n\n\n\n<p>The above case studies demonstrate that any team composed of <a href=\"https:\/\/www.future-processing.com\/blog\/what-is-software-audit-and-why-is-it-performed\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"What is software audit and why is it performed\">QA experts<\/a> can significantly improve the quality of the delivered software solution. While it is a fairly broad statement, here are some <strong>tangible advantages of having QA onboard your next project<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>improved satisfaction<\/strong> from the application&#8217;s end-users, <strong>time and costs savings<\/strong> in terms of potential bug fixes if they are detected early enough,<\/li><li>protecting the <strong>reputation of the client <\/strong>who is co-operating with the team on the final product,<\/li><li>avoiding <strong>missed deadlines and costs<\/strong> generated by potential delays,<\/li><li>eliminating issues related to the <strong>system&#8217;s efficiency and security<\/strong>,<\/li><li><strong>identifying risk<\/strong>s and taking appropriate actions to either <strong>mitigate <\/strong>or <strong>completely eliminate <\/strong>them.<\/li><\/ul>\n\n\n\n<p>To summarise, every software development team <strong>should always include experts <\/strong>who will ensure the <strong>highest possible quality<\/strong> of the final product.<\/p>\n\n\n<div class=\"b-cta-banner m-gradient-light\">\n            <a href=\"https:\/\/www.future-processing.com\/software-services\/software-development\/\" class=\"b-cta-banner__image-container\" data-elementclick=\"article-banner\" data-elementname=\"Deliver high quality software solutions\">\n            <img fetchpriority=\"high\" decoding=\"async\" width=\"450\" height=\"450\" src=\"https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development.png\" class=\"attachment-full size-full\" alt=\"\" srcset=\"https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development.png 450w, https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development-300x300.png 300w, https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development-150x150.png 150w, https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development-400x400.png 400w, https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development-24x24.png 24w, https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development-48x48.png 48w, https:\/\/www.future-processing.com\/blog\/wp-content\/uploads\/2021\/08\/Software-Development-96x96.png 96w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/>        <\/a>\n    \n        <a href=\"https:\/\/www.future-processing.com\/software-services\/software-development\/\" class=\"b-cta-banner__url b-cta-banner__text-container\" data-elementclick=\"article-banner\" data-elementname=\"Deliver high quality software solutions\">\n                    <div class=\"b-cta-banner__text\">\n                                                    <h3 class=\"f-headline-extra-big b-cta-banner__header\">\n                        Deliver high quality software solutions                    <\/h3>\n                \n                                    <div class=\"f-paragraph\">\n                        <p>Work with us and\u202fturn your idea into a great software solution for your company\u2019s needs.<\/p>\n                    <\/div>\n                \n                                    <div class=\"o-button o-button--primary o-button--s o-button--icon-right o-button--arrow\">\n                        <span>Let\u2019s join forces<\/span>\n                        <svg class='o-icon o-icon--16 o-icon--arrow '>\n            <use xlink:href='#icon-16_arrow'><\/use>\n          <\/svg>                    <\/div>\n                            <\/div>\n                <\/a>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>In my previous articles, I answered the question: &#8216;Why Is Quality Assurance Important in Software Development&#8217;. This time, I&#8217;ll use my own experience to describe two case studies. In both of them, Quality Assurance (QA) teams have contributed to avoiding issues and potential disasters related to delivering low-quality software.<\/p>\n","protected":false},"author":185,"featured_media":21073,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[980],"tags":[986],"coauthors":[2025],"class_list":["post-21047","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development","tag-quality-assurance"],"acf":{"reading-time":"7 min","show-toc-sublists":false,"image":null,"logo":null,"button1":{"button1_type":"","button":null},"button2":{"button2_type":"","button":null},"person":{"person_photo":null,"person_name":"","person_position":""}},"_links":{"self":[{"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/posts\/21047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/users\/185"}],"replies":[{"embeddable":true,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/comments?post=21047"}],"version-history":[{"count":0,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/posts\/21047\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/media\/21073"}],"wp:attachment":[{"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/media?parent=21047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/categories?post=21047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/tags?post=21047"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.future-processing.com\/blog\/wp-json\/wp\/v2\/coauthors?post=21047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}