SmartQA Community

7 Pictures to ‘Doing SmartQA’

T Ashok @ash_thiru on Twitter

Summary

In article are seven interesting thoughts each outlined as a picture on what it takes to do SmartQA. These are on Smart thinking, Smart Understanding, Smart Design, Smart Plan, SmartQA Test Organisation and Smart Planning.


SmartQA Thinking

Yesterday a good friend of mine told me about his recent conversation with a senior engineering manager in a product dev org. The Sr Engr Manager, a great believer in code coverage told him that he just focuses on covering close to 100% code as the only measure to ensure quality, and as a means to implement shift-left. Absolutely right, isn’t it?  After all, ensuring all code written is at least executed once & validated is logical and necessary.

What is/are the fallacy in this? (1) Well you have assumed that all code needed has been written (2) Well, non-functional aspects of code cannot be completely validated (3)Well, it assuming that this is what users really wanted, even if code is working flawlessly (4) Well, the number of paths to cover at the highest level of user oriented validation is just to many to cover, next to impossible! Code coverage is a necessary condition but simply not sufficient.

Doing SmartQA requires multidimensional thinking, of looking of the system from various angles both internal in terms of code, architecture and technology and external in terms of behaviour, end users, environment & usage and then making appropriate choices of what to validate later or earlier and what to prevent or detect statically.

Smart Understanding

Prevention occurs due to good understanding. Detection occurs due to good understanding. Understanding of what is needed, what is stated and what is implemented.

Doing SmartQA is about great mental clarity of visualising what is intended, what is present, what-may-be-missing that could-be added to enhance the experience. The intent to seek this clarity is what one drives to question well, build better, prevent and detect issues.

The act of testing is really discovering what-should-be-there but-not there, what-is-there but not correct, what-should-be-there but should-not-be-there. Finally it is about understanding the impact of something that been changed, be it in the system or outside the system.

Smart Understanding is about scouring the ‘landscape’  to understand overall context and the static structure of how it is built and then ‘deep-diving’ to understand  the intended dynamic behavior. Landscape and Deep dive are great mental tools to explore the system rapidly to do SmartQA. The associated picture illustrates these two thinking tools well.

Smart Design I

Doing SmartQA is not just evaluation. It is about enabling code that is being built to be robust. To resist errors creeping in, to code-in firewalls. To ensure that I have all I need in good condition before I consume it. This implies that data (inputs) process are clean, the environment I operate in is clean and the resources I need are indeed available, and the dependencies that I have on others are indeed working well.

All I do is to protect myself. How can I handle when irritants are hurled at me? Well I have three choices :

(a) reject them and not do what I am supposed to do (b) flag them (log) and not do what I am supposed to do (c) intelligently scale down and do lesser.

The key focus is be robust, to be disaffected by inputs, configuration/settings, resources or dependent code. The act of designing for robustness makes one sensitive to potential issues that may arise and ensuring we are edged into a corner.

SmartQA Design II

Let us talk a bit of test design now. We focus a lot of execution, and therefore the ability to cover more. The focus has veered to how frequently we are able to execute the tests and therefore on automation. Let’s step back and ask to what the objective was, it was to primarily deliver clean code. So a deeper sensitivity to the quality of tests. This is where design becomes important.

So what is a smart way to design to come with good scenarios, ideally few that can uncover issues that matter most. Smart Design is about looking at the system from multiple views to ensure:

“I want | expect | would-like behaviours to satisfy needs that are implemented well and comprehensively covered to help me do well on my environments with no side effects”.

Then decide what you want to prevent, statically detect or test, be it via human or a machine. Focus on intent and then the activity.

SmartQA Test Organisation

Once upon a time software engineers developed code and also tested them. Then dedicated QA teams became up the norm of day and testing was ‘owned’ by these teams. In current times with rapid dev driven by Agile, it is kinda merging back into dev, with dedicated QA becoming thinner.  A recent article in SD times talked out “who owns QA” – Is it dev org or a dedicated org? So what is the right fit?

What ‘dedicated QA’ really means is – focus on QA/testing is indeed there. In a software org we need specialists, be it analysts, architects, developers, support and testing too. Dedicated QA does not mean reporting only into dedicated QA leadership position, it just means that we have QA specialists who have deep knowledge to systems validation.

So what may be a right fit for building a Smart QA organisation? Think of QA as a mixture of Dev QA, System QA and Solution QA with a different objective of validation.

In addition to validation, a dedicated QA (System/Solution QA) is suited well to provide enablement & governance.  This implies test infrastructure setup, tooling frameworks, setting up process, metrics, publishing aids and doing reviews and improving the system.

Smart Validation

The approach to validation of software has typically been ‘manual’ or ‘automated’ Nah, that is really not the right phrase, it is really ‘human-powered’ and ‘machine-assisted’.  So when we decide to validate in a non-automated manner, what could be smart ways of ‘doing’ ?

Well, there are FOUR approaches :
A: Completely scripted, where we understand completely, then design and then evaluate. The typical way we do, when specifications are reasonably clear and complete, mostly employing the logical left brain to the hilt.
B: Completed unscripted, the typical approach to test when faced with severe time crunch or by a casual person wherein one jumps into evaluation largely guided by one’s creativity, luck and experience.
C: Evolving script, an exploratory approach where understanding, design and execution happen concurrently using a good mix of left and right brain.
D: Evolving script done in short sessions, where we setup up a clear objective of what we want to accomplish/do and then perform ‘only understanding’, or ‘understand & design’ or ‘understand, design & evaluate’ and only largely ‘evaluate’ using a good mix of left and right brain.

What approach you chose depends upon the context. You may veer towards (A) when specs seem clear, you may end up using C or D when system is evolving are when specs are at a higher level. whilst B is useful to complement A,C,D as quick checks or exploit the power of random.

Oh, “Immersive session testing” builds upon this and attempts to enable one to ‘immerse’ in the act of evaluation, to get into a state of ‘flow’. It is a session-based approach that has a suite of ‘thinking tools’ to understand, design and evaluate with the prime objective to ‘doing less and accomplishing more’.

Smart Plan

Smart plan is simple & objective based – what entity to test, test for what issue(by conducting what test), test in what environment, test by whom (in case of a team), test from whose point of view ad finally how to test (human or automated). A concise plan that is a collection of these, enables sharp focus enabling rapid evaluation, be it human powered or building nimble automated suite(s).

A higher level of what kind of issues to be uncovered at different levels of entities on specific environment(s) would be a strategy, whilst specific issues on specific entities would form a plan. Oh this form of thinking facilitates two kinds of scenarios to be designed: (1) an ‘objectiveScenario’ from an ‘output focus’, that are simple one-liner(s) that outline what issues to uncover for what-entity on which environment (2)an executableScenario from ‘input focus’, that is a set of inputs to stimulate with, for an entity to uncover specific issues for a given environment.


10 mindsets, 10 tips & 10 habits to clean code

T Ashok @ash_thiru on Twitter

Summary

A mashup of three articles published as part of SmartQA digest over the last few months that outlines mindsets needed to brilliant code, tips to produce clean code and habits to speed up evaluation


Here is a mashup of three articles published as part of SmartQA digest over the last few months that outlines mindsets needed to brilliant code, tips to produce clean code and habits to speed up evaluation.

10 mindsets to deliver brilliant code

Great code is not result of mere unit/dev testing at the early stage. It is really a mindset that is key to producing brilliant code. 10 things to be sensitive to deliver brilliant code outlines ten things that a developer should be very sensitive to enable the delivery of brilliant code.

10 tips to clean coding

10 Simple Tips to Clean Code has in detail, simple practices that can ensure that code developed is constantly cleansed. In current times where code is churned out at a rapid pace, it makes great business sense to contain the entropy continually. 

10 habits to speedy evaluation

Automation is a key enabler for rapid QA, the limiting function to speed is one’s skills. And this is where good habits come in. 10 Habits to Help You Speed Up Testing outlines these in detail.


TWO tools to aid smart understanding

T Ashok @ash_thiru

Summary

Doing SmartQA is about great mental clarity of visualising what is intended, what is present, what-may-be-missing that could-be added to enhance the experience. The intent to seek this clarity result in good questions that help us understand better and therefore test well is the objective of this article. Two tools for the mind “Landscaper” and “Deep diver” that can help are outlined here.


Prevention occurs due to good understanding. Detection occurs due to good understanding. Understanding of what is needed, what is stated and what is implemented.

Doing SmartQA is about great mental clarity of visualising what is intended, what is present, what-may-be-missing that could-be added to enhance the experience. The intent to seek this clarity is what one drives to question well, build better, prevent and detect issues.

The act of testing is really discovering what-should-be-there but-not there, what-is-there but not correct, what-should-be-there but should-not-be-there. Finally it is about understanding the impact of something that been changed, be it in the system or outside the system.

The key to this is understanding the product/application/solution. Understanding from different points of view- end users, construction, technology, environment, development & deployment. 

Smart Understanding is about scouring the ‘landscape’  to understand overall context and the static structure of how it is built and then ‘deep-diving’ to understand  the intended dynamic behavior. Landscape and Deep dive are great tools for the mind to explore the system rapidly to do SmartQA. The associated picture illustrates these two thinking tools well. 

Tool#1 Landscaper

Given an entity to test, be it a small component or a big business flow or the entire system, the first thing to do is examine it well by performing a ‘landscape’ . 

  1. Start with understanding who the end users are, then identify the entities (the system offerings), the connect to who uses them and how much and then go on to figure out as to what they may expect from these. 
  2. Now switch to a deployment view to understand how is deployed and other systems it is linked with.
  3. Now from the construction/development point of view understand what is built new (via fresh code or glue code that integrates components) and what is being modified. 
  4. Continuing to look from the structural view, understand how these entities may be coupled, to appreciate the interactions and what may be affected due to the new/modified entities.
  5. Go a little deeper to understand the system is is architected and technology stack(s) used to implement this.

What we are doing is doing a tour from different points of view and attempting to understand the ‘whole’. During this process many questions arise which enables better clarity of problem.

Tool#2 Deep diver
Having a good holistic picture of the system under test, it is only natural to to dive deeper to understand in detail an entity. Deep diver is the second tool that helps you do this.

  1. First understand the various inputs to this entity. What are they, where do they come from, what is their format and spec, rates and volumes too? Are there any interesting values ?
  2. Next, understand what the various outputs are and may be. What are the normal outputs and what are those in situations of error? Do check if ‘all’’ possible outputs have been indeed been considered.
  3. Finally it is time to understand the intended behavior by discovering conditions that transform the inputs to intended outputs. Note that some of the behaviour conditions could be based on system state and not based on inputs only.

Smart understanding is key to doing less, doing well and accomplishing more. This is a seriously mental activity and doing it well has great paybacks! The two mental tools “Landscaper & Deep diver” enable a logical approach to decomposing the system(i.e. problem) well so that you have great clarity on what, how-to-do and how-much-to-be-done.


 

20 approaches to Smart Test Design

T Ashok @ash_thiru on Twitter

Summary

This article outlines twenty approaches to smart test design based on seven views of user, logic/analysis, construction, test, experience, operational and evolution.


Let us talk a bit of test design now. We focus a lot of execution, and therefore the ability to cover more. The focus has veered to how frequently we are able to execute the tests and therefore on automation. Let’s step back and ask to what the objective was. Well it was to primarily deliver clean code. So we need to have a deeper sensitivity to the quality of tests. This is where design becomes important.

So what is a smart way to design to come with good scenarios, ideally few that can uncover issues that matter most.

Smart Test Design is about looking at the system from multiple views to:

I want | expect | would-like behaviours to satisfy needs that are implemented well and comprehensively covered to help me do well on my environments with no side effects.

Then decide what you want to prevent, statically detect or test, be it via human or a machine. Focus on intent and then the activity.  

Let me list down TWENTY approaches to smart test design looking at the system from SEVEN views.

1. User view based

1.1 Use the requirement specification to design.
1.2 See actual users of how they work and then use this to design.
1.3 With users doing experience sessions with system and use this information to design.

Smart test design based on 'user view'

2. Analytical view based

2.1 Use software test techniques (black or white) on spec/structure to design.
2.2 Construct behavior models and use this to design. 
2.3 If the system needs to comply with a standard, use the standards information to design. 

Smart test design based on 'logic/analysis'

3. Construction view based

3.1 Use the code properties like lines/conditions/path to design.
3.2 Exploit your deep understand of technology to understand potential mechanisms/flaws and use this design.
3.2 Understand how the system has been architected, composed & integrated to design. 

Smart test design based on 'construction view'

4. Test view based

4.1 Hypothesise potential faults probable given your understand of usage, structure, architecture, environment, conditions to design.
4.2 Use potential error return codes, exceptions, deliberate bad inputs, violations of system states to design.
4.3 Identify potential end failures and failure modes and use this to design.
4.4 Explore the system to understand its behaviour in various contexts and use this to design .
4.5 Probe the system with a series of questions (say what-if) and use this to design.

Smart test design based on 'test view'

5. Experience-view

5.1 Use the past history of issues encountered with various customers and design.
5.2 Apply the learning of various situations or deeper knowledge to come u with fault patterns and use this to design. 

Smart test design based on 'prior experiences/support'

6. Operational-view

6.1 Use the understanding of actual business flows, usage profiles of features on various environments to design.
6.2 Identify various deployment configurations and use this information to design.

Smart test design based on 'system operations''

7. Evolution-based

7.1 Use the information of what code has been changed, to understand how these may propagate and may cause issues to design.
7.2 Use the information of changes in the environment to understand their impact on the system and design 

Smart test design based on 'system evolution'

Smart Design is about:

I want | expect | would-like behaviours to satisfy needs that are implemented well and comprehensively covered to help me do well on my environments with no side effects.


22 tips to smart dev & test

T Ashok @ash_thiru on Twitter

Summary

TEN tips for a developer to enable delivery of brilliant code and TWELVE tips to become a modern smart tester is what this article is about. Curated from two earlier articles that I wrote.


What are my TEN tips for dev to deliver brilliant code?
Here it is visualised as mind map!

Minmap of TEN tips for a dev to deliver brilliant code

Read the full text in my article  10 things to be sensitive to deliver brilliant code” which is about:

Great code is not result of mere unit/dev testing at the early stage. It is really a mindset that is key to producing brilliant code.

T Ashok

What are TWELVE tips to test brilliantly?
Here it is what I think it as visualised mind map!

Mindmap of TWELVE tips to test brilliantly

Interested in the full text? Checkout my article 12 tips to reinvent yourself in testing.


The Power of Geometry

A good running form, a great cycling geometry becomes essential to delivering higher performance with no increase in power output in running and cycling respectively. Applying this to the context of QA, it is not just the content of test artifacts like scenarios/cases, plan that matters, it is how they are structured/organized that is key to accomplishing more with the same or less.

This article outlines how structure(or organization) of elements plays a key to doing more with less. In the subsequent two articles on this theme, we examine in detail, the arrangement of product elements and test artifacts and how these aid in clear thinking to deliver high performance.

Click here to read the full article published in Medium.


Do brilliantly ‘right’ after taking a ‘left’!

T Ashok @ash_thiru

Summary

A logical ‘left brain’ thinking complemented with a creative ‘right-brained thinking’ results in brilliant testing. This is an amalgamation of forward, backward, approximate, visual, contextual and social thinking styles aided by techniques/principles using process, experience and great habits.


Testing is about perturbing a system intelligently and creatively shaking out issues that may be present. How do we know that all the issues have been shaken out is indeed a challenge. A logical thinking approach to identify good and erroneous situations is seen as necessary to justify the act of completeness of validation. It is also seen as necessary to be creative and use the context to perturb the system. Finally, injecting a dose of randomness to perturbation is seen as the final straw to being complete.

Picture stating "Smart with logical thinking, get creative and finish off with ad-hoc thinking.

Testing is a funny business where one has to be clairvoyant to see the unknown, to perceive what is missing and also assess comprehensively what is present ‘guaranteeing’ that nothing is amiss.

Left brained thinking

‘Left-brained thinking’ can be seen as collection of forward, backward and approximate thinking styles using methods that can be well formed techniques or high order principles based on an approach of disciplined process, good habits and learning from experiences. Read in detail at Left brain thinking to building great code.

Picture of left brained thinking

Right brained thinking

A logical ‘left brain’ thinking is essential to good testing. Right brained creative thinking comes in handy to go beyond the left, to enable us to vary the paths, discover new paths and improving outcomes. Thinking creatively is about thinking visually, thinking contextually and thinking socially, using pictures to think spatially, using application context to react, experiment and question and then morphing into an end user respectively. Read in detail at “It takes right brain thinking to go beyond the left”.

Picture of right brained thinking

The right brain creative thinking comes handy, to go beyond the left. To enable us to vary the paths, discover new paths and improving outcomes. This is not to be misconstrued as random or ad-hoc, though randomness does help. It is great to start with a logical/organised thinking, add a dose of creative thinking and finish it off with random meanderings.


Role of Abilities, Checklists & Tests for Accessibility

Curated by T Ashok @ash_thiru

Summary
Evaluating accessibility by using only able-bodied people(testers) or by enabling accessibility only via use of checklists are not useful. The simplest tests to ensure a complex application is well covered via ‘only testing using the keyboard’, ‘relying on the spoken word to navigate’, ‘using high contrast mode of display’ & ‘disabling certain options in the browser’ (for web apps). This article is curated from four interesting articles.


Valid experience is vastly more important than mere simulations. Accessibility testing really isn’t so different than surgery in this regard. You want a team chock full of people who are “native users of assistive technology” (which is the nice way of saying “disabled”), and not people simulating disabilities.

says Sheri Byrne-Haber in her interesting article “Make People with Disabilities Part of your Accessibility Testing Program”.


Why would that be? Here are some of the key reasons:
Running an accessibility testing program without people with disabilities is disrespectful “..at the end of the work day, those non-disabled testers get to go back home to their abled lives. They do not experience the day-in, day-out 24×7 frustration of someone with a disability slamming head first into either digital or physical barriers every single day.”
Running an accessibility testing program without people with disabilities is neither inclusive nor diverse “…no one can legitimately claim that testing with completely able bodied testers will give you the equivalent experience of a population of people with varying degrees of disability.”
Running an accessibility testing program without people with disabilities is neither inclusive nor diverse “…not considering or using people with disabilities in your accessibility testing program is deliberate and discriminatory exclusion, the opposite of being diverse and inclusive. ”

Do read the full article here (5 min read)

In the article  “Accessibility Checklists — Just say No”,  Sheri Byrne-Haber says in the long run, general accessibility checklists do far more harm than good in establishing a good accessibility program as:

  • Checklists are part of a reactive, not proactive accessibility practice
  • Checklists are a black and white solution in a sea of gray
  • Checklists do not motivate people to think neutrally or positively about people with disabilities
  • Checklists are a crutch
  • Checklists put blinders on users
  • Checklist items open to interpretation create more problems than they solve
  • Checklists don’t lead to an inclusive culture

“Design for accessibility, train everyone who touches the content and infrastructure, and include people with disabilities in every step of the path including research and testing” is what the author concludes at the end of the article.

In the article “Three tests for accessibility“, Jonathan asks the question “given that there are so many criteria for good accessibility, and that the application itself may be complex in many ways, how do we verify that all parts of the application are accessible?” and outlines three simple tests to accomplish this:

  1. Screen-reader-only test : Try to use the application, relying only on hearing the spoken word.
  2. Keyboard-only test : Try to use the application, relying only on keyboard input. Put the mouse away or disconnect it, or disable your trackpad.
  3. Automated test: Run an automated testing tool on your application, analyse the output and address all major errors detected.

The 6-min read of this article is time well spent.

Continuing on this same train of thought is another interesting article by Karl Groves that outlines the six simplest web accessibility tests. The author outlines these as :

  1. Unplug your mouse and/ or turn off your trackpad- Interact with the site using only the keyboard. 
  2. Turn on high contrast mode- Colors on the site are essentially removed entirely.
  3. Turn off images – Images shouldn’t be required to understand the page and shouldn’t be relied upon for important UI controls
  4. Check for captions or transcripts- If you have media on your site, check for captions, transcripts, and other possible alternatives
  5. Click on field labels- Issues with forms tend to fall into three main categories: Missing or incomplete labelling, ineffective error handling, and poor focus control.
  6. Turn off CSS – Presentational methods cannot be overridden by users who’ve created custom style sheets.

Read the full article The 6 Simplest Web Accessibility Tests Anyone Can Do

Click here to read a summary of six interesting articles in accessibility..


About SmartQA The theme of SmartQA is to explore various dimensions of smartness to leapfrog into the new age of software development, to accomplish more with less by exploiting our intellect along with technology.  Towards this, we will strive to showcase interesting thoughts, expert industry views through high-quality content as articles, posters, videos, surveys outlined as a SmartQA Digest weekly emailer. SmartBites is “soundbites from smart people”. Ideas, thoughts and views to inspire you to think differently.



Interesting articles on Accessibility

Curated by T Ashok @ash_thiru

Summary
This article is a collection of interesting aspects on accessibility curated form a set of SIX articles covering “What is accessibility”, “Six steps to create accessible designs”, “Ethical design”, “Dos and don’ts on designing for accessibility”, “Ten tips for making website accessible” and “How to create interfaces that benefit all”.


(1) From Accessibility in Design
What is accessibility?
Accessibility describes how many people can use the interface. This usually involves designing for people with various types of disabilities, such as vision, hearing, mobility, cognitive, etc.

There are many obstacles in designing for accessibility, and the only real tool for finding solutions is empathy. Understand people’s needs as much as possible. Make yourself open to worlds unlike your own. It’ll make your product more accessible, but also more human.

(2) From How to Create Interfaces that Benefit All: Accessibility Testing and Inclusive Design Principles
Smart designs aren’t created to impress your peers. Smart designs (and smart designers!) use design elements like colour, placement, and interaction in very intentional ways to help site visitors accomplish their goals — while giving the user the most enjoyable experience possible.

Six tips to create accessible designs 
1.Start with wireframes that includes people who are colour blind, or have poor vision, those with hearing impairments, or cognitive limitations, older users, younger users, power users, and those who just want a great experience.
2. Ensure accessible layouts by:  
– avoiding“staggered” layout of images and text
– display most important information first
– consider screen size especially small monitors
– think about menus especially when convert to hamburger
3. Design for keyboard accessibility
4. Test your colours and fonts are for readability
5. Create accessible forms
6. Learn how major sites work for keyboard or assistive technology users

(3) From “Ethical design and accessibility” 
“If your design is providing a benefit to one group of people at the detriment of another, it may not be ethical.”

Design is not about expressing yourself.
Design is not about following your dream.
Design is not about becoming a creative.
Design is about keeping people from doing terrible things to other people
— Mike Monteiro

Ethical design means thinking about your product in the context of its users and their environment. Designers need to learn how to think about ethical issues, and ask themselves:
– What are the issues facing the users I am designing for?
– Is there a social or environmental cost to my approach?
– How do I keep my product from discriminating against its users?

 (4) From Dos and don’ts on designing for accessibility

Dos and Don'ts for designing for accessibility

(5) Keen on making your website accessible? Here are“Top 10 Tips for Making Your Website Accessible”

(6) Here is an interesting article on “How to Create Interfaces that Benefit All: Accessibility Testing and Inclusive Design Principles”


About SmartQA The theme of SmartQA is to explore various dimensions of smartness to leapfrog into the new age of software development, to accomplish more with less by exploiting our intellect along with technology.  Towards this, we will strive to showcase interesting thoughts, expert industry views through high-quality content as articles, posters, videos, surveys outlined as a SmartQA Digest weekly emailer. SmartBites is “soundbites from smart people”. Ideas, thoughts and views to inspire you to think differently.


10 things to be sensitive to deliver brilliant code

by T Ashok @ash_thiru on TwitterS

Summary
Great code is not result of mere unit/dev testing at the early stage. It is really a mindset that is key to producing brilliant code. This article outlines ten things that a developer should be very sensitive to enable the delivery of brilliant code.


 1.Be focussed
In each code fragment, do one thing well.  Attempting to do many things can become messy! Stay single-minded in what you are solving with this code.

2.Be defensive
Accidents happen, inputs may be tainted. Prepare for eventualities, be defensive in your style of coding. After all, it is your responsibility to stay safe!

3.Be clean
Reduce clutter in code, it is just about somehow getting the code to do work. Organisation, structure matters.

4.Be malleable
Avoid magic numbers, hardcoding. Be soft and pliable so that you can modify, extend easily.

5.Be expansive
Strive to understand the larger context where your code will be used, so that your code delivers value. ‘See the forest for the trees’ too.

6.Be a good citizen
Respect the environment in which the code runs, consume resources only what you need and release them when you need don’t them.

7.Be maintainable 
Code begs changes to be done the minute you execute it. Make it maintenance friendly. Also, remember that it may just be you who will maintain the code. Well with time, one also forgets why some things are, the way it is.

8.Be efficient..
It is not just about the functionality, it is about all other ‘-ities’, like security, reliability, compatibility, performance etc. Be sensitive to these aspects while you are coding.

9.Be testable
The ability to ascertain if the code is behaving correctly is paramount. Putting it hooks to enable testability enables you to write great code.

10.Be beautiful
Finally great code is not just text that when executed, works correctly. Treat it as a work of art that you produce. Let the choice of names, the structure, the organisation have a sense of aesthetic appeal. After all brilliant engineering becomes art.


About SmartQA The theme of SmartQA is to explore various dimensions of smartness to leapfrog into the new age of software development, to accomplish more with less by exploiting our intellect along with technology.  Towards this, we will strive to showcase interesting thoughts, expert industry views through high-quality content as articles, posters, videos, surveys outlined as a SmartQA Digest weekly emailer. SmartBites is “soundbites from smart people”. Ideas, thoughts and views to inspire you to think differently.

Signup to receive SmartQA digest that has something interesting weekly to becoming smarter in QA and delivering great products.

[grwebform url=”https://app.getresponse.com/view_webform_v2.js?u=hzsfs&webforms_id=BxdSM” css=”on/off” center=”on/off” center_margin=”200″/]