Sunday, August 17, 2014

Big Data application in Software Testing: An Enormous Growth & Research Opportunity

No matter what tools we use, what scripting language, what processes, design patterns, approaches, strategies, types or methodologies we use. Software Testing has always remained the same i.e. being "Function Centric" only. The ways has been different in order to verify and validate the basic functionalities under test but largely the motive has always been the same.

But now the paradigm shift is beginning to take place, which might be seen by some people who likes to think about the future. The shift is towards the way technological applications' are used and how efforts are being invested in order to study the usage or usage patterns of these technological applications by end users. 

For example if there is a mobile app that tells about the latest football match score many people can use it differently as per their preferences. Like a normal football team fan use it to see whether his/her team is winning or not by only checking scorecard in midst of his daily job schedule. A second user can use it to watch live telecast of the match. A third user can use to it bet on teams, A fourth one to track only his/her favorite player and also a fifth one who can use it to see that when the match might finish and at what time he should hit the road (that has the stadium in its path) to reach his home on time to attend his kid's birthday party.

So there can be a lot many use cases where an app can be used differently apart from it's basic functionality. Now most of the companies are today concentrating on this basic functionality that focuses more on their business model and USP of the app itself. This is what is absolutely right as per the today's utilization of their app's service solution. 

But as we are gradually witnessing the role that usage analytics based on Big Data utilization is playing these days, we can say that the days are not far when applications has not only be tested for their basic functionality but also for other logical patterns; the information provided by these applications can be or is being utilized knowingly or unknowingly by the end users. 

In the present day we have seen an exponential rise in analytics tools that can deliver all the hardware/software platforms end users are using, navigational paths, conversion rates, most sold item, least read book chapter, crash analytics, performance statistics, location based usage and many more kind of analytical informations. 

This is just a tip of expanding global industry we are witnessing. The present day scenario is that the tools are good enough to deliver these stats upon some triggers but they are incapable to help us look more into a kind of expandable map of possibilities or provide meaning to this data more precisely. Currently the product managers or developers or testers make sense out of this slightly cooked data to improve there applications. But what I see is an approach that is easy to follow from today itself such that we can use this Big Data more effectively for testing and making products far far better.

Few ways by which we can visualize the possibilities of Big Data based Analytical Testing are:

  • A tool which can draw all the usage patterns of the app, visually depicting all the possible navigational paths for example: paths of the most frequently used UI navigations map etc. Tool should be capable of dynamically assigning paths with respective weights as the app is being used by end users to make a real data real usage based prioritization testing plans/strategies etc.
  • Users' usage patterns based on real time events/occasions sometimes defines usage of applications in unique ways so coverage of those scenarios to provide more value other than the basic functionality. This would require analysis of entry and exit points to the applications and pre and post event analysis.
  • Capture of frustrating or appreciating moments of usage of the applications apart from reviews, ratings, emails etc i.e. conventional methods. 
  • Testing of user desired capability expectations in scenarios the requests can be instantaneous and from unprecedented platforms e.g. if a user does a verbal query from his LG G-Watch for the latest position of a pizza van. But suppose if this feature is only provided on website by that respective company then this might prove to be potential bad customer experience. Although the basic functionality of the app still is functioning perfectly on the website. But still that platform rendered not useful for this customer who is driving and wants to just know the status spoken up by his smart watch. In this case company restricted customer of using real time update just because company never came to know that there might be around 50 users that can do exactly the same thing again or some of them have even tried and failed earlier, making them shift to some other pizza vendors. 
These are only a handful of ways that I have provided in order to make you all think that what all other ways can be there and how we can develop or envision them in order to make software testing more advanced and more useful than its present day applicability. 





Thursday, June 19, 2014

Artificial Intelligence & Software Testing + The World of Artificial Gene Synthesis induced Artificial Intelligence!

More on Artificial Intelligence and Software Testing:

There is a lot of discussion/debate going on, in the high-tech research fields based on artificial intelligence and its implications on software testing. It is being foretold that intelligent machines like IBM Watson can take over all forms of testing in coming decade or so.

Initially artificially intelligent entities will not be fully aware of their own self. And the process of generating result oriented thoughts/solutions either by induced stimuli or by mere observations will still be a thing of distant future for them. They will not be suitable for jobs where they can create, design or develop according to set protocols and give desired outcomes.

So the next best use of their "artificial-intelligence" will be based on learning how to test or verify & validate a particular functionality as per desired behavior. This AI can be set to try and match the observed results with expected results. And in this due process; the gradually learning artificial conscience can learn to perceive, observe, and judge the observations as accurate or erroneous based on the desired functional patterns.

To understand the underlying concept:

Think that you are being asked to create a pencil that writes with ink instead of carbon lead. The first step to solve this problem will instantly start with imagining a pencil in our mind. And then later we will proceed to think of ways to put ink in the pencil structure and so on and so forth. 

But imagine if somebody has not seen a pencil with carbon lead or a pen with ink refill. How this person can start his thought process, what should be the initial step for him to proceed with? 

Now consider the same person who has played with a pencil and pen both. He knows about its functionality, its shape, color and other properties. If the problem is now asked to this person he will have a starting point to proceed with and there is a possibility that even, if he has limited intelligence capability, he can imagine a pencil with a pen refill inside it. 

What we observed from this example is that to test and to verify/validate is not a job where intelligence is not required rather a job which helps instill a thought process. In such a way that concepts related to the functionality-under-test or validation/verification becomes clear. And sets a path which leads to an actual functional result oriented outcomes. Rather than just a series of failed attempts without any clear point of intelligence incubation.

So the initial applications that we wish to derive out of AI would be more test-centric rather development-centric. In more crude words it will be a baby step towards actual testing from simple tasks of Verification & Validation.

Now another point is that no Test Capable AI also can start without an initiation. Initiation point for this will be a different kind of test data which will give a hint of pattern to this AI in order to initiate the perception, observation and start applying the judgment in testing the functionality.

Mathematically and by the usage of suitable computational resources these concepts will be tested and provided with stats to approve or disapprove them.

Biologically induced Artificial Intelligence:

Now we will talk about a new concept that I thought of while going through the videos of Dr.Craig Venter in which he remarkably presented the creation of artificial DNA sequence. This work can be of great potential in sequencing artificial DNA structures that can work on perception of input patterns and provide results in the forms of algorithmic self-assembly structures. 

When these algorithmic assemblies will be compared to an expected result the test can be said to be verified or validated. 

To understand this concept think of a much simpler problem i.e. 2+3=5. Now the initiation to test this equation will be the already set: algorithmic self-assembly structures by which we can define each known integer respectively. 

The first step will be to perceive that there is a pattern where integers are only used. AI can narrow down its observation patterning capability to only integers now. Now when the this observation will be provided to test to the DNA, it will react to the stimuli and would arrange itself in a uniquely identifiable self-assembly structure. 

This structure will validate/verify that the result is integer, & function to be tested was addition. Hence the result will match the observation with expectation successfully.

As this technology will be based on DNA, Self-Assembly, A.I and possibility of mutable DNA structures as complex reasoning pattern assemblies. It will show us the window towards developing a possible integration of electronics with genetics resulting in computational genetics/artificial genetics induced intelligence or Artificial DNA based Intelligence Simulation. Also as the DNA will be artificially cultured, it can be made perishable; hence human or human(ely) controllable (debatable topic). 

There is a lot what we can achieve through this new convergence of Artificial Genetic Structuring with Artificial Intelligence. And there are immense number of possibilities where it can be put to use in order to give astounding results.


So until this is proved and implemented, let us keep exercising our brain muscles and delve into the amazing world of technology and science.

Monday, April 28, 2014

Lessons to be learnt from Mr.Narendra Modi for IT Management

I have been always a keen follower of Mr.Narendra Modi's (Renowned Indian Politician) thoughts on his governance, growth and development methods. 

He has recently become a more impacting and youth driving + motivating sensation in India, with millions of motivated youth from urban and rural parts of India following him and wishing him to be next PM of India. 

The few lessons that he conveys to public in his rallies are of such unique but brilliantly vibrant that they can be applied everywhere to give astounding results. I wish to derive the learning aspect of his speeches to devise methods that can make IT Management a very focused route in order to benefit all i.e. client, team, ourselves and employer respectively.

So here are the points:
  1. Never Think of Becoming Someone rather Think of Doing Something: This mantra tells us the root of success in life. When a person thinks of becoming somebody important with power or prominence, it can hurt sometimes if the dream is not accomplished because not always you get what you want, not always the results of your hard work pays in the same amount you toiled for it. When this failure is encountered a person might get demotivated in life and can lose the sight on goal. Rather if you think of doing something which has importance, it motivates the person to deliver in short term goals which progressively leads the person to the larger goal and ultimately success. At times if a person loses the sight of short term goals or feels demotivated he can easily come back by realizing his stagnation or turmoils or mistakes. So now how can I apply this in managing an IT workforce. If we set target for our teammates on short term goals like automating parts of functionality each week, developing this part of code each week rather than giving them a bulk task of automation of complete payment procedure or developing code for complete checkout process. If we break the task it is easier to manage. In the same way if we think of earning a post of Delivery Manager we need to see that how well we are able to understand the basics of development while we are a novice developer, how will we advance on my skill set this year and how will I learn to mentor our juniors next year. Slowly like this when we pass the successive year we can later focus on leading team, innovating ang try to give value to client and then save company cost and increasing earning revenue. Working in the direction of doing something with excellence leads us to position of excellence and once this work habit is developed nobody can stop us from personal, social or organizational growth.
  2. Never look upon someone, never look down on someone rather look collectively towards achieving a goal: This suggests that we should neither look over somebody with self-proclaimed superiority, nor we should look over somebody thinking that he or she is weak, without self-decisive point of view. Rather we should look in ways that how we can contribute with him or her in order to achieve a common goal together. If we waste our time in petty hatred building views in a group or team we can never succeed both personally and collectively. In a team we should try to allocate jobs as per person's dire interest and fore-see how this allocation can be done in order to collectively drive the team towards its set goals. For example if there is a young programmer who does not code well but is good in criticizing other people's code and on the other hand there is a software tester who can find discrepancies in code. This young programmer and tester would normally in real world be asked to continuously do the same job on  daily basis even though there vested interests are in opposite roles. But if we don't look upon or down on there performance and adopt a collective approach of problem solving keeping the interests of our code base quality as the benchmark of success we can easily switch the roles and see if this really works. If it works it is good for the team and them if not we can see how there roles can be slightly modified so that they can become code reviewer and software developer engineer for testing respectively. Thus solving both the problems and creating a win-win for all.
  3. Life is choosing between intense hard work, hard work and smart way of working:  People can do the jobs in 3 ways, people  achieve their goals in 3 ways, people life is also governed by these 3 ways i.e. by doing intense hard work, or by doing hard work in general, or by doing work smartly. Suppose there is functionality to be tested this can be done by covering all the test scenarios manually on all the required platforms by working day and night i.e. intense hard work. This can also be done by combining automation and manual testing by covering all scenarios on all platforms i.e. hard work.Third is using cloud based automated test environments for test scenario execution in parallel yet covering all the scenarios. So the essence is that no matter hard work is always rewarded but smarter way of doing work is appreciated, it saves valuable time, earns benefits and above all develops a way of thinking to do things unconventionally. This out-of-the-box thinking makes us smarter and helps us in making our work more efficient and productive. 
  4. Come together to Grow together: If we come together in a team and participate in each and every decision taken by the team management whole-heartedly we have better chances of succeeding together. Rather if people within the teams are divided in sub-groups who does not keep their points or discuss their issues going forward in a particular direction it becomes difficult for all to come together and work towards a team goal. Slowly all members lose interest and neither the team goals are achieved nor the individual goals are achieved. But if all members discuss things and resolve issues beforehand and then work towards a goal whole-heartedly it increases the probability of succeeding. Effort should not be made in the direction of avoiding or alienating team members if they are not willing to co-operate but towards finding ways so that all come together for the same.
  5. Freedom to Work as per own's interest for some part of the day:  I personally have experienced the same in my team once. There was Software tester in my team who liked to think about new product designs and innovative products he always was full of wonderful ideas to discuss. But he was going nowhere with them as his job was just the mobile apps for the client. Once a manager thought of giving him some time to analyse the mobile apps and provide some feedback. After 2 days the draft version of app features suggestions he proposed were so marvelous that client's marketing head wished to meet him in order to work on the same ideas he proposed. This is the power of doing what we like doing the most. In IT companies if for identified individuals who have shown some interest based caliber in doing something different that in turn can benefit the project/product should be encouraged.
  6. Growth for all is the solution for all problems: In a team if there are 50 IT specialists, then a lead or manager should have a plan from beginning to ensure growth for all these 50 members from day one. If a lead or manager fails to do so, the team will lose talent, team members will lose interest, team will lose targets, and like a domino effect everything will fail one day. And one day the lead or manager will have to escape and witness the downfall over the shoulder's of new lead or manager.
  7. More the power lead/manager has distributed to subordinates the more powerful the team will be: If a person or 2 person have all the power and tries to manage everything then the team or system will fail. If the person-in-charge distributes the power to capable subordinates and in return looks into solving problems that these subordinates cannot solve, will make a team more productive. Rather than wasting time in managing subordinates. 
  8. A Creative Man is motivated by Desire to Achieve but not by Desire to Defeat others: Suppose if I try to compete with a fellow architect and try to defeat him by doing few things better than him. What really I would be doing is that I will be limiting myself to the capabilities of the other guy and concentrate my energy in working on skills that will make me only competitively superior to the other guy. But if I work to compete with myself if I challenge myself that OK if I can design an effective architecture for developing High Performance Cloud Services for Healthcare then how can I better myself in reducing the throughput to a much lower level. If I work in this direction then I will be taking my knowledge and skill set level to a much higher standards rather than wasting my time on petty individual targeted advancement of skill set.
  9. Life is 10% what happens to you and 90% of how you react to it: Suppose I get a low performance appraisal this year so shall I stop performing and stop enhancing my skillset, shall I stop going to office, shall I stop enjoying my work? No if I get something that I don't deserve then I should have the self-esteem and confidence to show the management that what I am capable of. If a person works undeterred towards his/her goal no matter how long he/she has to work he/she achieves what he has always deserved. No hard work goes waste no learning is useless. If we wish to go ahead and succeed we should learn to tackle 10% of hurdles with 90% of positive and powerful determination. 

Friday, April 11, 2014

How Smart Watches or Smart Gadgets can truly be made Smart?

The Smart Watches that we currently have in market or will see in the forthcoming years cannot become truly Smart if they don't present the users with something that is based on disruptive innovation and makes the prospective users accept it as a daily need rather than just providing them with a new accessory for a fashion or geeky statement.

These smart watches will be mere "Mobile Phones" miniaturized and redesigned for wrists having the same redundant phone features without presenting the users with joy and excitement of using a truly remarkable smart companion. 

The features that should be included in a true smart watch in order to stand out as a successful product needs to be supported with focused research & development plus with an understanding that redundant products don't last long but the products can creates their own market does.

Points that can make present day smart watches truly "Smart" are:


  1. A smart watch should have its own tech to access the internet. It is a "Good to Have" feature now that the present day smart watches rely on mobile phones for the same but in future such devices would not be worthy as they are bound to lose user's interest. Mainly because of short battery life, relying on bluetooth short ranges etc. A smart watch that will have its own internet access power will stand out and that access should be supported in all forms like SIM, Wi-Fi or Tethering.
  2. A smart watch needs to have the ability to set smart notifications. A smart notification is like suppose I like to get updated about Formula1 news but I do not want all the news to be collected but only one like Ferrari/Alonso standing in Australian Race. Price of USD/INR fluctuation below certain level etc. Check how many colleagues have voted yes for an weekend outing only with a vote count notification after my Friday's 3:00 pm meeting, remind me of my friend's ping in the evening that I checked but not replied etc. If we can provide with this ability to set smart notifications then that would be a really helpful feature. 
  3. Judging the mood of the wearer would be wonderful for example the best way to do it is to notice that how many times the wearer had a laugh in a day or how many times he paid for Starbucks coffee or how late he slept and got up matching it with physical activity next day. So there are many ways in which this also can be tracked and can provide more than just activity tracking. Once we know the mood of the wearer we can make other features on the smart watch behave accordingly like if the person is happy then we can tell him about weekend's weather or latest movie, if wearer is tired due to busy day and less sleep we can decrease the notifications and give the person a more peaceful aura and so on and so forth.
  4. Provide the watch with the ability to detect health conditions like if a user's blood pressure always stays at 80/120 with 5% variations normally but if there is steep rise or fall then watch can ask for SOS alert to preset emergency numbers. If there is sudden rise or fall of heartbeat then ask for user's attention and there can be many other features that can help in this way.
  5. Usage of smart watch's processing power when it is not used at some points of day in order to collect meaningful data/info for the user like I wish to know relation between ontology and knowledge engineering then ask the watch to search through Google's top 10 search results for this and present with a informational summary.
  6. Learn through user engagement like there are times in a day when user will spend time on the watch like going through notifications, checking news headlines or set preferences. So this time can be used to push the user with the info that he/she has shown more interest in like checking of social networking feeds, checking calendar for planning, reminder to reply missed pings/calls/texts etc
  7. Make use of sensors on device to provide with relevant information at relevant time
  8. Ability to connect derive and use information about the user from all the computational platforms like desktop, laptop, phones, home automation systems, music players, other smart devices or sensors. This can be achieved by slowly building the ecosystem or by providing smart watch all possible ways it can connect to these external electronic environments without owning them but via collaboration.
  9. Ability to get long battery life or power through solar energy or utilization of human body heat/movement for energy purposes until other sufficiently advanced technologies are not fully developed for commercial use. What if your watch charges if you tie it around your leg and go for a run? 
  10. Most importantly it should have the ability to take feeds from smart watches of friends or relatives who authenticate for example only sharing their Lunch time location so that we can meet up and discuss new ideas. My brother shares his latest time spend in gym for a push-up challenge. My wife's mood share to plan the weekend :) etc.
  11. Ability to provide probabilistic predictions based on my personality like if I ask my smart watch that what will be the best time to go downtown for getting my prized possession watch glass fixed so that there is minimal traffic based delay, or how frequently I need to walk in office so that I can burn at least 500 calories etc
  12. Ability to give me geo-location based feeds of interesting stuff that is happening around like I am travelling to a trekking track but there is hot water spring nearby or if I go to a movie in the evening and find that there will be a surprise visit by the star cast at that theater. So all this stuff can be taken from search services available but the striking point is the semantics that will make this possible
  13. Providing the watch with enough computational power so that it can be connected to a larger display and students in developing nations can use it for very basic & general computer related jobs like net browsing, video streaming, communication etc.
  14. Lastly giving watch the power to authenticate or securely identify the wearer. For example if a pin is required for a transaction smart watch can generate one based on encryption to authenticate a payment, provide secure identification for monitored areas, and provide security officials with users identification in case of fatal incidents.
These are few ideas that can make a smart watch truly "Smart", working and learning ways on how some day these can be implemented. So continue to make your grey matter more dense and enjoy the gifts & joy of learning each day more about science & technology. 



Sunday, February 2, 2014

Technology Trends that will drive the next decade till 2025

Technology Trends in the upcoming decade 2015-2025: 
Crowd-Based Business Models in Developing Nations: Crowd Funding, Crowd Sourcing, Crowd Testing etc has been a hit in the developed nations. In the coming 10 years if Governments & Entrepreneurs of Developing Nations see the potential of the "Crowd" then this model will grow tremendously in these countries and help these respective countries also grow exponentially. The wonderful USP of this "Crowd" is that it can be applied to every single thing if applied sensibly, and with a solid plan. It has the power of empowering young kids who wish to innovate & become entrepreneurs, it helps people get jobs, and businesses plus nations grow.

Commercial Space Explorations & Tourism: It will be a growing trend to closely watch in this upcoming decade. As all the major space exploratory organizations have expressed their interest in inviting Private companies to provide solutions, services, R&D, Innovation, and help leading nations in advancing their race to explore and commercially benefit from the vasts of offerings that these depths of space has to offer. Space tourism will attract more companies to come forward and devise safe and cheap ways to tour the space. Presently NASA & Virgin Galactic are the first pioneers in taking steps towards commercializing space exploration & space tourism respectively.

Wearable Human Interaction Interfaces: We will see a phenomenal rise in the coming 5 years when Mobile Devices will be considered a thing of obsolete tech. New Wearable Human Interaction Compatible Devices will be defining the way we will communicate with other fellow Human Beings. The infancy phase of this technology began when smart watches, sixth sense and activity/health tracking sports or medical applications centered wearable devices began to appear in late years of 2000.

Inclusion of Robotics to Living Rooms: There will be practical applications devised out of technology that long existed but till now had a very little impact on the lives of common people. We will see Robotics coming inside our living rooms and helping us in ways we never thought of.

Omni-Present, Omni-Controlled Smart Living Spaces: We will see a steep rise in light boards, cars, heaters, ovens, projectors, laptops, TVs and what not being controlled by one omni-control, omni-present network that could be monitored by our phone, watch etc. Technology will enable us to take control of all the things that surround us in the way we want and that will set path to the next level of human evolution & growth.

Bio-genetics & bio-engineering growth (Stem Cell & Space Microbiology): We will witness a boom of technology based out of stem cell research and genetics. We will be able to see increased number of medical procedures where utilization of stem cell research and genetics will be curing more diseases globally. We will see a number of research papers derived out of research our scientists will do in the area of microbiology under the effects of space. It will give us more insight to our origin and curing of some of the major diseases.

Food & Industrial Revolution due to 3-D Printing: We will see a revolution that 3-D printing will bring to this world. Developing & Under Developed nations will be able to develop cheap technology to print food out of ingeniously developed 3-D printers, as the technology has already showcased it's potential we can very well witness a move by WHO soon. Industrial manufacturing of precise machinery, in-space manufacturing, merger of nanotechnology and 3-D printing, bio-nano and 3-D etc such technology branches will emerge and help us solve some technologically tedious tasks in an innovative and much cheaper ways.

Education Centered Technological Growth: We will see nations concentrating on evolving new ways to educate their younger generations. It will be a phase where people will realize that the real meaning of education is to use it for common growth and the betterment of humanity. I again foresee; developing countries who has the potential to become the front runners in this direction. Many technological institutions and research centers will be set up which will focus on certain areas of science & technology such that it will not only benefit the nations specifically but also humanity as a whole.

Advanced Batteries or even No Batteries: There will be more focus in this decade to build batteries with low or negligible energy decay coefficients. In the same direction companies will focus on reduction in their size but increasing their longevity as a whole. R&D based on Super Capacitors or Ambient Back-scatter will see give astonishing results.

Big Data Analysis for Personalized Devices: This decade will be a starting point of big data analysis for personalized devices. People will be surrounded by a number of devices and there would be requirement where people at one point would not know which information is important and which is not for them. This is when we will see global technology focus shift from providing these devices to actually get meaning out of them.

Virtual Currency: We have seen how Bitcoin have grown to actual popularity and adoption by various companies across as a payment method. We might see birth and circulation of more robust technology based virtual currencies in future. Some controlled by Governments and some by no one having obvious pros and cons in both the cases.

Configurable Mobile Devices: Just as we are today able to configure our laptops and desktops in the same way we will see that we will be exactly choose in the future that which hardware we need to put in our mobile phone, smart watch or smart TV. We will have the power to configure all the hardware and software in-and-out, to build our very personalized and self focused devices. Generic devices market will see a falling trend other than the ones that offer basic features in under-developed or developing nations.

This concludes my today's blog post. In the Next I will present some ideas that how Microsoft can again become the leading technology company as it once was. Thanks for the read.

Monday, January 27, 2014

Please follow me on my Twitter Account for my Micro blogs too


My Twitter Account can be reached at: https://twitter.com/mayankms 

Bad practices for a Software Test Engineer

People mostly talk about the good and the best practices but it is also important to know the worst or the bad practices which a Software ...