Simulation Testing

A real leap in the development of information systems is the in advance simulating of systems and processes. Simulation in other industries, like the Aviation and Process Industries, are common. Simulation of the process or system helps to identify early structural deficiencies before operating system components are delivered.
As we see more models coming into the SDLC, these models can not only automatically generated test cases. But more is possible! Model-Based Design (MBD) helps solve the challenges of (embedded) systems development. Using models gives developers insight into the dynamics of the development and algorithmic aspects of the system through simulation. Furthermore, the models to be used:
- Simulation Testing – As executable and testable specifications;
- Model Based Reviewing – To communicate the (system) requirements and interface definitions;
- Virtual Prototypes – As a model of the complete system to discuss with Business Users, and
- Model Driven Development – For automatic code generation of software development.
Simulation Testing is already a proven practice in embedded software and industries like the Aviation Industry. Now the question arises whether this is also useful for normal software applications, like administrative systems? The answer is “Yes”. However, for now focused on development testing.
By making models and using simulation testing it’s possible to visualize and debug (functional) designs. As a result it’s also possible to test the models by means of simulation testing. These tests may all relate to both the initial input for the test as the expected results of the tests. Within the embedded world this is called model-in-the-loop testing (MIL).
The figure shown here is an example of a model of an embedded system. This is also possible in the area of different Object Oriented languages (OO). Within the embedded world, the various hardware components are processed in a model. Within OO this may also be possible by the different functions as a component to be seen. These (default) features can be incorporated into a model and are coupled together. This creates a model that simulates the functioning of the component.
A full exploration of (functional) designs by means of simulation is a way to test requirements. Within the tests diverse subjects can be included such as input and parameters. By covering all possible input and parameters of a component or unit results in an increased coverage of development testing.
The best results are achieved when the testing of the models are carried out parallel with the designs. When models are developed, the tests focuses on the aspects of design using simulation testing of the model. The result at the end of the design phase is a model, at unit level, that enjoys the confidence and support of information analysts, designers, developers, and testers.
By using Simulation Testing (modeling and executing these models), it is possible to visualize and debug designs without any (newly) written code. Design errors can be removed quickly from the documentation. Moreover, a large part of the (development) testing can be performed based on simulations. By using simulations for checking the development process, models offer a different technique to find defects in the design at the earliest possible moment.
Assembla Portfolio Helps Troy Web Consulting Manage 30+ Projects
Troy Web Consulting uses Assembla Portfolio to answer questions like:
- What projects, sprints, milestone and tasks the team is working on?
- What are the highest-priority tasks across all of our projects?
- Who is overloaded? Where are resources needed?
- When will key developers be available for a new task?
- Has the client seen the system changes and what are their comments?
- Where is the needed documentation for the client, and what are the procedures for accessing their network, server and codebase?
A few years ago most of Troy Web Consulting’s business was from 10 government agencies near its home base of Albany, NY, including the New York State Office of Cyber Security and the New York State Office of Alcohol and Substance Abuse. When many agencies faced budget cuts, the company succeeded in diversifying its customer base to include a large number of private sector firms.
Today it works with 30-35 customers each year, which is good for business but also creates serious management challenges.
Manage resources across projects
A big win for Troy Web is the power of Assembla Portfolio to help them manage resources across projects. By answering the questions listed above, they improve efficiency, lower costs, and deliver work on time for their customers.
Troy Web used Assembla Workspaces for a long time, but found that upgrading to Portfolio gave them much more visibiltiy and control of multiple projects and developers who share time across projects.
Everything in one place to “hit the ground running”
With all those projects, Troy Web needs to be able to start up new projects quickly and maintain as much consistency as possible between projects. It does this by making an Assembla workspace into a template and copying that template for each new space. The template includes a consistent set of tools and features. It also includes a Wiki with documents like project checklists and key information such as access instructions for servers and other key resources. Developers like that they can find everything they need in one place so they can “hit the ground running” on new projects. New team members can also come on board faster.
Subversion and Git
Troy Web runs most of its projects on the Subversion repository, but also an increasing number on Git. A few projects use both; for example, for one iPhone mobile application they keep code for backend services in Subversion and executables for the UI in Git. Assembla allows them to use both repositories with exactly the same tool set, and with full ticket system integration. They believe this will become even more important in the future as more organizations transition from Subversion to Git.
Tying in Customers
Troy Web has also had success letting customers submit requests and comments in the form of support tickets though the use of the Support tool. The customers are happy that they can provide input easily, and the developers can respond more quickly to customer requests.
Great Support
According to Anthony DeBonis, Director of Application Development at Troy Web Consulting: “We really like Assembla. The service and support have been great. We have introduced it to many of our customers, and they also have been enthusiastic. We are very happy to recommend Assembla Portfolio to anyone who needs to manage multiple development teams and projects.”
Is There A Problem Here?

msn video
To use this product, you need to install free software
This product requires Microsoft Internet Explorer 6 with Microsoft Media Players 10 and Macromedia Flash 6 or higher versions, or Mozilla Firefox 1.5 with Macromedia Flash 8, or Safari 2.0.4 with Macromedia Flash 8. To download these free software applications, click the links below and follow the on-screen instructions.
Step 1: download firefox 1.5download firefox 1.5
Step 2: Download Macromedia Flash PlayerMacromedia Flash player is free to download.
If still having problems, uninstall Flash and then re-install Flash.
Once the installations are complete, reload this page.

Ben Simo
QuestioningSoftware.com

F.A.I.L.U.R.E.
A mnemonic for testing error handling & reporting.
F.A.I.L.U.R.E.
View more presentations from Ben Simo.

Ben Simo
QuestioningSoftware.com

Announcing BuildHive!
BuildHive is a free service that lets you set up Jenkins-based continuous integration build/test jobs for your GitHub repositories with just a few mouse clicks. It is freely available for anyone to use.
The top page shows recent builds that have happened on BuildHive. If you keep the page open for a while, you'll see new cards appear from the left for new builds in semi-real time:

Let's click the big red "Add your Git repositories" button to set up CI jobs for your repositories. It'll first ask you to approve GitHub OAuth integration, so you need to click "Allow" to let us see your repositories and install hooks:

Once logged in, you'll see the screen to select repositories from GitHub. It will show all your personal repositories as well as repositories from any organizations that you belong to. If you have too many repositories, use the filter text box to narrow down the candidates.
All you have to do to set up a CI job is to click "Enable". We'll sniff your repository to guess the initial build configuration. The auto sniffing of the repository contents is extensible, but the initial set is geared toward Java projects (like Ant, Maven, Gradle), but also covers some Ruby projects as well.
In any case, auto-sniffing can only do so much. You can tweak the setting via the configuration screen (for example, to update where the notification e-mails are sent):

When you enable a repository, we auto-install necessary hooks for you, so that it'll build your project every time someone pushes to your repository. In addition to that, we'll speculatively build incoming pull requests to your repository (by building the result of the merge between the incoming commit and the current tip of the branch for which the pull request is sent), and report the status as a comment to the pull request:

So you can use that as one of the inputs to determine if you are going to merge a pull request or not.
Behind the scene, many of the features in BuildHive rely on our value-add plugins for Jenkins Enterprise by CloudBees, which are available for customers to use on their own Jenkins instances. For example, we use the Templates plugin to model various project types and for auto-sniffing. We use the Validated Merge plugin to speculatively build pull requests. So, while it isn't as easy as it could be, our customers can set up a similar environment in their own Jenkins instance, or they can re-use those pieces to create similar but different workflows.
And needless to say, there are many other open-source plugins at play, too — it really shows off the power of extensibility in Jenkins.
--Kohsuke Kawaguchi
Founder, Jenkins
CloudBees, Inc.
www.cloudbees.com
Follow CloudBees:
Video: Managing Requirement Reviews in TestTrack RM
In this video, Gerhard Kruger shows how to handle requirement reviews in TestTrack RM, including how to use new TestTrack RM Reviewer.
Share on Technorati . del.icio.us . Digg . Reddit . Slashdot . Facebook . StumbleUponWhen Licenses Meet Reality, the Result is Often Confusing
One of my responsibilities at Sonatype is creating the pages that communicate licensing and security information in Nexus Professional and Insight for CI. We have a large team that is responsible for these pages and making sure that we’re providing accurate information. You would be surprised at the number of interesting edge cases that we identify in the process of scanning 400,000+ artifacts in Central. From invalid licenses to exotic, one-off licenses that include odd requirements, everyone who works on this team has had to become an expert in OSS licensing.
The following post about Meteor, a new, node.js-based approach to building web applications backed by MongoDB got my attention because it highlights some of the tricky integration issues we’ve had to think about when coming up with hypothetical use-cases for Insight. Here’s a quote that captures the complex relationships between Meteor, originally a GPL-licensed Javascript library, and an Apache-licensed library to access MongoDB:
From Olov Lassus’s popular blog post “Meteor meets NoGPL”
“The copyleft (viral, contaminating, whatever you want to call it) aspect of GPL is tricky. Take MongoDB as an example. Meteor uses it by importing the node-mongodb-native package (require(‘mongodb’)). That one is Apache 2.0 licensed, which is a permissive license that happens not to be compatible with Meteor’s GPL (v2) license, at least not according to the FSF. Tricky. Dependency chains, bindings between JS ↔ C and RPC makes it trickier even. I wouldn’t be surprised to see Meteor change to a GPL + a-bunch-of-OSS-exceptions license similar to what Qt and MySQL used to have, to avoid issues like this.”Don’t get me wrong, I’m not questioning the Meteor team’s right to choose whatever license they want, but I noticed this post because these are the kinds of relationships that we’ve been trying to sort out between different libraries in Central. We’ve encounter libraries that advertise themselves as BSD-style licenses which end up requiring dependencies on GPL components. This highlights the problem of licensing intent versus licensing reality. Just because a particular components is licensed under a particular license doesn’t mean you can actually use it under the terms of that license.
Lots of activity on Olov Lassus’ twitter feed and many opinions on the hacker news threads. This one was good about the ambiguity of the GPL w.r.t. derivative works.
Note: Meteor has since changed the license to MIT, which makes this very interesting project that much more compelling to a wider audience.
Webinar – Speeding Up the development of SharePoint Web Parts
Many Web Parts in SharePoint render for capturing data that is stored in a SharePoint list. This means that to test the Web Part you have to load the the Web Part within a SharePoint server. Then how do you test it?
During this webinar, Richard Fennell will show how you can use Typemock Isolator to allow the development and testing of your Web Part without the need to keep redeploying it to SharePoint to check every minor change
Learn how to speed up your SharePoint development and test web parts
When: Tuesday, May 22 at 7:00 AM Eastern US, 12:00 BST (UK), 21:00 Australia Standard Time
Sign up: http://www.typemock.com/using-typemock-isolator-to-speed-up-sharepoint-development-may-webinar
We will also be raffling licenses of Typemock Isolator V7 and Isolator for SharePoint. Attend to win
The Right Stuff?
Given that I resigned a couple weeks ago and am looking for new work, I've been asking myself a lot of questions about what I want to do next. Do I want to do detailed technical work? Do I want to lead people? Do I want to consult? Do I want to be someone's employee, or do I want to do short term contract work? Do I want to stay in Arizona, go back to Colorado, or go somewhere new? I've not yet decided. I am considering a number of options.
What I do know is that I want to find work that is a good match for my strengths and mindset. When looking for new work for myself, and when I've been involved in hiring, matching strengths and mindset has been more important to me than matching specific technical skills. People who are enabled to exercise their strengths and philosophy tend to have the intrinsic motivation needed to update their skills as each situation demands.
Rightshifting:
Improving the effectiveness
of knowledge-work businesses.
I am intrigued by the Rightshifting ideas coming from Bob Marshall, the Flowchain Sensei. The basic idea of the Rightshifting model is that the curve shown below indicates that the majority of organizations (peak of the curve) are ineffective compared to the few effective organizations on the right side of the curve. While organizations to the right of Bob's model tend to better match my personal mindset, finding work with such organizations is difficult -- there aren't many of them. My experience suggests that organizations further to the left can better benefit from what I have to offer than organizations to the right. However, if such organizations have no desire to improve their effectiveness, I am likely to get frustrated. Therefore, one more question I am asking myself is whether I prefer to be more of a hero in the midst of analytical dysfunction or more of a team member in a synergistic organization. I suspect my place is somewhere in the middle -- with an organization that is shifting right.
Side Note: One way in which I think I may disagree with Bob Marshall's model is the assertion that the chaotic organizations on the left are less productive than the analytic organizations to their right. I suspect many of the majority (the analytical organizations) are just better at measuring (or pretending to measure) their productivity than the organizations to their left. What we label chaos is often order we don't yet understand well enough to describe. I'm also not convinced that organizations need to take a trip through the dehumanizing methods of many analytical organizations in order to become more productive.
I recently watched a video in which Bob Marshall recommended the Strengths Finder book and the associated online assessment as a useful tool in discovering your strengths. I am typically skeptical of such assessments. I fear they tend to provoke the Forer effect in which people tend to demonstrate a confirmation bias and attribute accuracy to generalized information about themselves when it is presented as being specifically tailored for them. However, I decided to give Strengths Finder a try. Despite my reservations and desire to critically evaluate the timed questionnaire as I completed it, I found the resulting top "themes" to be a surprisingly accurate description of my strengths. Perhaps this only demonstrates that even a skeptic like me can succumb to the Forer effect.
According to Strengths Finder, my top five strengths are:
- Ideation
- Command
- Activator
- Individualization
- Relator
Whether this is based on a meaningful algorithm or is total BS, I found the results useful. (All models are wrong, but some are useful.) These five strengths seem to example what I believe can make a good context-driven tester; but then, I'm biased. :)
So, back to what do I want in my next job or independent business venture: I want to exercise my strengths in an environment where I don't have to suffer cognitive dissonance in order to serve my employer or clients.
In thinking about this, I created a mind map of the strengths from Strengths Finder and things I like, as well as things I don't like. Following up on my desire to find a mindset match over simply matching skills, I've decided to ignore typical job hunting advice and share this.
Think I might be a match for your organization? Hire me. :)

Ben Simo
QuestioningSoftware.com

Reset Selected Radio Button using JavaScript
You could use JavaScript to reset a selected radio button and test if a value is required on update.
Here's a description of running JavaScript in the IE Developer Toolbar to clear a radio button for a web app or web site.
- View page source and search for radio to find the element name where checked = True
- Copy paste the element name "radio1" text in the JavaScript below
- to open Developer Toolbar
- Click the Script tab
- Copy paste script to console on the right and click “Run Script” to set the selected radio button to false
Load and Performance Testing; what’s the Difference?
The difference turns out to be a lot! To start with load and performance testing goals are very different.
Load testing goals usually seek to answer questions regarding system capacity, throughput, and client response times for multiple concurrent users. For example, how many concurrent users can the system successfully accommodate? Or how many transactions per second can the system successfully process? Or can the system successfully scale to 1,000 users? Whereas performance testing goals seek to answer questions regarding server processing, and client response times for a single user. The primary goal of performance testing is to tune the system to achieve maximum performance, [e.g. execute a given amount of work (transactions) in the least amount of time (transactions per second (TPS)].
Load and performance testing are both challenging; however, performance testing is the easier of the two because only one user is tested. Whereas in load testing there are hundreds or thousands of concurrent users tested.
Additionally the implementation of performance testing is much less complicated because, again of the fact that only one user is being tested versus hundreds or thousands for load testing. Also, each user type in load testing must have a scenario designed, implemented, and modified, to execute and simulate live users as accurately as possible.
When modifying and enhancing test code for load testing the test engineer must consider concurrent users and adjust the test code accordingly. This will mean modification of session IDs, user form data, and input data, whereas in performance testing there is only one user and typically no session IDs, etc., need to be handled.
Because the performance test only involves one user, it is typically a much shorter test than a load test. Load testing involves hundreds or thousands of concurrent users and is usually a much longer test and thus much more data to be collected and saved.
When it comes to results analysis and correlation of test data, the performance test data volume is much less then the volume of load test data. Again, because performance testing executes only one user, thus there is much less data to be analyzed for performance vs. load testing, even though the same or similar metrics are collected.
During the remediation phase of testing, performance testing is a much smaller problem space than load testing. With remediation of performance tests, typically metric ‘outliers’ are identified, then the engineer drills down to determine root cause. Load testing remediation is not that straight forward or easy. Load testing results may show errors. However, there may be bottlenecks which are more difficult to identify and more difficult yet to remediate. So, it turns out there is a great deal of difference between load and performance testing.
Test Studio, from Telerik, has long been capable of performance testing. Further, any functional test can also be used as a performance test. To execute a performance test in Test Studio, there are just three steps: 1) Create or select an existing web functional test that satisfies the test scenario criteria, (e.g. user actions, and or transactions to be executed), and open that test, 2) configure performance test properties such as location to store results then select the computer to collect performance metrics from, 3) execute (run) the performance test.
In the Test Studio 2012 R1 release just out, load testing has been added to the capabilities of Test Studio!
Through load and/or performance vulnerabilities of software comes financial vulnerabilities of the company, which both directly affects company financials and customer satisfaction. Test Studio can help mediate these risks and reduce vulnerabilities.
Hire Ben Simo!
I resigned this week.
Therefore, I am now available and looking for new testing work.
I prefer to stay in the Phoenix, Arizona, area but may be willing to move if the opportunity is right. (I dislike the disruption of moving more than I dislike the idea of living elsewhere.)
I am an amphibious time-traveling context-driven cyborg software tester.
What does this mean?
I am amphibious. Although I am a software tester first, I’ve spent much of my career straddling roles and environments. It is common for testers to view me as a very technical person while programmers view me as one more focused on value. I check existing beliefs and test to find new information. I script and I explore. I test to help understand whether the right thing is being done and I check to help verify that what is being done is being done correctly. I've often found myself playing the role of liaison between techies and regular people -- helping disparate stakeholders understand one another.
I am a time-traveler. However, my time machine only goes forward. Over 20 years ago, I fell into a testing role with the illustrious title of “data collector”. I was one of a few hired to execute test cases created by others and report the results. However, from day one, things didn’t go as planned. Executing the test cases required deeper understanding than was communicated in the documentation. I quickly learned that testing can be fun and mentally challenging work. In these past 20 years, I've seen many technologies and practices come and go, and then come back again. One thing remains constant: the need to test whatever it is that us fallible humans try to create in the virtual worlds inside our machines -- virtual worlds that have real impact on real people in the real world.
I am context driven. This means I reject the concept of best practices. Instead, I try to first understand, and then select practices that fit each situation. I adapt my testing techniques and practices to the context. While my context-driven worldview is often at odds with those of others with whom I work, I recognize that people are the most important part of any context, and therefore try to find ways that I can contribute within whatever environment I find myself.
I am a cyborg. I have both human and artificial parts. No, I am not referring to the hardware used to reconstruct my wrist last year. I like to practice sapient brain-engaged testing and enhance it with automation. Rather than try to replace sapient testing, I use automation to enhance and extend my capabilities as a tester.
I am a tester. Most of all, I am a tester. While I have many other skills, I generally use them to support my testing and help others test well. I like to develop software that helps solve testing problems, but I don't want to spend the majority of my time with code. I like people more than I like code. I enjoy getting to know stakeholders and learning what matters to them. I enjoy exploring software in search of threats to value. I enjoy communicating and helping apply my discoveries to make things better.
Want to know more about me?
- Check out my profile on Linked In.
- Read this blog.
- Read my interview with UTest: Part 1, Part 2, Part 3.
- Follow me on Twitter.
- Send me an email.
- Check out the experimental mind map below. This highlights some of my experience; and also contains a bunch of details that I typically think of as resume clutter.

Ben Simo
QuestioningSoftware.com

Updating a Dynamics CRM Customer Record via HTTP
My current project integrates with the Microsoft Dynamics CRM system for managing customer records. We already spiked out authenticating and our next step was attempting to update a record via its “REST Endpoint“.
On retrieving a record, you follow the OData style for finding something of relevant. Updating a record is interesting as we only want to send the fields that need to change remotely. Looking at their sample code, you need to:
- Create an authenticated POST request
- Set the X-HTTP-Method to MERGE
- Set the appropriate content type for the content you intend on sending. In our case, set the header Accept to application/json and the Content-Type to application/json; charset=utf-8
Our end point for a contact looked something like:
https://crm.thekua.com/xrmservices/2011/organizationdata.svc/ContactSet(guid'867dc3f2-909e-e111-9912-0050569c2d72')
.
Updating simple fields off a contact is easy. We post something like:
{
"EMailAddress1":"spike.jones4@gmail.com",
"MobilePhone":"33335"
}
We receive a HTTP 204 (No Content) on a success. Posting an invalid attribute (i.e. one that does not exist on the ContactSet such as “EMailAddreXXXs1″) results in a HTTP 400 (Bad request) and a nice description about what’s wrong. You will also get a HTTP 400 if you post the wrong datatype such as sending a string where they expect a number. If you pass invalid values (but of the correct datatype) for a field, your response is a HTTP 500 with a message like The value of 'gendercode' on record of type 'contact' is outside the valid range."
Updating Option Set Values
Updating simple datatypes is easy and obvious from a JSON point of view. You have a couple of complex datatypes, such as the standard GenderCode. When you query for a record, you get back something that looks like
{"GenderCode"=>{"__metadata"=>{"type"=>"Microsoft.Crm.Sdk.Data.Services.OptionSetValue"}, "Value"=>1}}
To update something like this, you need to send a nested JSON object. The example follows
{
"EMailAddress1":"spike.jones4@gmail.com",
"MobilePhone":"33335",
"GenderCode": {
"Value" : "1"
}
}
A HTTP 204 (No Content) response indicates a success. Viola!
Agile Estimation Webinar: Why don't we use time?
Join Codesion’s ScrumMaster and Sales Engineer Caleb Brown as he discusses hot Agile topics that face the software community. This interactive demo will discuss the why and a bit of the now when it comes to Agile estimation based on units other than time. Click here to register for our upcoming webinar.
Agile Estimation: Why don’t we use time?
Tuesday, May 22 at 10am PDT
Testing Summit Highlights Video Posted!
Last week I wrote a quick summary of the Telerik Testing Summit.
I’m happy to announce we’ve got a short video posted up showing some of the highlights of the discussions during the first day of the conference.
If you’re not already, why not follow our Test Studio YouTube channel?
5 Features You Should Consider Using In TestTrack
TestTrack is an excellent tool for managing any project, especially a software development project. There are several features that I find particularly useful in my role as a senior software developer, and I’m going to talk about those features now.
1. Tabs
Tabs are something I use every time I log into TestTrack, specifically for Issues. I am often in a situation where I have to keep track of multiple development efforts at the same time. While filters help with allowing me to look at a subset of Issues on which I need to focus, being able to switch quickly between tabs where my different lists are displayed is an incredible time saver.
I configure my first tab to show all the Issues currently assigned to me. I have other tabs to display Issues I have created and Issues I have addressed. I also configure other tabs to display Issues involved with current tasks that I’m currently working on. Finally, I have a tab that will show me only Issues created within the last couple of days, so that I can see if there are any new Issues that I might need to address.
2. Workbook
The Workbook list is a feature that is often overlooked. Its primary use is to store Task records, which can be used to record things that need to be done that are not related to an Issue, Test Run, or a Requirement.
However, another feature of the Workbook list is that it will show all items that are assigned to you, regardless of their type. If you are working on several different things at once, including Issues, Test Runs, Requirements, and Requirement Documents, you can view all your current assignments in this list. This is incredibly useful for me to see what items need my immediate attention.
3. Links
Linking items is a terrific way of relating items that have some relationship that you want to document.
I often see where different users find multiple Issues that on the surface seem unrelated, but after examination they are found to originate from the same original problem. In these situations I prefer not to merge all of these Issues, but instead create links between the Issues. I usually link Issues as related items. However if I find that one particular Issue is the primary problem, I can set it up as as the Parent in the relationship, and the other Issue as children. This helps establish the relationship between the Issue.
4. Screen Capture
This feature may be one of my favorite recent additions to TestTrack. Screen capture allows you to take a snapshot of your current monitor display and save it as a file attachment or an inline image in a text field. It also provides some basic image editing tools to mark up the image.
I find this very useful when developing or testing an application. I can immediately move to TestTrack when I want to create an Issue, write up the description, then capture the screen shot within the client. I also like to use the editing tools to mark up the image to point to the problem I am trying to describe.
5. Insert Stamp
This is a smaller but still useful feature depending on how you implement TestTrack. In our TestTrack projects, it is common for people to edit descriptions and events to add additional details or notes.
Insert Stamp offers a quick way to enter a quick indication of who and when an additional bit of information is added. This feature has the nice benefit of giving the user a quick way of adding the date or your name to a comment you added. In addition, if all the users of a project use the feature consistently, it creates a standard way to annotate text in your project. And it can be configured to meet your project needs.
Those are my top 5 TestTrack features. If you’re not using them currently, take a few minutes to check them out. What are you favorite features?
Share on Technorati . del.icio.us . Digg . Reddit . Slashdot . Facebook . StumbleUponTools to unit test your JavaScript
Using QUnit, YUI Test and JSTestDriver for Javascript Unit Testing
API Testing and Monitoring – SmartBear Launches API Complete
Yesterday we announced general availability of our API Complete capability.
API Complete is a solution set that drives quality and ...
Picture This: Android Fragmentation Across 4K Devices
You know how they say a picture is worth a thousand words? Well in the case of Android fragmentation – a subject discussed at great length here and on mobileapptesting.com – a picture is worth a few thousand devices.

The image you’re seeing is a data chart of thousands of separate device models encountered by the dev team at OpenSignalMaps over the course of a six month period. It may not be a flashy infographic, but it’s one of the best visuals I’ve seen to convey the challenge of Android hardware fragmentation. Here with more details on the chart (and on Android fragmentation in general) is arstechnica:
The developers logged 3,997 distinct devices, the most popular of which was the Samsung Galaxy S II. This figure was inflated quite a bit by custom ROMs, which overwrite the android.build.MODEL variable and cause those phones to be logged as separate devices. 1,363 types were logged only once, and while some were custom ROMs bucking the numbers, a good few were just massively unpopular devices—for example, the Hungarian 10.1-inch Concorde Tab.
It’s not only the sheer count of devices that’s daunting, either—the spread is also intimidating. It’s easy to imagine a practical Android developer who doesn’t want to waste time supporting niche devices restricting the app to require high-end hardware and recent APIs, covering only the 25 or so most popular phones, and devil take the hindmost. But in OpenSignalMaps’ case, the top 25 devices don’t even encompass half of the map, and would still exclude well-known and popular (if old) models like the Samsung Nexus S. The developers would be missing out on over 50 percent of the Android market.
Some commentators on the article have correctly pointed out that hardware fragmentation alone is not an impossible challenge to overcome. However, many are forgetting to consider that hardware is only one aspect of fragmentation. Yes, there’s more.
As any Android developer can attest, fragmentation across location, carrier and especially operating system also complicate the testing process. See our previous articles on Instagram’s Android launch or Neflix’s Android Testing Challeneges for some good real-world examples.
Before finishing up, it should be noted that we’re not for or against fragmentation in principle. In fact, we’ve written about the many benefits of Android fragmentation in the past. Still, it should be clear by now that fragmentation isn’t making things easy for mobile QA teams. In an ideal world, your app would work the same on every device (yes, even you, Hungarian Concorde Tab). Realistically, it’s just not that easy.
Lucky for you, help is available! Shameless plug coming in 3,2,1…
For an easier way to test your Android app across devices, browsers, carriers and more, be sure to check out uTest’s in-the-wild testing services. You can also try AppGrader for Android- our free tool to help you rank your app on the most common devices and operating systems.
Until then, happy testing.




