Thursday, September 30, 2010

Half a loaf is better than no bread

One of my colleagues asked me a couple of days ago, what if the effort we are putting with changing strategies and taking calculated risk does not produce the desired result. This is a classic problem in decision making process which the famous management guru Peter Drucker called "The Right compromise". We have to start with what is right rather than what is acceptable ! Every decision we make has to meet its boundary conditions and we always have to make compromises at the end. But if we can not distinguish between right compromises and wrong compromises we are most likely to make wrong compromises at the end. To put this into context of the question that was asked, I will take Testing as an example. Boundary conditions of a software testing project are defined by uncovering quality bugs in the product and the confidence to release it to the customer. When we do not see the result that was expected, we make decision and as discussed above if decision was made with right compromises in mind that is "half a loaf" but goes into the right direction toward the ideal solution. Let me get to the point now. Here are the few problems that contributed to the outcome that were not expected:
  • Starting testing too late is the classic mistakes test team does in many situations. Planning testing ahead of coding is the answer. Tests have to be ready before code is dropped. 
  • Finishing one testing task before moving to the next is another mistake we do that causes above at first place. In testing world, its better to know something about all areas than everything about few, specially when objective is to hunt bugs. 
  • Failing to identify riskier areas   is a common mistake that leads to mis allocated testing effort. Looking at historical bug report data and collaboratively working with developers help identify the risky area correctly.
More later... agree/disagree please let me know..

Saturday, September 25, 2010

FPGA for data analytics

On September 20, IBM announced the acquisition of Netezza a data warehouse appliance company. Delivering high performance analytic solution using appliance approach is made possible using a commodity chip technology called FPGA. I did not know the use of FPGA in data analytics/query processing, until this Thursday, when I was talking to one of my colleagues and mentors at work. This made me more curious about the architecture of Netezza appliance and use of FPGA in general.
What is FPGA and why is it popular in large data streaming?
As it stands for Field Programmable Gate Array, the FPGA chip can be programmed by customer after manufacturing. They contain Programmable logic blocks capable of performing combinational logic.
Since high performance business analytics means operating on very large data sets, traditional warehouse systems struggle to move data in low latency from disk over network. The Netezza appliance exploits the use of FPGA to filter out extraneous data from the source to eliminate moving them out of the disk. The approach frees up CPU, memory and network to process data that is not needed for the query to satisfy the condition hence boosting the performance 10 to 100 times compared to traditional system. The key building block of a Netezza appliance inlcudes:

  • Netezza host is a linux SMP server that presents standard tools and configuration to the user. The host is a software layer which compiles SQL queries into executable code snippets, create optimized query plans and submit those snippets to the MPP nodes for execution.
  • S-blades - These are high performing blade servers with multi-core CPUs and FPGA. The programmable software called FAST engine reside on FPGA which does the magic. Take a look at the picture on the right, the FAST engine uses direct memory access of compressed data, uncompresses it and passes to project and restrict engines which filter out columns and rows respectively based on the parameters of the SELECT and WHERE clauses of SQL query. The filtered rows are very low percentage of the original data. This data is then given back to memory for processing by CPU cores. 
Query results are sent over customized fast network and aggregated by host to present to users. 
References:

Friday, September 24, 2010

Is it Zero emission if its electric ?

Yesterday BMW announced its Mini EV scooter in 2010 Paris Auto Motor show. The buzz was that it is iPhone ready  which actually let you connect your iPhone to it and use as a console to operate the scooter
electronically. Looks glamorous too... Anyway, thats not the point. The point is that we the public are easily convinced by these big Car manufacturing companies that all of their electric substitutes are zero emission or emission free. But is it a valid case... It is zero emission only if the electricity generated is zero emission. This prompted me to do some digging on the source of electricity in this country.
You will not be shocked but surprised to know that majority of electricity used in this country is generated using fossil fuels; almost half using coal (Source: Department of Energy website ) Only one fifth of US electricity is provided by Nuclear power. The picture on left shows the different sources that produced electricity we use everyday.
Power plants that burn fossil fuels and materials made from fossil fuels and some geothermal power plants are the sources of about 40% of total U.S. carbon dioxide (CO2) emissions.
These power plants have the biggest impact on the landscape and the environment we live in. The real question is that this big push towards electric cars and scooters are going to have net positive impact or not.  I guess, electricity demand will surge in coming years as we will need to charge at least one car in our garage every night. But I am sure electricity power generation is also working to make themselves greener. As long as new sources of electricity comes from renewable energy sources, these electric vehicles will qualify as zero emission. I wish I have a  Mini e if I could afford it :(

Tuesday, September 21, 2010

Sunday, September 19, 2010

Trust your instincts, switch to ad hoc testing

As a QA manager, I have to constantly evaluate the most fundamental aspects of testing in my project that is finding bugs in the code. What if you implement the well designed and created test plan and still do not find bugs. Or you simply encounter resource and time problem, where early detection of bugs is much more important than following the process finishing the automation for example). I talked about exploratory testing in one of my previous posts. Exploratory testing is a informal testing which is totally different from the formal testing paradigm where emphasis is on reuse such as acceptance and regression testing. Ad hoc testing is considered by many as aimless black box testing approach, but its contextual. In many situations ad hoc testing can be very useful.
So what is an ad hoc test?
An ad hoc test is a case which you run only once unless it uncovers a bug. A primary goal of ad hoc testing is to uncover a new bug in the product. If exercised by highly experienced tester it can be very effective. To put into perspective, each testing method's strength and weakness can be measured in terms of defect finding power and confidence building. Ad hoc tests are supposed to have high defect finding power but low confidence building attributes.
Ad hoc testing approach:
  • Pair testing - This is a kind of improvisational testing where two people collaborate and work together on finding bugs using ad hoc testing. The improvisation of originally planned testing document can be very useful when done by group. Improvisational testing is also very useful when verifying a fixed defect.
Advantages of ad hoc testing:
  • Discovering missing testcases - can find holes in your original testing strategy that can be incorporated later.
  • Gives more understanding of how program or feature behaves which may not be known by reading external designs.
  • gives better understanding of the testing priorities, for example if an ad hoc test runs very well, you can decide testing in that area can be deferred to the later stage.
So, how do I do ad hoc testing effectively?
    Ad hoc testing is challenging because its highly intuitive and has very less logical structure. 
    1. First take a paper and pencil and note down most important thing you want to know about the code and specifically what you want to achieve in how much time. Also what you are going to do if you do not find a problem.
    2. Understand the design goals and requirements for the low level function you are going to test. what choices and assumptions were made by developers when they designed the function. What are the weaknesses of these choices and see if you can exploit them.
    3. Read defect report for similar or same project. what kind of problems developers or other team are finding. Expand your horizons in breadth and width. For example running your ad hoc test on optimized/profiled build or on different platform.
    More, as we progress on our own exploratory tetsing...until then keep testing !

    Tuesday, September 14, 2010

    google calculator

    Did you know that you could use google search to calculate trigonometric function, convert units or simply do arithmetic functions. Take a look at few examples and try it out:

    http://www.google.com/help/calculator.html

    Sunday, September 12, 2010

    Japanese Foresight survey

    Japanese government released its foresight survey in June which basically is the futuristic view of a panel of 40 scientists. In past these foresight survey has been very accurate. In 1997 these futurists said that Internet based phone service would be available in 2003, the same year Skype was debuted. Here is the current foresight survey taken from Popular science magazine:
    2020 - Thin flexible electronic displays will replace newspapers.
    2022 - Synthetic blood will make blood donation unnecessary
    2023 - Any cancer will be cured by medicine
    2025 - Electric cars will go 310 miles in a single charge (In fact with rapid enhancement in Lithium Ion battery technology, this could be possible in next 6 -7 years.)
    2026 - domestic humanoids (intelligent robots) will do house chores
    2028 - Television will produce smells and tastes to every living room
    2030 - Artificial Intelligence will be able to form opinion on books, movies and art
    2031 - Earth orbiting space vehicle will offer sightseeing sale.
    2033 - Stem cell research will produce artificial organs
    2033 - Computers will evaluate policy recommendations and institutional plans
    2035 - Commercial flights will be 100% autopilot
    2035 - Scientists will be able to extract uranium and other rare elements from seawater
    2037 - Seismologists can predict earthquake of a magnitude of 6 up to a year in advance
    2040 - A manned Lunar base will be established.
    Some appetite for your brain to think about future opportunities around these futuristic views. Let me know, which one you think will never happen...

    Friday, September 3, 2010

    How to be alone - give your brain a needed downtime

    I have seen many videos on how to party and network, but first time I came across a video to teach you how to be alone. This is by fiilmaker, Andrea Dorfman, and poet/singer/songwriter, Tanya Davis. Also you may be interested in reading a NY Times article about giving your brain a needed downtime.

    Make Everyone Smile

    Hey there! Just wanted to let you know that today is officially National 'Make Everyone Smile' Day! So, consider yourself officially...