Comprehensive test management solution for complex challenges.
Software Testing in the past and now
How it all began: A brief look back at the history of software testing
1. short review
*How it all began: A brief review of the history of software testing.
📖 In his work "The Art of Software Testing", Glenford J. Myers interprets the term Software Testing as follows: "Software Testing is the process of running a program with the intention of finding errors."
"Software Testing is the process of running a program with the intention of finding errors [in it]." Myers gave this definition of the term "Software Testing" as early as 1979. In our first blog post of our series "Software Testing in the past and today" we give a brief overview of Software Testing and its development since the 1950s.
Software testing, of course, did not evolve in a single day; a lot of time and sweat brought testing to where it is today. Testing gurus like Hetzel and Dave Halprin divide the history of software testing's development into five significant eras:
1️⃣ Debugging Phase:
This period began in the early 1950s when there was little distinction between testing and debugging. The focus was solely on fixing bugs. At that time, developers wrote codes, and when an error occurred, they simply analyzed and corrected in the appropriate places. There was neither a testing concept nor dedicated tester. Nevertheless, Charles L. Baker finally managed to separate testing from debugging once and for all in 1957 in his review of Dan McCracken's work "Digital Computer Programming".
2️⃣ Demonstration Phase:
So, according to Baker's theory, people knew exactly how testing was different from debugging, and in the period from 1957 to 1978, testing finally became a completely independent process. So, during this period, the main goal of software testing was to ensure that all software requirements were met. Such requirements were, for example, "A web application that displays a list of only 10 products." So testers made sure that only 10 products were displayed. This quickly failed due to the likelihood that the more testing you did, the less likely it was that they would find a bug. The concept of negative testing was not practiced at that time.
3️⃣ Destruction Phase:
1979 to 1982, the focus was mainly on cracking the code and finding the bugs in it. It was Glenford J. Myers who made and introduced the separation of debugging from testing in 1979, although his main focus was on what he called breakage testing. ("A successful test case is one that detects an undiscovered bug.") Breakage Testing sought to make real the software engineering community's desire to separate basic development activities such as debugging from verification. For example, a tester would test software in such a way as to cause a bug (e.g., entering letters into a field that only accepted numbers). However, at this stage, there was no concrete approach to fixing the bug.
4️⃣ Evaluation Phase:
1983 to 1987 then focused on evaluating and measuring software quality. Testing was used to increase confidence in how the software worked. Testing was done until one reached an acceptable point where the number of detected errors was reduced. This was mainly achieved through very extensive software testing.
5️⃣ Prevention Phase:
1988 to 2000, there was finally a new approach. Testing focused on proving that software met its domain-specific requirements by having tests detect bugs or eliminate them. Codes were divided into testable and non-testable. Thus, a testable code had significantly fewer bugs than a non-testable. At this stage, identifying the testing techniques themselves became the key to success.
In the early 2000s, new testing concepts such as Test-Driven Development (TDD) and Behavior Driven Development (BDD) emerged. We will tackle these in upcoming articles.
The year 2004 brought a major revolution in testing with the advent of test automation tools and frameworks like Selenium. Likewise, API testing with tools like SoapUI marked another milestone in testing history. We will also discuss this in more detail in the coming blogs. Finally, the current testing era is moving towards testing tools for artificial intelligence (AI) and cross-browser testing with tools like SauceLabs, Browserstack etc.
2. 7 Trends in Software Testing 2022
*Revolution in Software Testing: 7 trends that will fundamentally change software testing.
QA (Quality Assurance), or Quality Assurance, has long since ceased to be about just finding bugs and errors; QA has become a far more complex technical philosophy that includes, among other things, evaluation of a product idea (evaluation), behavioral predictions, analysis of opportunities (opportunities) and threats (threats).
2022 promises to be a dynamic and exciting year. We expect some fascinating new testing trends, models and strategies to come into circulation in 2022. In this article, we'll give you a compact and concise look at some of these trends that we can look forward to in the coming year. If you are a software tester, QA subject specialist or just have a keen interest in software testing, this post should be at the top of your reading list.
1️⃣ Testing Internet of Things (IoT):
IoT is emerging as an extremely dynamic and fast-growing concept in the technology space. It is an integration of vast networks: devices, people, processes and technologies that collect and share data over the Internet. According to a research report by Gartner, there will be 25 billion Internet-connected devices by the end of 2021, compared to nearly half that amount still in 2019, with about 14 billion devices. This is why IPv4 was switched to IPv6 a few years ago, as IPv4 would have only been able to supply 4.3 billion devices with addresses. These figures clearly show the growing interest in the IoT sector, especially in healthcare. A new IoT strategy will be extremely necessary, especially in the coming year, to protect all software vulnerabilities from potential threats and ultimately to ensure stable data security. Accordingly, the demand for professional and experienced software testers is increasing enormously. They perform testing and ensure security, data integrity, performance, compatibility, usability and authenticity, monitor delays, etc. For this reason, it is in order for QA teams to expand their knowledge and further develop their capability to soon become sought-after professionals in IoT testing.
2️⃣ QAOps (QA & DevOps):
Today's ever-advancing digital world requires faster release of applications with minimal quality degradation. QAOps is the combination of QA & DevOps. In the past, QA's role was limited to testing application software. Now, in turn, it plays a critical role in all phases of software development. DevOps is about Operations and Development, subject matter experts working together to maintain the entire software lifecycle. DevOps encompasses a set of software development processes that focus on fixing bugs, making features, and dealing with frequent updates. QAOps is gaining traction in software testing trends because it enables extensive automation of these processes and greatly improves workflows between IT operations, software development and QA. QAOps enables software testing using the Continuous Integration (CI)/Continuous Delivery (CD) pipeline, rather than the QA team working on it separately. In short, QAOps follows two principles:
🅰️ Perform testing and QA processes using CI/CD to achieve high quality and fast software delivery to the customer.
🅱️ QA specialists work in parallel with the development team for faster time to market.
3️⃣ Scriptless Test Automation:
Test automation is clearly on the rise with rapid web development. Manual testing alone is no longer sufficient to meet current software development requirements. A new trend in so-called scriptless test automation is already widely practiced by leading software IT companies in the industry sector to maximize the scalability of testing. It helps software testers and developers to execute their test cases automatically without having to think much about the code. Companies that follow this trend achieve faster results within a short period of time with scriptless test automation. Most IT companies are striving to introduce this type of automation into their testing processes.
4️⃣ Customer Experience and Usability Testing:
The global pandemic and its aftermath have impacted software testing, among other technology areas. In particular, it has forced QA professionals to pay more attention to customer experience. As the audience of software products grows, the product itself becomes more diverse. More and more people are using new products for the first time, and that's precisely why it's important to ensure that users with different levels of technical expertise can understand how this or that feature works.
5️⃣ Big Data Testing:
Applications that are based on huge amounts of consumer data should be analyzed and tested regularly. Healthcare, finance, banking, retail, and telecom sectors are constantly dealing with Big Data. Therefore, the demand for Big Data testing will continue to grow. The specificity of Big Data testing is to verify the success and accuracy of data processing, but not every single part of the software product. QA specialists use commodity clusters and other subject-specific support tools to accomplish this task.
6️⃣ Blockchain Testing:
The most promising among market technologies, blockchain functions as a database not only for the Bitcoin system. Blockchain technology, which is gaining more and more reputation worldwide, is already used for supply chain management, food, logistics system and other industries, for example. Its mission is to provide the highest level of security for any economic transaction. Therefore, the IT market is in urgent need of QA specialists with accurate domain know-how who are able to provide professional testing services.
This year, many companies have been forced to fundamentally rethink their QA strategy in order to operate more efficiently and gain a competitive advantage in the coming 2022. Software testing is a constantly evolving field. Adopting new technologies on the cusp of transforming this industry will give many companies a tremendous advantage over their competitors who do not. However, this does not mean that the company will bear all the risk of implementing the technology alone.
✅ The andagon follows industry best practices and is the German leader in adopting the latest trends in software testing, providing our customers with unprecedented speed and flexibility. Write to us to learn how we can support you on your journey. ✅
3.Top 7 most important skills of an aspiring software tester today.
Getting closer to the profession of "software tester".
Believe me when I tell you that it is not that difficult to acquire professional skills that are important for a software tester? Today, we are going to show you a list of 7 most important skills that will help you develop in the field of Software Testing and get an in-demand job or possibly take the next step in your career.
Almost every employer expects their potential candidates to have these 7 skills, which are divided into two types: 🅰️ Technical Skills and 🅱️ Soft Skills.
I'm sure you know that software tester job descriptions often preferably specify a degree, years of relevant work experience, familiarity with certain databases, and other technical skills. Soft skills usually don't appear until the bottom quarter of the description, or even under the "Other Skills" category.
🅰️ Technical Skills
As a software tester, first and foremost, you need technical skills to understand how a particular system or technology works, apply testing tools, participate in the testing process, and write detailed reports. Here are some of the Technical Skills that you should acquire first and foremost when choosing Software Tester as a career.
⚠️ Note: The first two skills are actually nothing more than technical knowledge that you can easily acquire on your own.
1️⃣ Systems Development Life Cycle (SDLC)
Systems Development Life Cycle, or SDLC, describes the phases in the development of high quality software with optimized design, from the initial study to the maintenance of the finished software. SDLC defines all the tasks involved in planning, building, testing and deploying a software (or even hardware) product.
2️⃣ Testing Process
The software testing process means the evaluation of the software itself and all components connected with it, in order to detect and eliminate possible errors.
Basically, there are two ways to perform such software testing: manual testing and automated testing. Which one is ultimately chosen depends on the overall project requirements, budget and the expertise of your team.
Manual Testing:
In this process, testers use the software like an end user and look for possible errors or bugs. Their responsibility is to manually execute all test cases without using any automated tools.
Automated Testing:
Here, the name says it all. One uses automated tools to execute the testing process. This helps to keep the manual effort and thus the time spent on the entire software testing as low as possible, as well as to improve the efficiency and effectiveness of the process.
It is not easy to understand the testing process immediately as a newcomer. Therefore, we recommend taking a basic course in Software Testing beforehand.
3️⃣ Testing tools and testing technologies.
A software tester should basically feel confident in using testing tools and testing technologies. Without this confidence, it becomes difficult to get the desired job, especially if such a professional have previously worked in a completely different career field. Nowadays, there is a wide range of software testing tools. Don't worry! You don't have to master every single one. However, knowing the most commonly used tools at least once can be quite useful:
📌 Automated Testing Tools (Selenium, Watir, and Ranorex):
These are used to basically test the individual functions of the software automatically, which helps to perform many tests efficiently in a short period of time.
📌 Agile Testing Tools (JIRA):
You should know these tools if you work for a company that uses Scrum methodology in the course of software development.
📌 Load Testing Tools (jMeter, LoadRunner):
To be used for load and stress testing.
📌 Test Management Tools (aqua, DrivT):
These types of tools are especially needed for project management, resource testing, recording test results and reporting.
Quite apart from mastering such testing tools, it is important to understand the various testing technologies themselves. For this, it can be useful to read topic blogs, visit tech news sites or look for the latest IT posts in forums. Google's technology trends are a good place to start for this.
Follow industry leaders on social networks like LinkedIn and Twitter.
Join tech communities on Reddit, Telegram, Slack, etc. These communities offer group discussion opportunities that you can participate in yourself to learn industry news and share ideas with others.
4️⃣ Documentation and reporting.
The main task of a software tester, in a nutshell, is to timeboxed analyze the software and look for bugs. After that, as a software tester, you create reports and documents with stakeholders to present what bugs you have uncovered and how you basically evaluate the software functions. For this reason, a software tester benefits from good documentation and reporting skills in any case.
In fact, no one cares how many test cases a software tester performed throughout the day. What counts in the end is the final result. So the report should be as precise and concise as possible. This is where aqua clearly helps a software tester.
🅱️ Soft skills
When reading a job description for a software tester, one thing you will notice very quickly is a long list of technical requirements and desired experience in the IT industry. Soft skills probably seem to get short shrift here, when in fact they are just as important as Technical Skills. From the very first minute of a job interview, you'll be judged on these very soft skills, whether you're applying for a manual software tester or blazing a trail as a test automation engineer.
The next parts of this post will take you through the most important soft skills for an aspiring software tester.
5️⃣ Communication.
Testers need to be able to communicate with team members, developers, and other stakeholders. Different projects mean different people with different personalities, perspectives, and requirements. No matter who you are, you should have excellent communication and interpersonal skills to effectively express your opinion and thereby overcome difficult situations. The following soft skills are particularly noteworthy here:
📌 The ability to ask questions:
Asking the right questions and knowing when to ask a question and when it is better not to is a true art that requires years of experience. So the rule is: When in doubt, always ask.
📌 The ability to listen:
You should also actively listen to uncover specifics that you might have otherwise missed. There is always room for improvement and potential to grow.
📌 Persuasion:
Developing it is particularly difficult because this skill also requires a lot of life experience above all else. It is therefore so important for clearly demonstrating errors to product owners and software developers. One thus ensures that bugs can be detected and fixed in time, and risks mitigated accordingly.
6️⃣ Critical Thinking
Critical thinking helps a prospective software tester to improve his or her own quality of thinking, for example, in the evaluation of ideas and all decision-making processes.
__❗Software testing basically means thinking critically about the software❗ __.
It is called critical thinking when you systematically doubt something even though all the "signs" indicate that everything is fine. When you get to work with the help of critical thinking, you strengthen your conviction all the more.
After all, bugs don't show up and say "Here I am" - they like to hide. So, for each test, you should consider what questions will drive your evaluation strategy: Am I testing within scope? What am I not testing? What should I focus more on? If you want to become an excellent tester, learn to think like one.
7️⃣ Organizational skills.
As a tester, you have to convince your colleagues that there is a bug in the code, monitor the application, and identify bottlenecks. There just aren't enough hours in the day to get all that done, let alone in the week when you're bogged down with so many projects, staying up late as a result, and having to get up early to catch up on work.
🗓 Even if you create a master's thesis plan, no matter how brilliant, and try to plan your time effectively, every day brings new challenges and thus messes everything up again. With this in mind, it's important to hone your organizational skills, get to know how to prioritize your tasks, say no to the unimportant, and also keep your emotions under control. So, if a software tester stays organized, he can save a lot of time throughout the project process.
5️⃣ Test-driven development 🆚 Behavioral-driven development.
*TDD and BDD easily explained and what a front-end developer should know about it.
Most developers are familiar with the so-called Test-driven development (TDD), but Behavior-driven development (BDD) is again often misunderstood, while it is just the evolution of test-driven development. The fact is that both approaches have advantages and disadvantages that must be clearly considered.
In this article, we will take a closer look at TDD and BDD, examine the differences, and look at how they can work together.
BDD is actually merely an extension of the TDD approach. However, they are designed for different purposes and different tools are used to implement them depending on the approach. Different teams may well interpret these concepts differently, and confusion often arises.
❓What is the difference ❓?
TDD is well suited for unit testing, i.e. testing the function of individual modules themselves. BDD - for integrations (i.e. to check how individual modules work with each other) and e2e testing (i.e. to test the system as a whole).
TDD: In TDD testing is immediately implemented in codes, in BDD the steps are usually described in a language that can be understood by everyone, not just developers.
TDD: In TDD, tests are written by the developers themselves. BDD requires the skills of different team members. Typically, test cases (steps) are described by a manual tester or analyst and implemented in code by a test automator. Typically, front-end developers work with testers to describe the steps and the test code is written by the front-end team.
✅ Summary: TDD checks the functionality of individual features, whereas BDD checks user scripts.
❓And what does this look like in an example ❓.
Let's take a simple problem. We create a form in which the age and weight of a pet (for example, a dog) is entered, and the daily amount of food (in g) is given as a response.
🔍 Solution approach according to TDD:
- We write a test in which we check whether the function getCatFood() returns the desired values in different situations. The unit test is written here before implementing the logic.
- Check if the tests failed (the test fails first because the code is not present).
- Writing the function code very simply - so that the tests work out
- Check if the tests were correct
- In this step, we can work on the code itself and its effectiveness. The code can be reshaped and changed at will, since we now have tests that will almost certainly tell us that we got it wrong somewhere. It is important to understand here that the so-called refactoring without the unit tests would be very risky, since a code that works once may contain an error after refactoring. In addition to efficiency, according to experts, a much more important aspect of refactoring is the goal of writing code that is simpler and easier to understand. This ensures that less code with errors is written during development.
- Repeat all the above steps again
🔍 Solution approach according to BDD:
- Process starts with the user opening the form.
- We test the numbers that the form returns
- We enter different values, e.g. 10-20
- Check (in this case, click on the Submit button and check the value)
- The test was correct if the result on the form matches the "correct" values
- Then we describe this history with a special syntax (depending on the tool used).
For example: Function: Calculation of the amount of feed. Scenario: If valid parameters are entered, the correct answer is displayed
If I enter in the form... the age 5 years and the weight 5 kg, *then the amount of food 500 g will be displayed to me *.
Finally, these steps are implemented in the code.
❓ I am a front-end developer, why do I need this❓.
The ability to test codes is an uncanny advantage for a front-end developer because ...
📌 you think about all the details before implementation, it helps to get your mind off the code and spot incomprehensible things within the technical task at an early stage.
📌 The approaches likewise help to establish communication between different team members: Developers, testers, managers, etc.
📌 Bugs in the code are caught earlier, and the earlier a bug is detected, the cheaper it is to fix it.
📌 In addition, there are significantly fewer round-trip transitions from developer to tester, which means tasks get to sales faster and there is less need to switch between tasks
📌 The manual testers are relieved, because regression testing is a very tedious process. If everything is covered with Automated Tests, it is basically enough to simply describe the test cases, the code can be written by a test automator or a developer.
📌 It is easier to perform refactoring.
6. 4 best tools for test automation.
Overview of the 4 most effective tools that every professional tester should know.
There are a variety of test automation tools on the market that are used to test different aspects related to an application or software. Automation tools are not only used to simplify the testing process, but also to make the testing mechanism itself more efficient. Organizations generally often opt for a particular tool according to their testing and business goals, budget and capabilities of the testing teams. So, depending on these criteria, the decision may lead to either a licensed tool or an open source tool.
That said, there are some in-demand tools on the market that every tester and developer should keep in mind for test automation. Although the list is much longer, in our opinion, here are the top 4 (both open source and licensed tools) among them.
1️⃣ EggPlant
EggPlant is a test automation tool and is known among testers for its wide range of features that allow them to test the functionality and performance of a developed application across devices and operating systems. The tool works in any programming language with one or more scripts where users create test scenarios on multiple devices and operating systems.
It can also be deployed and run in Linux, macOS X and Windows operating systems and offers integration with application lifecycle management software such as HPE Quality Center, IBM Rational Quality Manager and Jenkins.
Eggplant is immensely popular among testers as it provides developers and testers, softwares to create, plan, program and run automated tests on various mobile platforms.
2️⃣ Selenium
Selenium enjoys great popularity among the testing community and is one of the most popular open source test automation tools. This tool is mainly implemented for testing web and mobile applications. Selenium is very popular for several reasons: first of all, as an open-source tool, it does not incur any upfront costs and can be downloaded with all its features absolutely free of charge. Support for the tool is free, and consists of a community of testers and developers.
Selenium allows you to run software tests in multiple browsers at the same time, which clearly makes it a favorite for many tester teams. While this tool has its own script, that shouldn't stop you from using it in other languages. Developers/testers can use Selenium with any other language they are familiar with - C#, Java, JavaScript, PHP, Python and others. Among others, it integrates effectively with popular tools such as Hudson, SauceLabs, Selenium-Grid, QMetry and others. These and many more such advantages make Selenium one of the test automation tools preferred by testers.
3️⃣ Ranorex
Apart from being cost-effective, Ranorex's license enables effective testing across desktop, web, and mobile applications as it seamlessly integrates with current testing environments and can be customized via a variety of standard programming languages. The tool's ease of implementation and use in particular makes it popular with testers.
Ranorex also tests the functionality of the application with the required input from both the tester and the developer, and promotes distributed testing to identify bugs. Ranorex has been implemented in both larger and smaller organizations and also supports technologies such as .NET, Winforms, WPF, Java, SAP, HTML5, Flash, Flex, Silverlight, iOS, Android, Windows Apps (Native/Hybrid) and many more.
The main advantages of Ranorex are:
✔️ that it allows integration of Selenium WebDriver with Ranorex Studio,
✔ Client applications cannot be tested with Selenium, but they can with Ranorex.
✔️ it provides the ability to access Selenium with Ranorex tools,
✔️ it provides plug-in free web testing for all major platforms and browsers,
✔️ it provides a more streamlined test suite structure and offers JUnit compatible reports with improved WPF plug-in.
4️⃣ LeanFT
The HPE Lean Functional Tool - LeanFT was presented to the public during HP Discover in Las Vegas in June 2015. It is a powerful and easy-to-use functional test automation tool with additional features to deliver effective continuous delivery and test automation results for Agile project implementation and DevOps. It is a robust yet broad functional testing solution designed specifically for Continuous Testing and Continuous Integration.
The tool is applicable in functional, regression and service testing and helps developers and testers to collaborate effectively during the development process of high-quality softwares and applications. The tool automates testing processes with an integrated visual user experience that combines manual, automated and framework-based testing in one IDE.
HPE LeanFT helps automate user actions in web or client-based applications. Moreover, this tool creates and executes tests on Mac, Linux or Windows platforms. It is considered a developer-friendly framework that helps create robust and reusable Selenium tests with its tools - Object Identification Center and Objects Locators and Utilities. If implemented properly, the tool can help increase quality levels and save costs.
Test automation or Testing Automation needs to be carefully planned and implemented. Of course, this list of our 4 most popular automation tools by far does not include all possible tools.
ℹ️ andagon is a leader in software test automation and has built a solid and loyal customer base over decades not only nationwide but also worldwide. We, the andagonaten team form strategic partnerships and extend the potential benefits to our customers to optimize testing and cost efficiency. Write to us and let's work together on your next test automation project. ➡️ https://www.andagon.com/