Friday, March 11, 2016

Communication - it's very important in recruiting people

One of the common part of our professional life is we get mails from recruiters time to time regardless whether you are looking for job or not. Sometimes we read the mail, sometimes we just read the subject line, sometimes we quickly scan through. Either Way when you are not hungry you don't feel appetite for any food. Similarly, if you are not looking for any job, certainly you won’t give any importance to those job posting.

Typical positing says -

I have an urgent requirement with one of my clients, details given below. If you find your self suitable for the position, please send me your latest updated resume along with contact details. Please include your employer details as well.
Test Engineering
Norwood, MA
12+ Months

POSITION OVERVIEW:
Candidate will assist with automated test creation and maintenance in a Team Foundation Server test automation framework, working with Test and Development Engineers. Candidate will perform automated test activities for designing and implementing Automated Test Scripts for inclusion our automated test framework. …………………..

Problem with these kind of mail, is they sent this mail via bot and did not even bother to look for whether it matches your resume or not. Mail on matching few keywords… I’m a full time employee in a senior position, and when i see this kind of mail which is contract and entry level, obviously not reason to look any more. Look at the tone of the mail, you have to suit yourself. Sometimes they should read what they are sending to people.

I was a student of Business field. Business communication was one of the 101 course. When your company rely on hunting people for jobs and get commission on it, your first correspondence is really important to your client. [In General / common term, first impression is always vital].

Recently, I came across one mail that I could not ignore. A mail that makes you feel important and provokes you to explore opportunities. Read the following mail...

“I suspect you’re happy where you are, or you may be looking for the right opportunity, but you keep coming up as an extremely qualified candidate for a XXXXX position I am trying to fill.

I am working for a high-profile, well-respected company in the XXXXX area who is looking for an individual who is a very seasoned and experienced XXXXXX. That brings me to you.

And for the right person, they will roll out the “red carpet” and will very generously relocate you.

Judging by your resume and background, you may not be on the job hunt but I felt it necessary to contact you to see if having an exploratory conversation about this open role would make sense.

Please take a look at the job description below my email signature.

I look forward to hearing from you. I appreciate your time and consideration,

When you get this kind of mail, you being appreciated and praised, as a natural reaction you will spent time to look into it further. It’s not about the job, it’s about the person who is communicating with you, NOT corresponding with you. Now what that person is talking about the red carpet we can ignore that part, but the rest of the part is super OK. Little things matters, sometimes, a lot.

Why did i wrote it, it’s a part of my QA life, getting mails (gghhhrrr) from them and this blog is about QA life not about QA methods/ process etc.

Thursday, March 10, 2016

Basics of Software Testing - Part-VIII : Firmware Testing with example

A little background about this - Each person may have their own way of testing or finding issues. They may not necessarily find my method helpful to understand the basics, this is something i'm trying to generalize for the newcomers in software/ firmware testing.  My intention is to make a series out of it, if i can and get enough motivation to write the basic stuffs.

So far we know what is a software, environment, SDLC, STLC, different types of software testing. Now, we will see how to test a firmware with example. This is purely educational purpose and not necessarily this directly apply to any device similar to this. I made this up just to give example. And i’m sure they have more robust test case scenarios to test the device than what I described.

The way I generally distinguish between a Software and Firmware is, firmware runs on device as embedded software. It directly interacts with the hardware and not necessarily needed to run on operating system/ with another software.  Similar to software, for firmware testing you have to understand what a firmware supposed to do.



Let’s try to describe a functionality of a firmware of a device. It’s a mechanical device that help patient to lift of some of the body weight and helps them to stand/walk. This machine has a bar that goes up and down using a pulley and bungee rope. That bar and the harness lifts up weight of the patient. Depending on the height and weight of the patient, it can be adjusted. To adjust the height and weight we have to press the up down button on remote. To adjust the weight automatically, we will have to use the auto unload option.  When the patient is set up normally in the harness, the patient support bar is raised by pressing button A until the rope becomes tight, then the bungee plate starts to move up.  The bar is raised until the bungee plate is in the middle between the green area.  During normal use the bungee plate oscillates up and down in this middle area as the patient walks along. Auto unload is a function that auto engages when it sense it needs adjustment between patient weight and bar height so that patient can walk with the assistance. When the auto mode on, the manual up down button will be disabled since auto take precedence.

(Courtesy: Biodex - they makes cool stuff! I used this pic just to visualize the product.).  



It has a remote that control the different movement of the bar and some other stuff. Particular button is supposed to do particular things:
Press button A to increase the load.
Press button B to decrease the load.
Press button C to raise the patient support bar.
Press button D to lower the patient support bar
Press button E to engage the auto unload
Press button D to turn off the auto unload
Now, we know what the system does. Let’s try to build some scenarios that we can start with the firmware testing.

For common operation -
  1. There are few buttons, 6 of them, on remote. Make sure buttons works/ reacts with your input.
  2. Make sure when you disconnect the cable of the remote, it does not changes anything on the machine.
  3. Check the timeout of the operation. Make sure it works accordingly.
  4. At any point of time, if the green bar shoots up, machine will immediately disengage the auto mode and allow to avoid any stangle situation.

For the Unweigh load operation-
  1. Make sure that when you press the A button, it works accordingly. It should increase the load.
  2. Make sure that when it reaches the highest limit, A button does not go beyond the limit and nothing happens after it reaches the limit.
  3. Make sure that when you press the B button, it works accordingly. It should decrease the load.
  4. Make sure that when it reaches the lowest limit, B button does not go beyond the lowest limit and nothing happens after it reaches the limit.
  5. Make sure when the auto mode on- it allows to act and does not turn off the auto mode.

For the Bar height operation-
  1. Make sure that when you press the C button, it works accordingly. It should increase the bar height.
  2. Make sure that when it reaches the highest limit, C button does not go beyond the limit and nothing happens after it reaches the limit.
  3. Make sure that when you press the D button, it works accordingly. It should decrease the bar height.
  4. Make sure that when it reaches the lowest limit, D button does not go beyond the lowest limit and nothing happens after it reaches the limit.
  5. Make sure when the auto mode on- it allows to act and turns off the auto mode since it’s the override of the auto mode.

These are some test case scenarios that we can think off. Depending on how to record or create your scenarios (using auto script or anything else) is up to you.

Testing firmware may not be that interesting as software testing, but think about when you test a firmware, for this particular example, you are saving a life of a patient. If you have not tested the product correctly then it can become very much of life threatening issue. Each of us needs to do our part of our job with responsibility. I know i get paid for testing, but i would not be able to go to sleep if i have not tested my product correctly since it involves people and life.

Monday, October 5, 2015

Another motivating story- finding a bug that was crucial in time

Motivation is a driving force…
Motivation helps us to go forward…
……..
and I can go on and on like these quotes about motivation. The profession i’m on is one of the most less interesting job (to many people). They don’t find enough to interest to work in this line for a long period of time. For a short period of time, it can give more money than the other alternative jobs. So some people choose this line as a temporary job and then once they find their own line of job, they switch over to that line.

Motivating factors are different depending on each person's personality/ mentality. I was reading one article about motivation and found some interesting point about it. I do not know enough about the author Audrey Marlene, liked his point of view regarding this. She mentioned on her motivation article-


“Determine What Drives You - as humans are enticed by one or more of the following: Take a look and see which one(s) you can relate to.
  • Ambition
  • Money
  • Independence- To feel in charge of your own life
  • Security- job security, financial security, peace of mind
  • Status/Power/Prestige
  • Self-esteem/The good feeling you get after getting the task done
  • Opportunity to improve, to grow and become more capable.
  • Recognition and respect from others after a job well done.
  • Making a difference/ the feeling you get inside
  • You are competitive/ you have to feel that you are gaining ground and winning every time.
”. [1]

Like I said each person has different trigger, one or many of these above mentioned factors works. I know what makes me motivated and I can tell it just from her above points.

I can’t help sharing a real story about a bug finding that was crucial in terms of time and impression of the company to the (influential) client and also how I got my reward at the end.

Without mentioning anyone's name, let’s say some company sell different device/ equipment to their clients. After purchase, sales rep goes and does a in-service (describes how it works, what to do etc) session with the client. During the in-service session, sales rep struggled with few issues with the device. This device is driven by software. On the software, you select a patient, then select a protocol and run the test and the device starts running with “patients”. (Patients, not regular healthy human being. So it is pretty important to work safely and more importantly it should work as “expected”.)

So Sales rep selected a patient and then selected a protocol that was created and then running the test. During the test, sales rep observed that it is not working properly. So the sales rep places call with service department to provide an solution so that client can run the machine. It went back and forth with sales rep and service department and they could not find any solution. Service department could not reproduce the issue. After two weeks, with no solution, it was getting more and more frustrating to the sales rep and to the client.

So I got a mail, after two weeks of the incident, from service department that stating the issue and mentioned “Customer is getting quite frustrated with this ”.  The way it was reported by service department was not enough (and to some extent it was misleading).

Their complaint was :
  1. “The torque is set for 300 ft-lbs for all sets (10 of them), At some point during testing, the system locks up.  At that point they look at the protocol and it has reset all the torques to 6.”

TorqueWentWrong.png
  1. At some point of time, they see out if 10 sets, 4 of them retained the 300 ft-lbs values and rest of them changed to 6.
  2. When they are in above situation (#2), system does not behave properly.  


So I started my usual methods of getting info about the issue they were getting.
  1. Asked for the details step by step procedure how they created protocol (as they created it with modified values, not with default values)
  2. Asked how did they run the test
  3. Snapshots of each screen they were going it through
  4. If possible video of the whole issue that was happening.

While waiting for the things that I asked, I went to service department to see how did they try to duplicate the issue. First step was to create a custom protocol with a 10 set, 300 ft-lbs torque value. They created the protocol for 10 set with 300 torque value and saved the protocol. Upon retrieval, it also shows the value. So we did not see anything obvious there. Then continued with the second step to run it. It was okay as well. So, it is true that service department could not duplicate the issue. I spent some time trying to duplicate the issue and could not figure out initially. Then to rule out whether it’s a machine dependent issue, I again asked them to create the same thing on another machine. On a second try,  they created the protocol by directly typing the 300 value to the drop down box and then saving it. While creating it, they entered all the value and then found it was supposed to be Exercise type and not test type. So then changed the type and noticed that all the torque value resets to defaults value “6” instead of “300”. Now that’s a good news to me that we at least seen the scenario what sales rep was seeing at client site. As sales rep will be going back to that site again, she wanted a solution before she can go back there. I’m under pressure to find the problem or provide them alternate solution. At that point I tried to give one alternate solution so that they can work with something. So I kept digging.

While doing it repeatedly (entering the value on the torque), at some point of time I exited out from application and came back to retrieve that protocol and found it defaults to value “6” instead of “300”. This is the second time it happened and two different way. Meanwhile I received more info that I requested for and it was more or less same what service department did. As I have seen the first complaint i tried to concentrate on that. Rest of the complaint was based on invalid state, so I gave less importance to them. I know the problem started from protocol screen so i tried few more combination on that screen. One time, when I selected the value of 300 from the drop down and saved the protocol for each of the 10 set and it Worked!

Finally, found the problem. Silly problem but it was crucial at that moment. Basically the problem was, as a drop down box, like all other drop down box of that screen, user supposed to select value from the list and not directly enter the value.  The reason they entered the value was the 300 value was at the bottom of few listed values. It would take some time to select from the end of the list and do it 10 times. User choose shortcut, application did not restrict it and did not support it. When user enter the value application does not recognize the value as listed value and thus defaults back to value “6”. This scenario also explains about their complain of #2.

What is the relation of this finding to the motivation? Well the answer come to the last part of the story. So, finally when I figured out the issue, I relay it to sales rep. Sales rep avoided that scenario and everything went smooth. It’s a minor bug with the software but as long as user does what they supposed to do, we have a interim solution. Client was happy with the solution and so does the sales rep (avoided embarrassing situation at the client site).

Sales rep was so happy with the effort (and kind enough) she wrote a mail to the company president about her experience at the client site and the way we provided her solution under stress. She explained the crucial moment “customer's confidence in us was shrinking! ” and then the way we gave us the solution, she was able to gain it back. She wrote, “The reason for my email is just to compliment everyone for their teamwork and undying effort to get this resolved.” “Upon leaving <Client site> today, their head trainer gave me a hug and has invited me back for further in-service training. I love it! This worked exactly as things should for the customer!  ”.  And then my president thanked me as well in a reply.

I could not help myself quoting from her mail. Those are the words that motivates me doing my work more and more. I’m a tester, do not provide a bug fix, but provides/ offers alternate solution to avoid the scenario and keep going for the time being. As long as I get inspiring words like this, these are my rewards that helps me doing what I do and what considered as boring job to many people. Money is not all we live for, as per Audrey Marlene's article,  I had “Self-esteem/The good feeling you get after getting the task done”, “Recognition and respect from others after a job well done”, “Making a difference/ the feeling you get inside”.


Sources:

[1]. Motivation by Audrey Marlene, MS

Thursday, August 20, 2015

Printed Report vs Preview report does not display same value....

Interesting bug!


So…. I tested a product, verified everything working as it supposed to be. And then customer complains it is not working correctly. Usually that whats we get as initial reaction from customer. Upon several email back and forth we came to know that customers complain was right.


Customer complained that one of the product’s report is printing incorrect value on printed report, but when it preview it, it displays the value correctly. This is one of the weird thing I have heard so far. My initial reaction was, which was completely wrong, it is NOT possible to view some value and then print other value.


[I kind of develop reports for different program myself. I’m actually quite good at it even though I know only few types of report technology. From that knowledge I know that it is not possible.]


Lets see what was the problem...
When customer was printing the report, they noticed that the value of particular column displayed incorrect values on the printed report. The value was displaying “15.2”, “1.4” and “1.4” (as circled with red color in the below picture).


incorrect.png


The correct value or the value displayed on print preview was “115.2”, “11.4” and “111.4”
correct.png
What was happening is, when the report prints if the value is ”11” then it was printing as “1”, two 1 overlapping on the same location making the value as 1.  So, if the value is “11.4” it was printing as “1.4” and for “111.4” as “1.4”. It does not do this for any other value, only the value that starts with 1’s. The value of 10, 9 , 101 everything was working.


When customer was seeing the value on print preview, it was a pdf preview and everything was fine. But for some peculiar reason when it is printed with SOME series of hp deskjet printer (which was the supplied printer with the product) was behaving this wired. It prints on laser jet fine, prints on newer printer fine as well.


Now what is my learning here  as QA. We often do not have ideas how the software is made, what technology is used, what are the shortcoming of those particular technologies. With my test cases, I covered the print preview, prints and verify the values of some sample reports. During my testing, I did not come across any value that particularly starts with only “1”s. So I missed it. If you look into the incorrect picture you will see that the value displayed as “1.4”, the “1” is bold as it was printed three times on that same place. With some reporting tools/ technologies, sometimes it prints twice on same position making the thing bold/ thicker. Even if I came across that scenario, for the bold issue, I might have taken it as expected value.


Not everything you can calculate and verify. But at least, learning from this kind of incidents, you can educate yourself and look for this kind of issue on other products. The only thing we can assume, is we can’t assume in testing. It has to be based on expected values in every steps.  

Wednesday, July 29, 2015

Basics of Software Testing - Part-VII : Software Testing with example

A little background about this - Each person may have their own way of testing or finding issues. They may not necessarily find my method helpful to understand the basics, this is something i'm trying to generalize for the newcomers in software/ firmware testing.  My intention is to make a series out of it, if i can and get enough motivation to write the basic stuffs.


So far we know what is a software, environment, SDLC, STLC, different types of software testing. Now, we will see how to test a software with example.

Lets start a test for the Student loan program or sometimes call calculator. What is does is, it gives the amount of how much you need to pay per month as well as how much it will cost you through out the year. You can also see how making extra payments will affect your pay off date. You can google search it and practice it on any of them.


So we will be doing a functional testing on a project. I usually starts from the Home screen. In our example, above is the home screen.
Testing steps:

  1. This is one of the quickest way to find issues is to perform a data validation using the following criteria for the sample project. For positive data it should accept the amount, for negative / invalid data it should handle it and display proper error message.  

  1. Make sure the required field are either marked or on submit application displays error messages on required fields .
StudentLoan_validation02.png

  1. Make sure the entered Loan amount is okay using the validation criterias.

  1. Confirm that if for example the loan amount can not take a negative value, it should display error message stating that and should not blow up. User need to know the min and max value. It could be mentioned with the error message or it could be mentioned as a label.
StudentLoan_validation01.png

  1. For loan term, it can be either year or month. If we enter a year, it will display the corresponding month and if we enter a year it will display the corresponding month. Make sure that it behaves this way.  

  1. Confirm that if for example the loan term month can not take decimal value then it should display error message.
StudentLoan_validation1.png
  1. As label indicates, Interest rate value would be a percent number. That means it will be later divided by 100. Make sure it passes the data validation  criteria.

  1. For the Loan start date, depending on how it designed according to the Specs, i would assume it should be forward date. I can’t be sure whether it was designed this way or not, it looks like it allows previous dates/ years.

  1. Finally, when all data inputs are okay and values are valid, then clicking on Calculate button will display the value on Monthly Payment.

StudentLoan_validation04.png
  1. Verify the Calculate button displays the correct value for per month. Verify it using the following formula in excel or manually. We need to make sure the calculation is right. For excel you can write the formula on B6 field as “=PMT(B4/B5, B3*B5, -B2)” to get the monthly payment.  

StudentLoan_validation03.png

  1. Make sure that, even the Monthly Payment field is a text fields which looks similar to input field it should not allow entering any value on this field. This will be a GUI testing. Check with Specs. 
  2. Also notice that the amount field text box is not aligned with all other text box for a prefix of “$”. I would double check with the UI specs for this as well.
  3. Check for any default values. On this particular case, it was displaying an example format on each text box. As soon as user starts typing on those fields, they were disappeared which was expected. Confirm that the application calculates based on the amount you entered, not the default amounts.
  4. Check the spelling of all the labels.

Data Validation Criteria
Field Name
Criteria
Common/ All
  1. Null / empty / blank space  as  input and thus check for the Required fields.
  2. Check for the Min field length.
  3. Check for the Max field length.
  4. Check the data type and determine the possible invalid inputs.
  5. Enter single quote ( ‘  ) to check whether database can handle it.
  6. Enter valid input combinations
Loan Amount
  1. Negative amount - It should display error message.
  2. Amount with decimal point up to max input.
  3. Amount with single point decimal point.
  4. Long number up to max input allowed.
  5. Enter String instead of numeric value.
  6. Enter different characters instead of numeric value.
  7. Enter commas with a numeric entry.
  8. Try with valid ranges, should accept the data without any complain.
Loan Term
  1. From above snapshot, it looks like it can take real numbers as number of years and numeric for months. Number of years should also allow to accept whole numeric numbers.
  2. For loan term in year, enter min and max allowed real number.
  3. For loan term in month, enter min and max allowed numeric number.
  4. For loan term in month, enter a number with decimal point. It should display error message as decimal number in month is not allowed.
  5. Try the negative numbers in both year and month. Should not be allowed.
  6. Try with valid ranges, should accept the data without any complain.
Interest Rate
  1. Enter values ranging from min (0) to  max(99).
  2. Enter values below and above the min and max correspondently.
  3. Enter whole number .
  4. Enter number with decimal points.
Loan Start Date
  1. Allows to select Year, Month, Day from the dropdown list.
  2. Should not allow to write anything on these fields.

Now where do you get these things? If you are lucky enough to work with a structure company, chances are you will get this document right away. Else, you will have to prepare it by yourself. Most of the times, it is basically a one time document, you just add them according to project and new fields.


So far we have done the functionality testing. Now we need to test few other things for this web application:

  1. Make sure this web application is accessible using other browsers.
  2. Make sure the loan term month and years auto calculation script works.
  3. Make sure web browser session & cookies does not expire while you  are working on it. Testing cookies (sessions) are deleted either when cache is cleared or when they reach their expiry.
  4. Make sure every time you visit this page, should always come as blank form.
  5. Make sure multiple load is handled correctly.
  6. Make sure concurrent entry does not create any issue.
  7. Make sure the refresh or F5 works properly. It should update the page correctly. Any changes made on the page and submit button was not pressed, refreshing the screen should discard that entry and refresh the page with original entry.
  8. Make sure browser back button and forward button works properly. When the back button is pressed and then the forward button is pressed, make sure it comes with blank page/ session. It should not just keep the previous entries.
  9. Make sure web application does not allow to take input using the URL submission. For example, whatever the name of the website and application, try appending the word “?amount=234560” without the quotes. If it accepts the value and changes the value of the amount field then this could possibly be vulnerable to the BOSS people (hackers).

             

http://www.someweb.com/calculators/college-planning/loan-calculator.aspx?amount=234560


  1. Make sure it can distinguish between an entry from human vs entry from automated bot. Using the Captcha it protects entry from bots. Otherwise, at any point, any bot can keep entering the values and thus creating load on the site. Other people may not be able to access it at certain point.
  2. Check all other links on the web page. It should not display any dead link on the page.

Other observation
If you search for Student loan calculator you will find links. Click on them and you will get a webpage that will display the student loan amortization details. Many of them used to be open like the one i have chosen. Then after getting bombarding by the testing tutorial classes, they put it under user registration. This site should also have done it, otherwise, they are vulnerable to many points like steps 7, 8 if not many more. Also they were not using the Https as well!

If we summaries it then you will see, through out these steps we have performed, 
  • Functional Testing,
  • Usability Testing,
  • GUI Testing,
  • Compatibility Testing,
  • Load Testing, 
  • Performance Testing, 
  • Security Testing and 
  • some other common web application properties testing.
Few things we did not do here as they were not applicable. For example, Database testing - as no database was involved, Web service connectivity - single page calculates value. This is how you need to correlate the theory of testing and implement and perform it as needed on software.

This is how i would try to test this project. This was a very narrow function example. I would say, a software is consist of such small functions and once we identify the features, we will be able to perform testing on each individual pieces. 

Next, may be i'll try few more examples to give more idea. I'll also try to include at least one example for firmware testing in future. . And I would urge people to excuse my mistakes during writing up this series. I test other works, does not necessiarily means that I can’t make mistakes

Everybody has their own way of doing it and I respect all of them as long as it covers everything.

Communication - it's very important in recruiting people

One of the common part of our professional life is we get mails from recruiters time to time regardless whether you are looking for job o...