Latest News

News

Gallery

Technology

Video

Recent Posts

Wednesday, April 25, 2018

Unit Testing? Consider Taking a Rain Check


Unit testing is a great way to verify software at an early stage and to ensure that modified functions are still working as specified. Unit tests can also help drive development, essentially working as a specification-by-example technique. Unit tests usually work for individual methods in a class, and for each execution of a unit, test a set up and tear down of an instance of the class of which the methods are members.
However, unit tests are not a magic wand. Many of them will typically be low-level routine tests, calling function (method) and checking the result of that function. However, if the function under test has complex dependencies, it will take more effort to create tests for it. The dependencies can be on other functions or even on other components or external services. It can also require certain values in a database and/or modifying them. The effort to establish the proper pre-conditions for a test at unit level might not be worth it.
Rather than making such a big effort, consider taking "rain checks" for certain tests. Test the aspect that can be tested immediately, but save some of thecomplex testing for later. Achieve the testinggoals by higher level tests at the level of components, services, or even the UI.
In this approach, you would analyze for a function what test situations are needed to test it. Then, you would establish the closest higher level at which those situations can be created more easily. This might often be the component level, but it could also be the UI level or in interoperability testing. In the test design for the chosen level, you make sure that the test situations for the units have been covered. This will ensure that the function at unit level has been exposed to the situations necessary to test it.
Making sure the needed situations are covered at a certain test level does not necessarily mean each function gets its own test case there. The verification can also be part of a larger comprehensive scenario. This is probably even better in most situations, so tests don't get too granular.
A major advantage of unit tests is their ability to verify code changes. They are closely related to the code and get executed whenever there are changes to that code. In a rain check approach, this link with the code must be kept intact. In the Action Based Testing method, this can be done via an entity called "test objective". Test objectives are natural language statements that can link the test cases to other items—in this case code files or functions.

Unit tests are a beneficial part of system development processes. They allow the teams to build automated verification that keeps up with the code. With a rain check approach, the advantages of unit testing can be supported by the levels of tests where it is most economical to do so. It is up to the team to decide in which cases, if any, this can make sense.
Source: Techwell

Monday, April 23, 2018

Mutation testing: How to test your tests



How good are your tests, really?
You probably spend a lot of time writing, running, and maintaining them. And having your tests all pass is a great feeling. But when I ask test authors, “How do you know your tests are robust enough?” or, “What other tests are there that you didn't think of?” they freak out.
What if there really is something missing, and the developers and testers are blissfully unaware that they're shipping time bombs to the customer? How would they know? Who is testing the tests?
What if you could figure out how good your tests were just by modifying the code so it behaves differently, to see if any tests fail? What if you could make a tiny change, run your tests, and see if they were good enough to notice that difference?
That's the concept behind mutation testing. Here's how it can help.

Welcome to the world of code mutation

Mutation testing, which got its start back in the 1960s, injects faults into your code to see how well a battery of tests can detect the change. Code changed in this way becomes a “mutation,” and the goal is to make sure that your suite of tests can “kill the mutant” by having one or more tests fail.
A code mutation is a minor change that affects the overall behavior of that code. Examples include:
·        Replacing arithmetic operators, such as switching a plus with a minus, or a plus with an increment operator, or an asterisk with a double asterisk
·        Changing logical operators, such as swapping a “>” with a “<”, or a “>=”
·        Removing a line of code
·        Setting an assignment to a hard-coded value instead of a variable
Because this type of testing requires fast feedback, it's best suited for unit tests. When you create a mutant, the battery of unit tests gets run. If even one test fails, then you have caught, or "killed," the mutant. But if all the tests pass, you can set aside the mutant code, or perhaps print it out for the user so that you can build a unit test for it later.

Choose your faults carefully

The kinds of faults you inject should highlight where you make assumptions in the code, and then in the tests. Think about a recent bug that you or a colleague fixed. There's a good chance that a symptom of that bug showed up elsewhere, even though the bug itself was further upstream in the code. Some defect probably kept getting passed along until code somewhere else didn't know how to handle it, resulting in a defect.
For example, let's say you have a method that takes in some information and then generates a small set of JSON data, such as a single array of values. If the developers are testing out a new feature, they'd likely write a unit test to confirm that the array has a certain value.
They probably wouldn't do further testing to verify that the data has the correct values or that the size of the array is correct. But these are the types of tests that will make your code bulletproof and help you detect unwanted changes sooner. Building unit tests to catch mutants is less about functionality and more about sanity. It would look for things such as:
·        No invalid or garbage data results from an operation.
·        The right data type is being returned.
·        All other pieces of data in the output are correct.
·        The correct number of items is being returned.
·        There are no rounding errors.
The mutations that you put into the code really are the kinds of things that result in actual bugs. People get in a hurry and check in code that still contains debugging artifacts, or they forget to uncomment a line of code, or they just get distracted and forget what they were doing. That's why it makes sense to inject these faults into your code. These changes will alter the overall behavior of the program in a way that can be hard to debug later.
At this point you might be scared away by the thought that you'll have to do this all manually. Actually, there are tools that make code modifications and running tests faster—Jester for JUnit, Pester for Python, and Heckle for Ruby, to name just a few. These tools modify the compiled or assembled code in memory, in real time, and not the source code. But it's important to understand the concept behind those tools so that you'll understand them when you use them later.

Why resurrect mutation testing now?

Because computing power wasn't as strong in the '60s as it is now, mutation testing fell by the wayside. Many companies couldn't do it in a way that was cost-effective; the tests would either take too long, or they required expensive equipment to perform. But today we have more computing power in our phones than in the computers of the '60s that took up entire floors in an office building. Not only do we have cheap computing power, but we also have orders of magnitude more complexity in software. You need this type of testing.
Picture a terribly complex system of 1,000 interconnected web services, each with 1,000 classes that each contain 1,000 methods. If there's one mistake in the code anywhere in the system, it will result in a bug. To come up with test cases for all of those would be impossible for an army of people, let alone one person, to perform and have decent coverage.
But that's the challenge developers and testers face today. As software's footprint continues to grow, thinking up every test case is impossible. You need something to help with that. Mutation testing can shine a light on where you need more robust unit tests, so that you can develop quality code faster.

Mutant tips and tricks

Unit testing is the best type of test to use for this because of the speed with which such tests execute. But if you mutate one method in one class in your code base, do you need to run every unit test you have?
No. Because they're unit tests, and because they target specific chunks of code, you can just run the segment of tests that touch that particular code. Mutation testing tools allow for this. Or, if you're feeling brave and want to write your own, you can include that segmentation logic in the solution.
And in an age when cloudcomputing, continuous integration, and parallel processing exist, you can mutate many such methods within classes, all at the same time, and get very fast feedback.

How to start mutating

With the technology available today, you can start a mutation-testing effort faster and cheaper than ever before. This type of testing is poised for a big comeback. Few people know about this testing method yet, but now you do. But will you implement it before your competition does?
Are you doing mutation testing, or just getting started? Share your experiences and suggestions below.
Source: TechBeacon

Does Testing Truly Improve Software?



According to Michael Bolton's thought-provoking blog post Testing vs. Checking, testing is about asking and answering the question "Is there a problem here?" This means that part of the tester’s role is to reveal problems.
Without revealing problems, there is no problem-solving, since we can't solve something we aren’t aware of. Each solved problem is one fewer problem in the software—and the software is improved each time a problem is removed.
So, improving software needs a cause (testing = revealing the problem), which then hopefully leads to an effect (development = coding the problem solution). And due to the fact that without a cause there is no effect, testing improves software. Period.
Think about waking up today. Most likely, you woke up when you heard the sound of an alarm triggered by your phone or an alarm clock. The loud sound of the alarm was the cause. Without the alarm, you probably would have overslept. In this scenario, the alarm (revealing the problem) had the effect of you waking up (coding the problem solution) at a certain time.
This is what I mean by cause and effect. It's not a single action; it's a process—a set of actions—that makes the software better. Here is part of that process:
1. Testing: Reveal the problem (done by the tester)
“I revealed a problem. Here it is.” Now, stop there. Does the product get better? No.
2. Design: Conceptualize the problem solution (done by the product owner)
“I conceptualized the problem solution. Here it is.” Now, stop there. Does the product get better? No.
3. Development: Code the problem solution (done by the developer)

“I coded the problem solution. Here it is.” Now, stop there. Does the product get better? No.
4. Operations: Release the problem solution (done by the release engineer)
“I released the software containing the problem solution. Here it is.” Now, stop there. Does the product get better? You may think so, but I argue not quite yet.
The software ultimately improves when the people for whom we build the software say, "It's better now!" This is the point where the value of the problem solution is realized.
So, the person responsible for checking in a fix is certainly not only the person who is improving the software. It's a group effort—it's the commitment of each individual that improves software.
Source: Techwell



Saturday, January 27, 2018

Study reveals tech testing concerns



A new study commissioned by CRITICAL Software has revealed that 50% of respondents believe the technology they use is properly tested.
It also found that one in two people’s technology fails them once a week, if not more.
Despite this, 98% of survey respondents stated the reliability of the technology they use is important; with 95% saying that having tech properly tested by industry experts is critical.
The study also found that people prefer to use tested technology that is proven to work over-tech that is completely new.
While 52% of people said that using the latest and newest forms of technology is important to them, 95% said that technology that’s proven to work is important.
‘Tech becomes critical to day-to-day lives’
When asked what the most important reason for technology needs to be reliable is, 61% of people identify safety or security as their main concern, with the next most important reason being ease of use (11%).
Nuno Silva, CRITICAL Software’s chief test engineer, said: “For all the awe-inspiring developments, people still seem to have concerns about the reliability of the technology we use in our lives.
“The pressure to release new technologies can sometimes come at a cost to reliability. The problem with this is that more and more technologies are becoming critical to our day-to-day lives, impacting things like safety and security, and the consequences of getting these things wrong can be catastrophic.”
95% of interviewees said that some form of safety-accreditation is important to them when assessing the reliability of tech, while 91% stated they would be concerned about using tech that had no safety accreditation.
‘Celebrity endorsement does little to persuade’
Half of the respondents also said that a high price point offers them little reassurance that an item of technology is reliable, and 615 said celebrity endorsement does little to persuade them too, suggesting that companies wanting to build trust would be better off focusing on properly testing tech and providing guarantees, evidence, and safety-accreditations.
Nuno Silva, CRITICAL Software, added: “Today, more and more technologies are being used in important systems. For example, modern cars include complex systems that are increasingly responsible for safety features and banks use advanced security technologies to protect online systems.
“As these kinds of technologies have a bigger impact on our lives, the importance of ensuring they are reliable is more important than ever.”

Wednesday, December 20, 2017

ARE DATA QUALITY TOOLS REALLY IMPORTANT FOR MY ORGANIZATION?

A data quality tool can be defined as a device that helps in the process of ensuring high-quality of data and delivery of services. If selected and used properly, these tools can greatly assist in the assessment of customer requirements by transforming a simple set of data into useful information.

Before moving on to different types of data quality tools available online, you should first understand what data quality is and how to measure it?

Today, many businesses recognize the importance of high-quality data for their success, but there are still enterprises, which are unaware of data quality. These companies end up focusing only on gathering data without paying attention to its quality management. There are businesses, which have heard the term but never tried to understand it properly and its impact on their business.

Data quality is an oft-used term in the data world. Experienced data analysts often talk about data quality to derive value from data. In simple words, data quality is the ability of a set of data to serve the intended objective of helping in a marketing campaign, understanding customer behavior etc. Only high-quality data can help your organization achieve its goals.

Let’s understand it through an example. A company has a list of 1000 customers along with the phone numbers and addresses. Now, this huge data has high chances of containing errors like spelling mistakes in names, wrong address due to change in it or multiple entries of the same customer with minor changes in name. Now correcting these errors is not possible until you use data quality tools.

How to measure data quality?

Measuring and ensuring the quality of data in organizations with so much of data across different areas is a bit difficult, but not impossible. By making a checklist, you can ensure that you have got the highest quality of data possible for the success of your business. Below given are the data quality dimensions you can include in your checklist to measure the quality of your data.

Completeness: Make sure that the critical data like customer name, contact details etc are completed first as this has a high percentage of the completeness of the data.

Validity: Check the standards and make sure the data conforms to the set standards in your organization.

Uniqueness: Make sure there is only one entry of one person or entity in the database when measured against other data sets.

Accuracy: Though 100% accuracy in a large database is not possible all the time, you should check how well it reflects the real-world person identified by it.

Timeliness: In case of sales, new product launch and another campaign to create awareness among customers, date and time have a huge impact on the data. So make sure the information can be relied upon for accuracy over a period of time.

Role of data quality tools in the maintenance of data:

Demand for easy-to-use data quality tools has increased over time. The advanced tools not just make data error-free but also enable data insight, support in contact data validation, provide a complete customer view and help in data preparation. The tools support users in maintaining the quality of database throughout their life cycle. Moreover, they also offer standard reports to help management make better decisions.  Tools have following features, which make data management hassle-free for users.

Validation

The main objective of the validation process is to regularly authenticate and verify records throughout their life cycle against given reference standards. A tool to maintain data quality should automate the validation process in its entirety.

Visualization

In order to support data administers, a quality tool must envisage the results of the validation process. It should show the information that is required to be changed in the dataset to get the preferred data quality.

Evaluation

The only responsibility for the data quality assessment is not to support the data administrators or managers with their jobs but also to offer the management an overview of the status of data maintenance. The management should be aware of the present state of data quality and the scope of improvements in it for better results.

If you want that the tools help you speed up your business process by preventing you from the tedious task of regularly monitoring and analyzing data, you should check for the above-mentioned features in the data quality tools. Carefully selected tools for data quality management can help your businesses processes throughout the lifecycle of your product.

Tips to choose the best data quality tools

To ensure that you get maximum benefits from your investment in the tools for management of data quality, you should choose them wisely. Here are some tips to help you find the most suitable tools for your business and database.

Data cleansing feature: It helps in improving the entire data management process. That’s why you should look for a data quality management tool with the feature of data cleansing.

Data Monitoring and auditing: To ensure that you get the best results in business process, look for quality management tool with data monitoring and auditing feature. If used properly, this facility can take data quality to the next level.

Vendor stability: Buy data quality management tool only from a reliable and experienced vendor. They should have a strong presence in the market along with effective customer support system.

Cost: No doubt money matters a lot; even when you have to buy data quality software. Make sure the money charged for the tools is justified through their features.

Conclusion:

There is no “one size fits all” approach to data quality management. Different business might need varied data quality tools for database management. With big data’s appetite for information growing with each passing day, it has got essential for the businesses to maintain the quality of the data through advanced tools. Data hygiene tools allow computers to crunch numbers and provide you the best information for superior customer services, higher conversion rate, customer loyalty and better customer experience.
Source: latestsoftwaretestingnews

Tuesday, December 12, 2017

New trends in agile test management

Digital transformation has changed the face of all of the industry. The software delivery model has undergone a drastic change with DevOps, agile and continuous delivery, leading these changes. Several businesses are successful in implementing agile processes to improve software delivery. But as the lines between development and operations are blurring, sprints are getting shorter, the difficulty mounts in meeting the higher expectations both for speed and quality of software deliverables.

An important and often missing link in the DevOps loop is testing. DevOps, in reality, is DevTestOps and for various teams and delivery models to be agile, test management is the vital link. Organisations need TestOps to match the pace of DevOps and by testing early and often, they gain the incremental quality benefits that bring true value to the business in terms of cost, efficiency, and continuous delivery.

In fact, the World Quality Report led by Capgemini shows that there is increased investment in the QA and Test function reported by 90% of US and 69% percent of Canadian survey participants in the past four years.

Challenges to DevTestOps
However, going agile and being agile are totally different stories and organisations face several practical challenges when trying to embrace the DevOps and agile way. Shorter sprints require better collaboration and integration, interoperability of tools. There are many gaps between conventional test management and modern Agile dev approach – with outdated tools and practices being a primary roadblock.

There are various other challenges within the software development lifecycle at every stage and communication gaps that slow its pace and weigh it down. Agile as it is practiced now, allows for delays in testing, leaving less time for testing and improvement leading to buggy releases and poor customer satisfaction. But with the Shift Left concept – the focus is on quality from day 1. Testers are part of the sprint right at the outset and prevention rather than detection is the modus operandi.

A Brand-New Approach
For Test Management to follow the Shift Left concept, it needs unified solutions, frequent test runs and more feedback. To accomplish the continuous integration and continuous delivery paradigm, continuous testing is necessary at all points within the development lifecycle and this requires a design thinking mindset and culture change. This means that developers, testers and ops teams need to reset the parameters of a traditional approach, more so when it comes to the testing processes.

The new trends in agile test management demand a fresh approach, a cultural shift and often new tools that speed up the execution.

Agile Test Management Trends Demand New Tools
Continuous integration and development and continuous testing, increased automation, behavior-driven-testing, predictive quality and prescriptive quality analytics – these are some enablers for agile test management. There is an increased focus on leveraging these disciplines and tools that help you implement them. Obviously, there are best practice recommendations for test management and how teams should be testing.

Best Practices Recommend
Focusing on collaboration and an integrated approach for test management amplifies the feedback loops and helps it to be truly agile. These are some of the other criteria:

Visibility
Traceability
Continuous integration
Behavior-driven development
Integrated toolset
Busting siloed workflows
Exploratory testing
Predictive analytics
When setting up your test management tool, it is advisable to assess your choices for a cloud-based solution. Ideally, one that allows you to set up roles and projects inside test management, provides greater visibility to your team, integrates your project management tools like JIRA with test management, lets you sync defects and test results in real time.

Configure your test management solution such that you can plug in your automation, generate API keys allowing your tool to accept automation results. Teams should be able to create or import requirements, with test coverage helping go/no-go decisions, modularity and linkability are again useful features to promote reuse and reduce authoring efforts. Exploratory testing and a comprehensive view of manual and automation testing – enable you to make better quality decisions. Also, creating test suites by release and platforms lets you track if the quality improves build by build.

The fresh approach to agile test management can get your delivery up to speed. It requires a fresh perspective and culture shift, and new tools that enable your agile development and testing efforts.

Source: softwaretestingnews

Sunday, November 26, 2017

What is the mobile web application development?

The internet revolution is unstoppable. It touches almost all aspects of our life. A new form of web technologies is being implemented. Web developers over the world are discovering latest methods of improving web technologies for websites and web application development.

We are living in the best of phases of the web. It’s everywhere and is accessed not only through desktop computers but also through mobile phones.
But things designed for desktop web does not perfectly work on mobile devices and thus there is need of mobile web and web application development.
While designing and developing websites and web applications, these things must be kept in mind:
  • First understand the need of users. It could be anything. People are using mobile web for a number of purposes; from entertainment to education, to social media, to data share, to ecommerce, to book ticket.  So here web developers need to understand the type of services to be offered through the application. The services offered by the web apps can be of 3 types:
1.      Business services.
2.      User services.
3.      Data services.
  • Developers also need to understand the budget of the application. There may be different segments of designing an app and thus budget should be planned accordingly.
  • The application should be designed, developed and deployed with the optimum use of technology and is supposed to be better than its previous versions.
  • Security is prime concern in the world of web and thus web based apps are also expected to provide utmost level of security to the data and device of end users. People want more security when they spend money in buying anything online.  Transactions have to be absolutely secured in taking care of credentials.
Here are the levels of a web application development process:
1.      Project layout preparation. It includes direction, features and the focus.
2.      Planning of the project with considering aspects like budget and customer expectations.
3.      Developing of the project.
4.      Testing app for aspects like productivity, performance, scalability, and stability.  After the testing of the project, it will be available for the user.
Above mentioned were the four basic stages of for any web application development.
A website or web application is not user-ready if does not goes through all these stages. Undergoing these stages ensures a web serving the purpose it’s made for.
This information is brought to you by experts in website and web application development. 

Source : whatech
Videos

Recent Post