Saturday, April 25, 2015

Intel Education on Twitter

Intel startup program #IntelAccelerator https://t.co/fh78LFwP69
from Facebook https://t.co/fh78LFwP69
via IFTTT

Thursday, April 23, 2015

Apple starts kicking Pebble apps out of iOS App Store

Expected move from #apple. Rejecting #ios #pebble apps. http://t.co/HJmCNfTVLq
from Facebook http://t.co/HJmCNfTVLq
via IFTTT

Creating an Android Wear Watch Face - Tuts+ Code Tutorial

Creating an #android wear #watch face. http://t.co/i12A1s9znA
from Facebook http://t.co/i12A1s9znA
via IFTTT

Monday, September 29, 2014

Software Testing For Developers



These days Software touches every aspect of our lives. Not only does it runs on personal computers like Smartphone or Smartwatches, but it is also present in every industry.
As vital as software has become, it's not perfect. After all, it's built by humans, and we are known to make mistakes from time to time.
To correct those mistakes in the software world we have software testing.





So what is Software Testing anyways?

Software testing is the process of analysis conducted to provide information about the quality of the product or service under test.
It can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs errors or other defects.


Making mistakes it's not the problem everyone does it, we are not machines that eat pizzas and write perfect code, we (the developers) are human beings too. We have software testing to address those mistakes. But the problem starts when developer finishes coding his/her software and says it is DONE! Without even considering testing as the part of the development life cycle.

Why I should care about testing?




No matter how good you are, you are not Chuck Norris! Sometimes you may end up working with other people's software and APIS that will not always work as intended, but you will assume that it does, or should, leading to a defects in your "perfect" case. In any of this cases we need to check everything and anything we produce because things can always go wrong.
  

The ABC of testing for Kids!



To get started with testing let's get a look at smoke testing, which is the very basic set of fundamental test cases  that you will need to run to make sure at least the basic functionality of the software remains rock-solid.  It does not guarantees software as release worthy but failing a smoke test will confirm that the software is certainly not release worthy.  Since you want to do the smoke test on regular basis, it makes sense to automate it.

It is always challenging to create a piece of a software system that fulfills the client needs, ready for use. Especially when it should be done in a very short amount of time, from an idea to a fully functional and tested piece of the application. Achieving the Definition of Done is hard but not impossible. Below are some of the tips that may help you in achieving the impossible.

Focus on your client, think: "Where the presence of bugs would hurt your client the most?", then let your answers drive your testing.

Keep the Bigger picture in mind: While testing needs to be meticulous and thorough, there is no point being fanatical about it. If you get bogged down by trying to achieve high coverage over one part of the system, you might end up not testing some other parts at all.

Increase communication with client to avoid misunderstandings: In the meeting, discuss all points whichever unclear or need some additional information. These communications will resolve the problem easily and quickly and will help to avoid any misunderstandings. Once you discuss these points, it should be communicated over email as well. Basically, simple rule is that don’t keep verbal communications.

Start writing early test cases: If you start writing test cases during early phase of Software Development Life Cycle then you will understand whether all requirement are testable or not. While writing test cases first consider Valid/Positive test cases which cover all expected behavior of application under test. After that you can consider invalid conditions/negative test cases.

Make a Test Plan: Start testing by first writing a Test Plan. It's a document describing the testing scope and activities. It is the basis for formally testing any software/product in a project.

Start with obvious and simple tests:

"Make everything as simple as possible, but not simpler" -Albert Einstein.

If any such case fails, developers will want to know it sooner rather than later. While you need to check invalid and unexpected input, check valid and expected input first. Make sure you do sufficient testing i.e. unit and integration testing before you release your code to the client. 
Note that debugging is not software testing.

Start testing with positive mindset: Start with a positive attitude and don’t think that there will not be a bug in the code. If you are testing application with intention of finding bug then you will definitely get bugs in the code.

Test broadly before you go deep: Check all parts of the program quickly before focusing. Start with core/primitive functions. You may have to fix those before you test the rest.

2 heads are better than 1:


Involve someone, may be a team mate to assist you with your testing. In this way there is a good chances that you may be able to get better results.


Happy Coding and Testing!

Tuesday, February 28, 2012

Write less do more, Juice UI for Asp.Net WebForms


At MVP Summit that was held today, Scott Hunter commented about an open source project “Juice UI”, it is more or less like the ajax control toolkit for asp.net except that Juice UI is a collection of Jquery components, that is targeted for Webforms developers. To use it you need to install Juice UI Nuget Package to your project, right click on project reference and click Manage Nuget Packages and search for Juice UI.


Official Website: http://juiceui.com
Controls List at: http://juiceui.com/controls


When the installation completes you will get some new scripts files in your script folder.


Also in web.config you will get something like this…




Now on the aspx page add a script manager, a textbox and then a juice ui autocomplete.



Here I have defined the Minimum length of autocomplete to 3 and source to some random data
Note: targetcontrolid must match the id of the textbox.




Now the autocomplete is ready for action..





Sunday, February 26, 2012

TPL or Task Parallel Library (Parallel.Invoke)


TPL or Task Parallel Library:

It is a set of public types and APIs, which are under the namespaces of the .Net 4 Framework

System.Threading
System.Threading.Tasks


In short the purpose of the TPL is to make developers more productive by simplifying the process of adding parallelism and concurrency to applications. 

Pros: 

The TPL scales the degree of concurrency dynamically to most efficiently use all the processors that are available. The TPL handles the partitioning of the work, the scheduling of threads on the ThreadPool, cancellation support, state management, and other low-level details. 
It can maximize the performance of your code while focusing on the work that your program is designed to accomplish. 

Cons:

Not all code is suitable to work in parallel; for example if i have a loop that iterates few times or it performs a small amount of work, the overhead would be visible in the performance of the application, causing it to work slower as compared running the code in serial.  
It adds complexity to the program. 
Based on my experience the threadpool culture may not match the culture of applications that were upgraded from previous version of .net framework.

To use TPL in our code first we will add both namespaces: 

using System.Threading;
using System.Threading.Tasks;















First let's look at Parallel.Invoke method


try
{ 
Parallel.Invoke(
                () =>                   
                {
                   SomeMethodA();
                },
                () =>
                {
                   SomeMethodB();
                },
                () =>
                {
                   SomeMethodC();
                }
            );
}
catch (AggregateException e)
{
            string AggregateError = e.InnerException.ToString();
}

Now, what happens here is that SomeMethod A, B and C will run concurrently, if you look in the catch exception I used AggregateException, in TPL you will probably use it more often. Basically it is used to consolidate multiple failures into a single, throwable exception object.