Crowdsourced
profiling and testing
presented by Giorgio Natili
Mobile tea #4
Rome, 22 may 2013
about me
e-mail: g.natili@gnstudio.com
twitter: @giorgionatili
blog: webplatform.io (coming soon!)
community: codeinvaders.net
Agenda
- Crowdsource testing:
- how it works
- pro and cons
- Apps testing and profiling:
- Types of testing
- Profiling
- Key challenges
- Overview of the crowdsource testing platforms
- Workflow integration
Crowdsourcing
- The practice of obtaining needed services, ideas, or content by soliciting contributions from a large group of people (i.e. the crowd)
- Obtain great results with a small effort by a a group of individuals
- Crowdsourcing is an online, distributed problem-solving and production model
Types of crowdsourcing
- Crowdvoting
- Crowdsourcing creative work
- Crowdsearching
- Crowdfunding
- Crowdsource testing
- Many others...
crowdsourced testing
or for brevity
crowdtesting
Crowdtesting
- A way of testing software based upon crowdsourcing
- The tests are executed by testers from different countries
- Testers are not hired as consultants
- Most of the testing platforms are clouds based
- Testers are usually paid per verified bug
- Tests are executed on real platforms and are more reliable
how it works
- There are three main actors working together in a crowdtesting environment:
- A test platform
- Testers
- Companies
- There are several activities to perform:
- Select the right testers
- Profile the testing platforms
- Write meaningful tests
- Get consistent feedback
Advantages
- The tests are executed on a great number of platforms
- The tests are reliable because executed on real devices
- It's a low costs solution because tests are paid per bug
- Testers are not influenced by any company concerns
- Tests include languages and locales
- Tests can be executed faster
variety of in-context data
Users are ready 24/7 all around the world to test:
- Network density
- App response on specific devices
- Different battery states on the device
- Different types of network (Wi-Fi, 4G, etc.)
human errors
-
Software testing is not an exact science. Like programming, it is subject to human error
-
By working with a greater number of testers, you are effectively diminishing the likelihood that your software testing team may miss an important issue during the testing period
Disadvantages
- The confidentiality of the project is compromised due to the usage of external resources
- Communication can be difficult due to the crowdsourcing itself
- Due to the usual business model testers should find easily low impact bugs rather than critical ones (usually more complex to find)
- Management and planning is not easy
outsource testing
- Outsourced testers belong to the same organization
- There is a company responsible for the quality of testing
- Testers are paid for their job also if they don't find bugs
Metrics matter
apps testing
- No one really wants to do it! It's time consuming, expensive and it's boring!
-
The goal of testing efforts is not to find errors instead should be to understand the quality of the app
-
It's a process that should be parallel to development
- Can be done through emulators, services but over all using physical devices
functional testing
- Functional testing ensures that the application is working as per the requirements
- Most of the test conducted for this is driven by the user interface and call flows
- Have to be defined upon the software requirements
- Should be automated as much as possible
- Should help to create a test suite classified as regression tests
Usability testing
- Carried out to verify if the app is achieving its goals and getting a favorable response from users
- How much steps are required to complete tasks
- How does the person feel about the tasks completed
- How much does the user remember afterwards or after periods of non-use
- It's not a way to gather opinions on an app
interrupt testing
- Incoming and outgoing SMS and MMS
- Incoming and outgoing calls
- Incoming notifications
- Battery Removal
- Cable insertion and removal for data transfer
- Network outage and recovery
apps profiling
- Performance is a concern for all but the simplest of applications
- Making apps perform well seems a simple enough ask, but it can be something of a black art
- Profiling an app allows to glean valuable metrics, such as memory usage of a given object and execution times of specific methods,
- Through the analysis of these metrics it's possible to improve apps performances
Performances
- Determine how a system performs in terms of responsiveness and stability
- Check the performance and behavior of the app in normal conditions and particular ones (low battery, bad network, etc.)
- Understand the upper limits of capacity of an app within the system (Stress testing)
memory leaks
- Memory leakage happens when an app is unable to manage the memory it is allocated
- The best result is poor performance of the app and the overall slowdown of the system
- As mobile devices have significant constraints of available memory, memory leakage testing is crucial for the proper functioning of an application
challenges
- Variety of Mobile Devices, input methods and hardware capabilities
- Diversity in Mobile Platforms/OS
- Mobile network operators- There are over 400 mobile network operators in the world
- The variety of devices makes executing the test script (Scripting) a key challenge
crowdtesting
platforms
overview
utest
Web site
http://www.utest.com
- Supported kinds of apps:
-
Supported testing types:
- Functional Testing
- Security Testing
- Load Testing
- Localization testing
- Usability Testing
utest
-
Pros:
- Integrated with bugzilla, google code, mantis, redmine, rally, etc.
- Good user interface to manage projects and test cases
-
Cons:
- Unusable web site
- High prices not clearly reported (anyway here the wizards you may be interested to http://www.utest.com/wizard-usability/, http://www.utest.com/wizard-localization/, etc.)
passbrains
Web site http://www.passbrains.com
- Supported kinds of apps:
- Mobile
- Web
- Enterprise (WAT!)
-
Supported testing types:
- Functional Testing
- Security Testing
- Compatibility Testing
- Localization testing
- Usability Testing
passbrains
-
Pros:
- You can be a customer and a tester with the same account
- Customers are supported when defining needs and goals
- Fixed (and reasonable) prices
-
Cons:
- No integration with third party tools
- You need a couple of days to start your test project
99tests
Web site http://www.99tests.com
- Supported kinds of apps:
-
Supported testing types:
- Functional Testing
- Security Testing
- Performance Testing
99tests
-
Pros:
- Registration process and profile update is easy
- Customers create test cases as contest
- Fixed and transparent prices
-
Cons:
- No integration with third party tools
pay4bugs
Web site http://www.pay4bugs.com
- Supported kinds of apps (iOS only):
-
Supported testing types:
- Functional Testing
- Security Testing
- Performance Testing
pay4bugs
-
Pros:
- Registration process and profile update is easy
- Customers can specify a price per bug
- Testers can join projects arbitrarily
-
Cons:
- The total cost is made up by a monthly subscription plus a fee per bug
- No integration with third party tools
applover
Web site http://applover.me
- Supported kinds of apps (Android only):
-
Supported testing types: (user driven)
- Functional Testing
- Security Testing
- Performance Testing
applover
-
Pros:
- It's a community, there is no cost
- Testers do tests because are passionate
-
Cons:
- There is no way to be sure about the quality of tests
- Tests cannot have a time range
- No integration with third party tools
FeedbackArmy
Web site http://feedbackarmy.com
- Supported kinds of apps:
- Web
- Mobile
- Desktop
- Even more... (WAT!)
-
Supported testing types:
- Functional Testing
- Security Testing
- Load Testing
- Even more... (WAT!)
Feedbackarmy
-
Pros:
- It's a community, there is no cost
- Testers do tests because are passionate
-
Cons:
- There is no way to be sure about the quality of tests
- Tests cannot have a time range
- No integration with third party tools
Developer flow (1/3)
- Pick up a task from Phabricator
- Create a new branch using the task id in the name (e.g.
git branch feature-ID) and move to it (e.g.
git branch checkout feature-ID)
- Work on it and add or remove the files to the new commit using the commands git add or git del filename
- Commit the changes to current branch using the command git commit -a -m ‘your commit message’
developer flow (2/3)
- Run the command
arc diff
and fill the information required
developer flow (3/3)
- Wait the review is performed and eventually make the changes to the code
- Run the command
arc land
once the review has been accepted
system workflow
- On each review submitted Phabricator eventually runs tests and do a build using Jenkins
- Potential error handling (review workflow)
- A weekly build is deployed using the last working Jenkins build (mturk)
drawbacks
-
It's not user friendly
-
It's a set of scripts that will be released open source at the end of July 2013
-
It requires coding and system administration competencies
-
It requires developers are able to use the command line tool
THANKS!
e-mail: g.natili@gnstudio.com
twitter: @giorgionatili