Wednesday, April 15, 2015

Mnemonics in Software testing

Good Evening,

There is a lot of functional testing being done out in the field. Testers run their test cases, give sign offs and the product is shipped off with everyone hoping for the best. Post, we see a lot of bugs being reported from end users and beta testers. The first thing I recommend is to use mnemonics to aid our thinking and expand beyond the rigmarole of functional testing.

Wikipedia defines mnemonics as "A common mnemonic for remembering lists is to create an easily remembered acronym, or, taking each of the initial letters of the list members, create a memorable phrase in which the words with the same acronym as the material. Anyone can create their own mnemonics to aid the memorization of novel material."

Mnemonics can be simple thinking models for testers, each letter stands for an approach or consideration for testing software. You can use it to help your brain change testing perspectives, and to find important problems quickly. Some tester who catch important bugs quickly do so not just because they are experienced but they have easy ways to remember stuff that's important to them in different contexts. Mnemonics can be very useful heuristics and oracles. Below I have listed a few:

RCRCRC for regression testing by KN Johnson

  • R- Recent, means what new features/enhancements have been added. what testing around those changes should I think about?
  • C - Core, means what are the critical functions, what should I test to ensure they work
  • R - Risky, what features are inherently risky? areas that I want to safeguard by testing
  • C - Configuration sensitive, what testing I do based on environment?
  • R - Repaired,  What testing I want to do based on fixed defects?
  • C - Chronic, What areas have broken in the past and are prone to bugs? I want to test those areas

I SLICED UP FUN - by Jonathan Kohl for Mobile app testing

  • I - Inputs into the device
  • S - Store
  • L - Large vs Small screen
  • I - Interactions/Interruptions
  • C- Communication
  • E - Ergonomics
  • D - Data
  • U - Usability
  • P - Platforms
  • F - Functional Testing
  • U - User Scenarios
  • N - Networks

Can I use this? for usability testing by David Greenless

  • C- Compare Product/features
  • A - Accessibility
  • N - Navigation
  • I - Intuitive
  • U - Users
  • S - Standard
  • E - Emotions
  • T - Trunk Test
  • H - Heuristics
  • I - Instructions and Help text
  • S - Satisfaction

Ben Simo's error handling mnemonic - FAILURE

  • F - Functional
  • A- Appropriate
  • I - Impact
  • L - Log
  • U - UI
  • R - Recovery
  • E - Emotions

San Francisco Depot(SFDPOT) is a simple and effective test strategy tool created by James Bach.

  • S - Structure
  • F - Function
  • D - Data
  • P - Platform
  • O- Operations
  • T - Time

I haven't gone into the detail of each mnemonic because you can invoke google for help and read/hear about them directly from the horse's mouth. The good thing about mnemonics is that you can also create your own or add/edit to the ones you like.

Wednesday, April 1, 2015

Mobile Application Eco System

Mobile Applications have been in existence for over a decade now. Many of us have seen 'Palm pilot', and how Blackberry in its prime was used as the only platform for e-mail communication. Even today many enterprises user Blackberry smartphones for their e-mail. Mobile revolution started  when Apple introduced the iPhone, with iOS in 2008 and released their SDK for developers to develop apps for the iPhone. The revolution was followed by the release of Google's open source mobile OS called Android during 2008/2009.

Smartphone market is unlike the PC market, where Microsoft controls 80% of the market share. In the world of mobile though, its Android and iOS who dominate the market. Android has close to 77% market share and iOS around 20%, source:

Understanding the SmartPhone OS

iOS is promoted by Apple, its a Unix based platform(a stripped down version of Mac OS X). Objective C was the supported programming language for developing both Mac and iOS based applications. This has recently been replaced by Swift. Latest iOS release is iOS 8. Apple controls both mobile device hardware and software. iOS powers multiple devices like iPhone, iPad, iPad mini and iPod. Since iOS is not open source, customization is very limited.

Android is promoted by Google as an open source project from the Linux family. Android apps are created using Java(version of Java specific to android). Latest OS release is Lollipop. Android being an open source project allows OEM to control the size of the device, this increases various device sizes supported by many OEM providers like Samsung, Sony, HTC etc. Almost anything can be customized on Android.

Both Apple and Google provide developers with SDK to enable them to develop mobile applications. All the SDK related tools are provided free by both providers. For iOS the developers can get SDK for free but it will work only on a Mac OS. Apple does not provide a means to develop for iOS using Windows.

Mobile Apps and their Lifecycle

Mobile applications follow development/deployment and distribution lifecycle which are completely different from typical web/windows based application life cycle. Most of the web apps are deployed within the organization's premise and infrastructure. For mobile apps targeted to end customers, they are developed and tested within the enterprise but deployed outside the enterprise and distribution is taken care by OS provider. Mobile applications once tested and developed are deployed to App stores of the OS providers for their approval. Once approved they are available for download from the respective app stores, end customers can directly download the application from application stores on their mobile devices.

  • Apple has the Apple App Store.
  • Google has Play Store
  • Blackberry has App World

Mobile Application Developer License

If the developer completed development and wishes to deploy the app on app store then she requires the developer licence.

App stores share your revenue, in case of Apple it keeps 30 percent of your revenue. This policy is stated right on the developer program web page. Apple deals with all downloads, credit card clearing and refund requests. If your app is a paid one, then Apple pays the developer once a month after a four week delay. This delay gives apple time to process any refunds. Developer also has to earn $150 before they get paid.