Friday, 22 May 2020

Redefining DevOps Software Testing in a Socially-distanced World


Covid-19 has hit the global economy very hard. With people being forced to quarantine themselves and maintain social distancing, the new normal of working remotely has taken center stage. However, digital companies have quickly adapted to the new development or mode of working and shown the world how things can be kept operational even when everything is closed. In fact, digital technologies have become the enabler in allowing people to work remotely even during such disruptions. Amid calls for maintaining social distancing and following a ‘work from home’ model, enterprises can keep the SDLC up and running. To do so, they may adopt DevOps software testing and focus on embracing a culture of collaboration and learning.
The best part is that DevOps specialists can work remotely by accessing tools from the cloud. They can ensure any Business Continuity Plan to run unhindered. The Covid-19 is unprecedented in the sense that in earlier times, disaster management was about fixing a site or two that had gone down. But now, the situation demanded the entire IT architecture to be shifted to the cloud and every employee to work remotely. The concept of DevOps, an enhanced model of Agile, is underpinned on conducting daily team meetings and collaboration. In such meetings, plans are made, reviews of last work are taken, and any new challenge is acknowledged. The entire meeting is conducted among co-located employees using tools like whiteboards. However, with Covid-19 led social distancing norms being the order of the day, teams offering DevOps testing services are falling back on cloud-based IT automation tools. Before discussing how DevOps can help enterprises in dealing with the crisis borne out of a socially-distanced world, let us know what it is all about.
What is DevOps?
An acronym for Development and Operations, the methodology is an enhancement of the Agile model of software development. It aims at improving communication and collaboration between the two business units by streamlining and automating the SDLC. DevOps combines practices, cultures, tools, and processes to scale the enterprise’s capability to deliver products or services at quick speeds. Here the thrust is on continuous development, testing, integration, and delivery of products after taking feedback from the end-customers. DevOps is all about refining a software product continuously to ensure it remains trendy and addresses the needs of the customers. Also, with security playing a key role in any software product, every process, team, or department within an organization should be accountable in implementing the same by following DevSecOps.
What is DevOps software testing?
It follows the Agile way of software testing where QA works alongside development in pre-arranged sprints. Here, a code is tested and integrated to another module in the development phase itself by using automation. To redefine DevOps quality assurance in a socially-distanced world, there should be a change in approach, especially from the DevOps testing specialists. There are as follows -
# Teamwork: In such times when you are on your own (literally) and do not have the neighbour’s desk to ‘consult,’ you should focus more on documentation. Before going about any job, be clear about the requirement(s) and write clear messages for your peers and superiors to understand. If earlier, little transgressions were overlooked due to quick and better monitoring, now the same can lead to a logjam.
# Continuous Integration: DevOps is all about automating the testing process for obtaining optimum results. While working remotely, a CI pipeline should be in place developed by DevOps engineers, DevOps specialists, or anyone with the knowledge and experience in enabling DevOps test automation. The tester should feed the code in the CI pipeline to run the required tests. The test automation software within the CI pipeline should test if the code conforms to the established protocol. Such a pipeline would give results in quick time, be the code written by you or someone else.
# Continuous Deployment: After the code transitions through the CI pipeline, it is time to merge your code. So, your job seems to be done and deployment remains the job of the Ops team. The latter needs to get the same back into production. So, instead of relegating the job to the Ops team, why not make a seamless process wherein both Development and Operations work in synchrony? So, in addition to building a CI pipeline, one must create a CD pipeline as well. The pipeline will ensure the code fed into the CI pipeline enters production. In doing so, you can automate the process by setting up metrics and take care of bugfixes, future feature development, and more automation, among others.
Conclusion
The pandemic has created an unprecedented situation where the entire software development, testing, and delivery process needs to be executed from remote locations. In such a distributed environment, DevOps can be embraced by enterprises to make the process streamlined, responsive, and resilient.

5 Reasons why you shouldn't Skip Software Testing and QA



The fact that today’s world is driven digitally is underpinned on the functioning of the software and hardware architecture. To ensure every piece of software performs to its optimum capacity and meets its objectives, strict implementation of software testing and QA is required. However, enterprises have been found to give short shrift to software application testing to enable faster time-to-market and reduce cost. That this approach is inherently faulty and delivers poor customer experiences seems to be lost on many key stakeholders. Before getting into what the absence of software testing and QA can lead to, let us understand what software quality assurance testing is all about.
What is software quality assurance testing?
It is testing various aspects of the software code to check if they are performing to their optimal level and delivering the expected results. It ensures the software is stable, reliable, responsive, high performing, secure, and delivering the best user experience. So, the benefits of conducting software application testing are
·       Ensuring the software remains bug-free and qualitatively superior
·       Enhancing the customer experience
·       Streamlining the value chain
·       Ensuring continuous improvement to the software
·       The product reaching the market fast and at optimum cost
·       Boosting customer satisfaction, productivity, and efficiency
·       Enterprises staying competitive and improving their bottom lines
Types of software quality assurance services
Overall, the testing can be classified into two types - functional and non-functional testing
Functional testing: This type of testing checks the functional requirements of an application and focuses on the expected outcomes. Here, the internal parts of the software are ignored. The examples are
·       Unit testing
·       Integration testing
·       Sanity testing
·       System testing
·       Regression testing
·       Smoke testing
·       Interface testing
·       Beta or acceptance testing
Non-functional testing: In this type of software testing and QA, the readiness, response time and attributes like throughput are tested to check if they are quick enough to meet the business requirements. The examples are
·       Performance testing
·       Stress testing
·       Load testing
·       Localization testing
·       Volume testing
·       Security testing
·       Compatibility testing
·       Recovery testing
·       Install testing
·       Reliability testing
·       Usability testing
·       Compliance testing
Why is software testing important?
The software development process can allow bugs or glitches to become part of the code even with the best of measures and intentions. It is therefore important that the same should be tested rigorously in all aspects before being released to the end-customer. The process of development and testing has evolved right from the waterfall method to Agile and DevOps. In the waterfall method, software used to be tested manually only after they were developed and integrated. This approach had a lot of issues like being extremely time-consuming and generating poor-quality output. The manual way of implementing a software quality assurance strategy is not foolproof, especially while conducting regression testing. Manual testing can lead to fatigue and the possibility of errors being overlooked. Thus, even after the waterfall method of testing, a lot of glitches remained within the software causing quality issues.
To overcome the inadequacies of the waterfall method, Agile and DevOps were instituted where testing is made part of the build pipeline. A code after being built is directly tested for errors and fixed in a process called a sprint. Also, test automation is made part of the testing process wherein repetitive testing like regression is done with a better success rate. With DevOps, the testing process has been made almost perfect with all stakeholders (Development and Operations) made part of the value chain.
Thus, software testing identifies and fixes errors in the early part of the development process. The final product becomes qualitatively superior and delivers better customer experiences. Also, it lowers the maintenance cost and prevents customers from suffering consequences on account of hidden bugs.
5 reasons for not skipping software testing and QA
Software quality assurance testing is an important part of the software development process and should not be looked as a costly or time-consuming proposition. It has become essential in today’s milieu where staying competitive can only be ensured by delivering customer delight. The top 5 consequences of skipping testing are:
1.     Breach in information security: The security of data is of prime importance given the soaring rate of cybercrime. In the absence of security testing, the inherent vulnerabilities in the software remain unidentified. These can be easily exploited by hackers leading to a data breach. So, any software quality assurance company should verify if the communication channels and databases within the software or outside are properly encrypted. If not, the customers can end up losing sensitive personal and/or financial information to hackers.
2.     Increased cost of maintenance: The resident glitches in software can cause quality issues at the level of customers. The feedback, when goes back to the production pipeline, would entail extra effort and cost to first identify the glitches causing the quality issues and then fix them.
3.     Loss of customer confidence: This is arguably the biggest consequence a brand or enterprise can suffer on account of bad software. As customers have plenty of choices before them, they will discard any software with glitches. Further, since the whole objective is about acquiring customer confidence, lack of testing can leave the software vulnerable and subject to breakdowns or plagued by performance issues.
4.     Non-compliance with industry regulations: The industry and regulatory bodies have established many protocols such as PCI DSS, HIPPA, SOX, and GLBA, which need to be complied with. These protocols ensure the software upholds a minimum level of performance and quality. If not, the enterprises delivering such software can fall foul with such agencies and invite penalties, censure, lawsuits, or an outright ban.
5.     Loss of brand value: When customers lose confidence in a software product due to frequent quality issues, they reject the application. Then it becomes a challenge for the enterprise to earn their confidence back, which is time and cost-intensive.
Conclusion
Software testing is about conducting a set of activities and verifying if various aspects of the software match the expected results. In the absence of testing, hidden glitches will remain unidentified leading to bad customer experiences. In a day and age where competition is intense, delivering bad customer experiences could turn suicidal for any enterprise.

Friday, 8 May 2020

Things to Consider While Testing Financial Applications



One of the reasons why digital transactions using mobile devices have become such a rage is their convenience in handling financial payments. Whether it is the paying of utility bills, doing online shopping, booking movie or airline tickets, or paying for the tickets in a concert, app-driven financial transactions are here to stay. At the core of such services are the financial applications, which manage processes having an interface with money. These applications store, manage, process, or analyze financial data and information. Since so much is underpinned on the successful functioning of these applications, financial application testing becomes critical. And with cybercrime rearing its ugly head every now and then, the stakes are really high. If statistics are to be believed then around 4.1 billion data breaches were reported in 2019 and 71% of them were motivated by financial gains (Source: Varonis). No wonder the global spending on cybersecurity is expected to touch a humongous $133.7 billion by 2022 (Source: Gartner.)

So, with financial applications becoming complex and multi-layered, cybercriminals too have upped their ante. They are using new methodologies and technologies to hack into such systems and steal sensitive data. It appears they are one step ahead of the law enforcers unless, of course, testing financial applications is made an integral part of the development of such software. A multi-tier financial application allows concurrent user sessions to a large number of users. Further, it is integrated with various APIs of third-party applications, regulatory websites, trading accounts, and payment gateways, among others. Since so many integrations generate complex workflows and value chains, they are needed to be tested rigorously. So, when it comes to testing financial applications, factors like performance and security are critical. As a greater number of customers are using financial applications for making transactions on the go, Fintech companies are looking to set up secure platforms to deliver superior customer experiences.

Factors to consider while testing financial apps

Financial services testing should follow an end-to-end methodology to test various aspects such as Business requirements and banking workflows, Functional testing, Security testing, Data accuracy and integrity, Concurrency, Performance testing, & User experience.
·       Business involvement: The test specialists should collaborate with the business analysts and other stakeholders to understand the business requirements of the application. The collaboration or interaction could be with several subject matter experts within the organization as the application might have integrations with other domains. For example, a financial application may have integrations with segments such as bill payments, credit cards, loan payments/disbursal, trading, and transfers, among others. The business requirements and deliverables ought to be analyzed by specialists testing financial applications, development leads, and business analysts to obtain optimal testing results.
·       Domain understanding: Given the various domain interfaces of a financial application, the test specialists should understand and possess adequate knowledge about them. The knowledge could be about the type and scope of testing - UI, security, load, stress, or functionality or aspects like brokerage, working procedures, or banking, among others. The testers by knowing the respective domains can write better test cases and simulate user actions to obtain better test results.
·       Impact analysis: It is about analyzing how the changes made to the application can impact other aspects of the application. This calls for a calibrated regression testing involving automation. This way the team authorized to conduct BFSI testing can identify the affected areas of the application and get them fixed. Here, the application is tested selectively by reusing the already executed test cases.
·       Functional testing: This type of banking application testing exercise requires access to all source codes and architecture to identify and fix glitches and vulnerabilities. The typical test activities comprise preparation and review of test cases and their execution. The testing includes application testing, integration testing, regression testing, and user acceptance testing.
·       Security testing: Usually financial application security testing is conducted at the end of both functional and non-functional testing. However, with cybercrime raising its ugly head every now and then, security testing cannot be left or considered as ‘just another type of testing.’ In fact, according to DevSecOps, it should be the responsibility of every sinew, process, function, or department of an organization. So, apart from looking at the resident vulnerabilities and glitches, the testing should ensure the application adheres to the industry regulations related to security like PCI.
·       Performance testing: As more people are using such applications, they need to be tested for load and stress thresholds. It will help make the application robust, scalable, and resilient thereby ensuring better load management.

Conclusion
As financial services are expanding into new territories and gaining new customers, the need to foster efficiency, security, and risk management become apparent. By embarking on a massive testing exercise, financial institutions can ensure the success of such applications and secure customers against any security breach.

Developing a Robust Salesforce Testing Strategy



Quality remains the fundamental element in the success of any organization, let alone a digital one. With digital technology playing a discerning role in improving the quality of our lives, ensuring the quality of such technology is of primary importance. This calls for software application testing and fixing the bugs early in the development (and testing) cycle. The enterprises of today are increasingly using CRM or ERP solutions to manage operations and other processes seamlessly. Salesforce is one such CRM software suite, which along with SAP, Oracle, and Microsoft, is witnessing a steady growth in its adoption. The reasons for the popularity of Salesforce can be attributed to its ease of customization, implementation, flexibility, and scalability. Further, Salesforce is leveraged by the industry in managing leads, contacts, clients, and opportunities. However, not everything is hunky-dory when it comes to implementing the software. For starters, everyone’s concurrence is necessary and the objectives of business need to be clearly defined. Thereafter comes Salesforce testing.

Why test Salesforce?
Since codes can play a critical role in integrating various business processes and functions within an organization, they need to be tested for Salesforce. Salesforce testing would ensure the underlying codes are performing, reliable, and qualitatively superior. The test validates the customizations and configurations done to the software to develop a quality product. The product in the form of software ought to support the client’s business processes. There are two types of testing in a Salesforce testing framework - manual and automated.
In manual Salesforce testing, the application is tested manually with focus on regression, system, integration, and functional testing. However, Salesforce automation testing is about validating the software using a test tool like Selenium.

How to develop a robust Salesforce testing
A business needs to work on automating salesforce application testing to get the best results. However, the steps to validate the applications developed on Salesforce are as follows:
·       Business objective: The various CRM features of Salesforce should be aligned with the business objectives. The main purpose of developing and implementing a tool on Salesforce should be understood by the testers. To cite an example, by knowing the purpose of automating the sales process, one can formulate a robust testing strategy.
·       Test case scenarios: While creating a Salesforce testing framework make a list of the possible test case scenarios and exceptions. The list should also contain the expected outcomes for each test case scenario and action. Based on the same, the test data need to be collated for each scenario.
·       Test drive: The Salesforce platform comes with a program called ‘pre-release trial,’ which allows the testing of any application before entering the production area. Since this is not linked to the production area there would not be any danger of manipulating the real-time data. This gives an ideal opportunity to check various applications if they meet the expected outcomes.
·       Functional testing: To ensure maximum test coverage and enhance the quality of the code, testers should go for rigorous Salesforce functional testing. This will help them validate various functions from the users’ perspective.
·       Test management:While conducting tests, the testers should ensure the application, function, or feature is in alignment with the operations or business objectives. Therefore, the test results should be checked against the reference data to ensure quality.
·       UAT testing: With Salesforce automated testing, care should be taken to conduct User Acceptance Testing (UAT). This way glitches or vulnerabilities inherent in the software can be identified and fixed before the software is released into the market.
·       Maintaining test records: This is the most crucial aspect of Salesforce testing as it offers stakeholders a dashboard to understand any underlying issues with the software. Whether it is Salesforce automation testing or manual testing, test records help administrators to identify, understand, and mitigate risks. The records document various failure scenarios and help in further escalation to responsible persons to fix the issues.

Conclusion
Implementing a successful test strategy for Salesforce can help businesses to identify the bottlenecks or glitches and streamline their operations. Since a lot is at stake, the applications developed on the platform should be thoroughly tested for various parameters. It is only after following a successful Salesforce testing that organizations can remain competitive.



Friday, 1 May 2020

Why you cannot have DevOps without Test Automation



The rapid adoption of digital technologies by enterprises to stay nimble, competitive, and quality-driven has given digital transformation wide currency. The process facilitates decision-making and allows organizations to innovate, accelerate the time to market, and be responsive to customer needs. The world of today is for those enterprises that can quickly turn an idea into a consumer product or service, absorb feedback from the market and customers to refine the product/service and relaunch it. This is where DevOps can help such organizations in terms of offering continuous development, innovation, integration, and deployment.

Fixing glitches with DevOps testing strategy
To stay on the right side of customer preference, enterprises must roll out software updates on a trot, which is not easy by any stretch of imagination. This is because every update needs to be tested across devices, operating platforms, frameworks, geographies, and networks. If the DevOps approach is not right in executing the process of development, testing, and deployment, the inherent glitches can prove to be costly. In many cases, in a bid to be ahead of the curve, enterprises do not give testing its due.

In other words, products or their updates are often launched without letting them pass through a stringent QA pipeline. The consequences of such quick deployment without adequate testing may manifest themselves in various ways. These may include the quality of product taking a beating, regulatory bodies subjecting such organizations to censure and penalties, and customers taking a flight to the competitors. So, with business reputation at stake, enterprises are well-advised to follow a strong DevOps approach and identify/fix glitches quickly in the pipeline.

DevOps and Test Automation
When it comes to the DevOps specialists discussing key elements that go into a Continuous Integration (CI) or Continuous Delivery (CD) pipeline, they mostly talk about code repositories or CI servers. Interestingly, DevOps test automation finds less mention in the rarefied circles where strategies are planned. This is despite the DevOps test automation being considered an integral part or medium to achieve outcomes like CI and CD. DevOps specialists majorly focus on aspects like integration and deployment of the software thereby giving test automation a miss. This can be self-defeating and invariably goes against the grain of DevOps philosophy where QA forms an integral part along with Development and Operations. Does this mean these specialists are more tuned into the manual testing aspect while leaving test automation altogether? The probable answer would be the ingrained belief in some DevOps experts about the efficacy of manual testing. This would not have raised any hackles until the advent of continuous delivery chains.

Why test automation for DevOps?
The two outcomes of DevOps - CI and CD means the development pipeline should deliver quality products quickly and consistently. Besides, the products should be upgraded periodically based on market feedback. This means products should be tested for glitches early in the SDLC instead of later to save cost and time. And what better way to achieve the same than by implementing test automation in DevOps QA.

Faster test outcomes: Test automation can be implemented by writing a test script on a tool. The code in development is put through that script and checked for expected outcomes. Any deviation is noted and investigated for possible errors. This is way faster than manual testing where QA specialists find repetitive testing frustrating and have a tendency to miss errors.

Consistent results: Consistency in QA means the software behaves on expected lines throughout the delivery pipeline. Test automation can validate the code for variables at different stages and mitigate the chances of human errors.

Ease with regression testing: When a major update is implemented, certain types of tests like usability testing are performed manually. However, when the variables are more and the software needs to be checked across devices, operating systems, browsers, geographies, and networks, then automatic testing takes the cake. It can work non-stop and check for deviations or non-compliance.

Human resources utilization: During manual testing scarce human testers are deployed in tasks that require constant attention. Further, to avoid boredom arising out of conducting repeated testing, QA testers can give certain tests a miss. Imagine the type or number of glitches escaping the test dragnet and later ruining the user experience. However, with test automation, repetitive testing can go unhindered wherein scarce human resource can be deployed for better activities.

Conclusion
In today’s age of fast software releases, quality can be ensured through a smooth DevOps-led pipeline ensuring CI and CD. However, achieving consistency in testing and pre-empting issues like cybercrime are underpinned on implementing DevSecOps and enabling a culture of quality control at every step of the way.