tag:blogger.com,1999:blog-1111728254776751842024-02-19T12:40:33.241+05:30Tester TestifiesFor want of a nail, the shoe was lost; for want of a shoe, the horse was lost;
For want of a horse, the rider was lost; for want of a rider, the message was lost;
For want of a message the battle was lost; for want of a battle, the kingdom was lost . .Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.comBlogger78125tag:blogger.com,1999:blog-111172825477675184.post-76169712723844280632018-01-19T06:32:00.005+05:302018-01-19T06:32:52.984+05:30Don't try to fix what's not broken !!<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
For the first 30 years of my life I had no problem with my ears. Never used ear buds. Never used dewax. So far so good.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Then I saw Johnson & Johnson earbuds at my local supermarket and thought hmm, I wonder why I never used them. They ought to be important for personal hygiene and I took the bait.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Sure enough, I loved using them so much that I started using them every day after taking bath, though I knew there was nothing left to clean.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Fast forward a few months and I developed an ear infection for the first time in my life. After few painful visits to Doctor, it was finally found that a piece of cotton from the earbud was left inside my ear. The general physician told me that I should never use ear buds but only dewax drops every few days. I switched to that and felt that my ears were always wet and developed ear infection once again.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Making long story short, I visited an ENT specialist who asked me why do I want to use ear buds? I replied honestly that other than hygiene, it feels just too good</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
His advice was NEVER to use ear buds, because our ears are designed in such a way that ear buds only pushes the wax deeper and not to use any ear drops as well as the moisture provides a fertile ground to fungus to grow. Basically, he asked me to leave my ears alone as body is fully capable of taking care of itself including keep the ear clean without any efforts from us.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
I created a problem which didn't exist. Same goes with medicines. Avoid them if you can. The side effects outweighs the benefits lot of time and just trust your body to fight it out benefits. Stopping popping those vitamin pills too.</div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-47572290999173279362018-01-19T06:32:00.003+05:302018-01-19T06:32:24.913+05:30New year resolution !!!<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Every time the new year is approaching, we start making a list of things that we will do next year but we all know what happens to them. Sounds like my story for every new year since I can remember.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Given the optimist I am, on 31th 2016, I didn't shy away from making another list</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Weight loss made it to the top of my list for the first time. I took growth in a different direction by going from 68 kg to 88 kgs over last 5 year of corporate bliss.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
As you guessed, determined as I was, I installed health apps, watched YouTube videos, bought new running gears and all the things you would do in such a scenario. The biggest of them was I will stop eating sweets. You may smile but it's bigger tougher than any other addiction (at least in my dictionary). While i am going to not eat sweet then there is no place for any junk food. I am going to purist. While I am it, why not change the life style altogether. How about sleeping at 10 p.m. and waking up at 5 a.m. every day? Say that to an Indian software engineer and see the reaction you get</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Saying that this is all wishful thinking was understatement of the year. When I told this to no other soul other than my life support system, my wife, her reaction was a smile that said something like nobody got hurt by having good intentions. Go on. We will see if you remember any of it tomorrow.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Poor girl, little did she know, things were going to change.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
When I started this, I promised myself that I am not going to do before and after picture o. Facebook . Quora is the closest I will come to sharing it with anyone.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Fast forward, 8 months, I was 62 kg, down from 88 kg by doing each and every thing I mentioned above. Losing 3–4 kg a week straight for 8 months.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
I had to stop because changing entire wardrobe was not an expense I had planned for. Pants falling down my knees and belts running out of holes wasn't thought about earlier too. Worse, I was stopped by everyone in office to enquire about it and it was too embarrassing for a low profile guy like me to draw so much attention.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
This story for me wasn't about weight loss. It was about telling myself that if I can do this, I can probably do other things on my new resolution list.</div>
<div class="ui_qtext_para" style="color: #333333; font-family: q_serif, Georgia, Times, "Times New Roman", "Hiragino Kaku Gothic Pro", Meiryo, serif; font-size: 15px; margin-bottom: 1em; padding: 0px;">
Keep dreaming. Keep believing.</div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-1781379301801026752018-01-16T11:28:00.002+05:302018-01-16T11:28:35.383+05:30Power of "Asking"<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Let me tell a story<br />
<br />
I recently went to India on a vacation and didn't realize that my Data was left ON by mistake while my SIM was on International Roaming. I turned if off immediately when I found out my blunder but only after couple of days. When i came back to Singapore, I was anticipating the horror when my Phone bill is generated. Sure enough, S$ 453 of data usage bill was staring at me. I cursed myself one more time for being how silly i was and promised myself never to repeat this by disabling the international roaming altogether. That's a good preventive measure for future but what about the damage now? I convinced myself that i will write this off as a one-time expense and learn from it.<br />
<br />
Then I thought, am i first one to do this blunder ? Probably, not. Then why don't I call SingTel and tell them my sad story. I did just that. I called them and told them how stupid I was and described the accident.<br />
<br />
Then i ASKED, "Can you do something about it? and added please !! "<br />
<br />
I expected them to be business like and tell me that it is what it is and they did what was part of my terms and conditions.<br />
<br />
But guess what, the girl on the other side of the line wasn't a surprised a bit (and had probably heard this many times before) and she heard me patiently and told me that she can put me on a 1 day roaming plan which was something like S$ 30 / day and reverse this amount.<br />
<br />
Wow !! I wasn't expecting anything but here i reduced 90 % of my damage by just "ASKING"<br />
<br />
The morale of the story for myself was that so many times in life we let go of opportunities because we just "ASSUME" that things won't change instead of "ASKING" even once. Some of the times we don't do this because we are afraid of REJECTION of being told NO and our ego is too big to handle that. I have learnt that there is nothing wrong in asking for help. There is nothing to lose by asking something and sometimes getting rejected. The benefits of asking far our-weigh the risk of not asking and missing important opportunities.</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-49222820862218980932017-08-22T14:44:00.000+05:302017-08-22T14:47:27.710+05:30Learning: Book - First, Break All the Rules<div dir="ltr" style="text-align: left;" trbidi="on">
Jotting down some learning /quotes from reading this excellent book on being a good manager by breaking all the conventional rules.<br />
<br />
<b>General tips for Managers:</b><br />
<br />
- Treat people as you would like to be treated.They would say don't treat people as you would like to be treated<br />
<div>
<br /></div>
- Don't treat everyone as one and so to avoid charges of favoritism. Treat them differently as everyone is unique.<br />
<br />
- Don't try to make clones. Don't try to fix people. Make them more of what they already are.<br />
<br />
- Don't always promote people out of their role if they are great in what they do. Help them become the 'best' and 'world class' in what they do.<br />
<br />
- Myth - Trust is precious - it must be earned. <br />
<br />
- Expect the best from your people and they will give you their best. Trust them.<br />
<br />
- Being a great manager doesn't make you a great leader and vice versa. Don't use them interchangeably.<br />
<br />
- Managers look <i>inward </i>while Leaders look <i>outward</i><br />
<br />
- As a manager, always remember, you are on a stage every day. You are people are watching you perform.<br />
<br />
- Make few promises and keep them all<br />
<br />
- If a company is bleeding people, it is bleeding value<br />
<br />
- You employees don't work for you. you work for your employees as a manager<br />
<br />
- Managers trump companies. Manager is most important in building a great team. Not pay, benefit, perks or brand name<br />
<div>
<br /></div>
<div>
- Manager is to reach inside each employee and release his unique talent into performance</div>
<div>
<br /></div>
<div>
- Conventional Wisdom: Select a person (based on his experience, determination and intelligence), set expectations (by defining the right steps), motivate the person (by helping him identify and overcome his weakness), develop the person (by helping him learn and get promoted)<br />
<br />
- Instead, Select a person (for their talent), set the expectation (by defining the right outcome), motivate (by focusing on their strength) and develop (by help him find the right fit)<br />
<br /></div>
<div>
- Manager is like a casting director for a movie. He has to select the right employees for the right job.<br />
<br />
- As a manager, spend max time with your star performers.</div>
<div>
<br /></div>
<div>
- Never say that i know how you feel because you will never know how exactly someone feels. Each person has its own filter and they see world through those lenses which may be very different from how you see it.<br />
<br />
- Conventional wisdom: Investigate your failure and try to invert it<br />
<br />
- Instead, build upon your success and study your best performances and amplify that<br />
<br />
- Excellence and failure are often surprisingly similar. Average is the anomaly. Example, The difference between the best and the worst is that the best nurses use their emotions to take control<br />
and smooth the patient's world as far as is possible, whereas the worst are<br />
overwhelmed by their emotions. Average nurses? Average nurses protect<br />
themselves by keeping their distance. They are emotionally disengaged<br />
<br />
- Manager are akin to sports coaches who turn the talents into great performance by providing the right direction and guidance<br />
<br />
- Define the right outcomes and then let each person find his own route toward those outcomes.forcing everyone to follow the same path toward those out comes. Standardizing the ends prevents her from having to standardize the means.<br />
<br />
- As a manager, resist the temptation to control their people.Many managers can frequently be seduced by the idea that there is "one best way" and that it can be taught.<br />
<br />
- Don't let the creed overshadow the message. Required steps are only necessary if they don't obscure the desired outcome</div>
<div>
<br /></div>
<div>
- Don't try to make your employees more "well rounded". Let them be best in what they are good at.<br />
<br />
- Be anything we want to be if we just work hard is a wrong message and this mean everyone has same potential.And if we all have the same potential, then we lose our individuality.<br />
<br />
- No matter how well intended, relationships preoccupied with weakness never end well.<br />
<br />
- Wrong message: You can become more persuasive, more strategic, or more empathic if you just work at it,"<br />
<br />
- Employees can be grouped in 3 buckets - Keepers, Losers and Movers (miscast)<br />
<br />
- Spend the Most Time with Your Best People<br />
<br />
- Conventional wisdom: No news is good news.<br />
Instead: No news is BAD news. Everyone expects a reaction and acknowledgement so provide instant and regular feedback<br />
<br />
- You cannot learn very much about excellence from studying<br />
failure. Unfortunately you don't come any closer to identifying those right ways by eliminating the<br />
wrong ways. Excellence is not the opposite of failure<br />
<br />
- Don't use average to estimate the limits of excellence<br />
<br />
If a manager is preoccupied by the burden of trans forming strugglers into survivors by helping them squeak above "average," he will have little time left for the truly difficult work of guiding<br />
the good toward the great<br />
<br />
- Average thinking actively limits performance with all degenerative diseases, procrastination in the face of poor performance is a fool's remedy.<br />
<br />
- Bad performance: "No," it's not a skills/knowledge issue, and "No," it's not a trigger<br />
issue—then by default the nonperformance is probably a talent issue.<br />
<br />
- As soon as they realize that a weakness is causing the poor performance, they switch their approach. They know that there are only three possible routes to helping the person succeed.<br />
<br />
<b>Employee development</b><br />
<br />
- Devise a support system (Reading glass example). Find a complementary partner. Or find an alternative role<br />
<br />
- The first fallacy is that each rung on the ladder represents a slightly more complex version of the previous rung. Consequently, if a person excelled on one rung on the ladder, it is a sure sign that with just a little more training, he will be able to repeat his success on the rung above. The best managers reject this. They know that one rung doesn't necessarily lead to another..<br />
<br />
- Why not carve out alter native career paths by conveying meaningful prestige on every role per<br />
formed at excellence? Why not create heroes in every role?<br />
<br />
- Conventional wisdom: "Since Jan has proven herself a solid manager, I am confident that we can teach her the strategic thinking and the vision needed to be a great leader."<br />
<br />
- Great managers excel at "holding up the mirror." They excel at giving performance feedback<br />
great managers made a point of giving their feedback in private, one on one. The purpose of feedback is to help each individual to understand and build upon his natural strengths. You cannot dothis in a<br />
group setting.<br />
<br />
- Great managers create a safety net. In conventional wisdom's world, taking bold career steps in<br />
order to discover a latent talent or to refine an existing one is almost as fool hardy as volunteering to learn the trapeze without a safety net.<br />
<br />
- When an employee is obviously miscast, great managers hold up the mirror. They encourage the employee to use this misstep to learn a little more about his unique combination of talents and non talents. They use language like "This isn't a fit for you, let's talk about why" or "You need<br />
to find a role that plays more to your natural strengths. What do you think that role might be?" They use this language not because it is polite, not because it softens the bad news, but because it is true.<br />
<br />
- This is the "love" element of tough love. The most effective managers do genuinely care about each of their people. But they imbue "care" with a distinct meaning. In their minds, to "care" means to set the person up for success<br />
<br />
- Great managers disagree. When Gallup asked, "Would you rather get employees what they want, or would you rather get them what is right for them?" the great managers consistently replied, "Get<br />
them what is right for them."<br />
<br />
- Everyone breathes different psychological oxygen. What is fulfilling for one person is asphyxiating for another<br />
<br />
- Performance appraisals - focus on the future.<br />
<br />
- They can help the employee find his path of least resistance toward his goals<br />
<br />
- In the world according to great managers, the employee is the star. The manager is the agent. And, as in the world of performing arts, the agent expects a great deal from his stars.<br />
<br />
- Instead its power lies in its idiosyncrasy, in the fact that each humans nature is different<br />
<br />
- "Don't try to put in what was left out. Try to draw out what was left in."Some managers may try to resist these forces of change, but they will fail<br />
<br />
- The Art of Tough Love "How do great managers terminate someone and still keep the relationship intact?<br />
<br />
- The "tough" part is easy to explain. Because great managers use excellence as their frame of reference when assessing performance, Tough love simply implies that they do not compromise on this standard. So in answer to the question "What level of performance is unacceptable?"<br />
these managers reply, "Any level that hovers around average with no trend upward." In answer to the question "How long at that level is too long?" Great managers reply, "Not very long." But I know my people, sometimes better than they know themselves<br />
<br />
- Tough Love: When picked the wrong person on the job. Fire him. Do it fast, faster the better. You are not doing a favor to anyone by waiting. I believe that, deep down, the poor performer knows he is struggling before you do. Maybe he can't find the words, or maybe his pride won't<br />
let him say it, but he knows. On some level he wants your help. And so, subconsciously, he puts himself in situations where his weaknesses are exposed. He is daring you, pushing you to fire him. I call this manager assisted career suicide. If you suspect that this is happening, the best<br />
thing you can do is help put him out of his misery.<br />
<br />
- In the minds of great managers, consistent poor performance is not primarily a matter of<br />
weakness, stupidity, disobedience, or disrespect. It is a matter of miscasting.</div>
<div>
<br /></div>
<div>
- Manager try to highlight and perfect each person's unique style. They draw his attention to it. They help him understand why it works for him and how to perfect it</div>
<div>
<br /></div>
<div>
<br /></div>
<b>Hiring:</b><br />
<br />
- Hire for talent and not just skills and knowledge.<br />
<br />
- Hire people whose eye lit up when they talk about their job.<br />
<br />
- The Art of Interviewing for Talent "Which are the right questions to ask?"<br />
<br />
- Make sure the Talent interview stand alone<br />
<br />
- Ask a few open-ended questions and then try to keep quiet. Listen for specifics<br />
<br />
<b>Talent:</b><br />
<br />
- Talent is recurring pattern of thought, feeling or behavior that can be productively applied.<br />
<br />
- Every role, performed at excellence, requires talent, because it requires certain recurring pattern of thoughts, feeling or behavior. Great nurses have talent so do janitors. Talent for account is "when the books balance". Love of "precision" is a talent not skill or knowledge or experience<br />
<br />
- Talent is not rare. Manager help identify hidden talents for the right job and further develop them.<br />
<br />
- Talent can't be taught. Skill and Knowledge can be.<br />
<br />
- You can't rewire someone's brain. People don't change much. Trying to change them is futile. Don't try to fix people.<br />
<br />
- While person can't learn a new talent which is required for her job and may become her weakness but she can develop self awareness and self-regulation so she can cope up with that limitation<br />
<br />
- Conventional wisdom: Success is 10 % inspiration, 90 % perspiration<br />
<br />
- Even if you hire for same level of experience, brain power and will power, you will end with a <i>range </i>of performance because it's the <i>talent </i>that is secret sauce<br />
<br />
- Skills and knowledge are transferable from one person to another. They have limited application when faced with totally new situation, never learnt/faced before.<br />
<br />
- Talent are transferable from one situation to another & can help one solve the problem never seen before.<br />
<br />
- Each person has a mental filter through which they see the world. Face the same stimuli, people behave differently. It creates your motivations, forges your attitude<br />
<br />
- It's wrong to tell that everyone has the same potential if they are willing to open and learn.<br />
<br />
- There are striving talent (explain why of a person, what motivates him), thinking talent(explains how of a person, how he makes decisions), and relating talent (explain who of a person. whom he trust, whom he builds relationship with)<br />
<br />
- If I find myself telling the same person to look on the bright side' time and time and<br />
time again, I should take a hint. He's not a bright-sider. He's a dark-sider. I should stop wasting my breath and try to find a role where skepticism is key to success."<br />
<br />
- Myth - Some roles are easy and don't require talent. Janitor or a Secretary is desperate to get out of their current job and they must be doing this because they are stuck &; it must be demoralizing. We don't realize that they might love their job and they have talent to be great in what they do and hence moving them out of their job is not helping them.<br />
<br />
<b>Customer:</b><br />
<br />
- Customers really wants - accuracy, availability, partnership and advice<br />
<br />
- Accuracy and availability are easy for your competition to replicate and they are important but only prevent customer dissatisfaction. Partnership and advice creates the connection and trust that's important to have long term relationship<br />
<br />
<br />
<br /></div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-53196968419579901902017-08-05T06:31:00.001+05:302017-08-05T06:36:44.797+05:30Manifesto for Quality Assurance & Testing <div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Inspired by legendary <a href="http://agilemanifesto.org/">Agile manifesto</a> and my own experiences:<br />
<br />
1) Having the talent to see through & anticipate failures over finding them later<br />
<br />
2) Using machines/tools/humans as slaves to get things done over becoming their slaves<br />
<br />
3) Common sense over conventional wisdom<br />
<br />
4) Questioning every assumption & requirement with respect over sheep-walking<br />
<br />
5) Doubting (with respect) over trusting or hoping for the best.<br />
<br />
6) Being reasonable, firm & constructive over being the opposite<br />
<br />
<br /></div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-73943296997623954842017-06-23T01:31:00.001+05:302017-08-02T21:59:14.914+05:30Fighting with my tenant....<div dir="ltr" style="text-align: left;" trbidi="on">
<b>Fighting with my tenant to give him his full security deposit back but he insists on getting paid less</b><br />
Sounds familiar? May be not. At least, doesn't happen often. He is staying in our apartment for last 2 years. No complains. Rent on time always without any reminders.<br />
<br />
Well, what more can you ask ?<br />
<br />
He has a daughter around the same age as ours (around 4 yrs). Kids know no boundary so she does like to color the walls :) We knew this when we were giving the flat to a family with little kids and mentally prepared that we will anyways have to get the painting done again. While we treat anyone else's property with utmost respect and our daughter is brought up with the same thinking. We had standard 2 month security deposit if there are any major damages.<br />
<br />
Well, my tenant, Syed is vacating our apartment as he is moving to a different city. As expected, the walls were bit colorful by now and bathroom had some usual wear and tear<br />
<br />
I am a reasonable person. I need to invest my own property as this was our first home.<br />
I told him, i am going to return his security deposit in full and thanked him for staying with us.<br />
He comes back and says, no and i should deduct the damages from the security deposit to which i am surprised but i politely decline.<br />
<br />
He insists that i should keep half of the security deposit. We negotiate for sometime that i don't want to deduct more than minimum required for fixing. I reluctantly agree because there is indeed some damage and glad to see that he strongly feels that same way.<br />
<br />
Finally, we agree. What's the lesson here ? Nothing that we don't know but we don't practice much.<br />
<i>Be kind and others will be kind to you when you least expect</i>.<br />
In life, when we think of negotiation, we always think that you negotiate for getting "more" out of the situation but i learnt today that you can negotiate to get "less" and still get "more"<br />
Reminder to myself, be nice to people more often without expecting anything in return.</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-84012934499788306582017-06-23T00:57:00.001+05:302017-06-23T00:57:58.132+05:30Dealing with frustation and coming out as a winner !!<div dir="ltr" style="text-align: left;" trbidi="on">
I ride my bicycle to work everyday and I absolutely love that part of my life as not only i reach my office, which i have to anyways, but also get some good exercise. It was going great for last one and half year till a month back when I had a flat tire when i was on my morning weekend ride, 30 kms from my house. I was surprised as it doesn't happen often in Singapore as roads are so good. I was cool about it as it used to happen a lot more often during my school days while growing up in India. I thought i will dismount and push my bike to find a bicycle repair shop to get it fixed. Little did i know that Murphy's law is going to come into play and I wouldn't find a shop after pushing the bike for around 3-4 kms even though that stretch indeed has quite a few bike shops which i pass by every weekend without even barely noticing them. Finally, i got a cab driver who was kind enough to try to put my full size bike into the boot space. I got home as it was early in the morning and lot of bicycle repair shops were still closed and i thought of dealing with it a later point.<br />
<br />
Now the ordeal begins. In the evening, I looked for nearest bicycle shop and it was 2 km away. I pushed my bike to find out that it was closed. A bit disappointed, this time i tried to be a bit more smarter by finding the next closest shop and called them to check if they are open. Then i pushed my bike for another 2 km to get there and felt victorious that they would now fix my problem and this will be all behind me.<br />
<br />
This is Singapore and not India. In India, we don't dispose thing off just like that. If you get a flat tire then you get the puncture done. You do in a for loop every time it happens till the bicycle mechanic gives you an expression that it's enough and it's time to for a new tube. I guess here time is more scarce and you don't fix things instead dispose and just replace it. Anyways, the girl at the shop looked at my flat tire from behind the counter and said I need to get a new tube. I didn't question her judgement as I didn't know how bicycle doctors work and I am anxious to have this fixed so i agreed though not convinced. In less than 3 mins, i was on my way home riding my bike again and feeling like a kid who got his first bike.<br />
<br />
I got home, happy that i am all set for a new week to ride my bike to work again. Not bad at all. It happens sometimes but I did pretty well. Had my dinner and after an hour, i went to check my bike again to say good night before going to bed. I went from happy to sad in less than 2 seconds to see that the tire is flat again and the shop is closed by now. How on earth ? Hey, that's okay. Not your day may be. You tried. I will deal with it tomorrow evening and take the bus to work.<br />
<br />
I get home next day evening from office with new determination to change things today. Pushed my bike to the same shop which was closed the day before (as that's the nearest one). I tried to tell them my unfortunate series of events and expecting a bit of sympathy but the staff wasn't interested and concluded in less than a second that solution is to change the tube and tire as well. Take it or leave it. Well, I tried persuading them that the tube is brand new and couldn't it be that just the valve that's faulty. You may think that I managed to convince them to have a look at the problem. Well, no. I was given an option, do what they have already concluded or feel free to leave. I thought about it. The tire had worn out as i was using this bike pretty regularly and yes, it could be well the tire that could be the culprit and i should invest in something that i love. Now what can go wrong if I am changing the tire and tube both. I went for it. Again, I am on bike and feeling excited again. Deja vu. I am very positive this time. Not efficient but the problem is fixed. Sometime, you need to take the deal even if its not what you wanted.<br />
<br />
1 week later, I am on the way to office and my tire goes flat again. Seriously? This is not happening. Are you kidding me ? Awesome !!! What a start of the day. Am i pissed off now ? Yes, a little. I park my bike near an apartment where it broke down, walked to the nearest bus station and reached office on time to deal with this in the evening. In the evening, reached the spot again, find the nearest shop and this time, found another shop that is 2 kms away. Why it has to be always 2 kms which i feel encouraged to push it as it not far enough to take a cab? Hey, its a good exercise. Walking is as good as cycling, i convince myself. Also, i thought that the last 2 shops were not good since they must have given me bad quality otherwise no way it would have got flat again on the same road i was treading all this while. I reach this shop sweating as weather is not very kind in Singapore for outdoor activities. Again, this mechanic looks to be the cousin of the other mechanic and pays no attention to my story and tells me that tube needs to be changed. There is no other shop in the vicinity. Even if there is, how would that be different if this is the standard operating procedure here ? Though i was quite frustrated by now, i reluctantly agreed as I have limited options.<br />
<br />
I will save you the painful details and let you know that today while returning from work, it happened again. I was heartbroken but hey, i don't give up. This time i searched and found another shop close to my office (again 2 km, i am not making this up). I checked that his reviews were pretty good as compared to the previous shops. I decided that today I am not going to play the victim and going to be cheerful about it. Got to the shop. Surprisingly, i was pretty relaxed today. Hey, i have seen it all. What worse can happen now? Things can only get better from here. For the first time, the mechanic listened to my bicycle medical history and like a seasoned surgeon, thought about it for more than 2 seconds & then concluded that the rim of the tire was probably damaging the new tubes everytime as that's the only thing that didn't change all this while. He placed an additional rubber layer on top of the rim before putting on a new tube. This sounds quite logical. One by one we have eliminated possible point of failure. Again I am on way back home feeling excited again. Couple of mins back i did a check on bike again and its intact so far.<br />
<br />
Will it not happen again ? Probably, it will. Am i making progress? Definitely, Yes. Am i frustrated, Hell, NO. That won't change anything. I will remain positive and keep making progress. I won't give up. Was i was very smart about this ? No, but i did learn something new every time and in the future, I wouldn't repeat that again. Do i have a plan if it happens again? Yes, this time, i will take my bike to the manufacturer's showroom which is across the island if the local shops are all selling inferior quality material.<br />
<br />
By the way, that's my bike. Yes, i am a little obsessed with it but then a man should have a passion.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6A_LOZruDUd2YKcvl64NfC84QTg0T0NoC6QrVM4Vq3rIAtAB8QcAwf027DGacmoktDO_KaRMDS0QiyNJIxfj-jARf_cvDgIBLC5f06boxI_9jk3ZCWqaN1zQT3xRnDN8B-hbdhV0PA_A/s1600/bike.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6A_LOZruDUd2YKcvl64NfC84QTg0T0NoC6QrVM4Vq3rIAtAB8QcAwf027DGacmoktDO_KaRMDS0QiyNJIxfj-jARf_cvDgIBLC5f06boxI_9jk3ZCWqaN1zQT3xRnDN8B-hbdhV0PA_A/s320/bike.jpg" width="320" /></a></div>
<br />
I know that this may not mean a lot to you but if you still reading this then the point i want to drive back home is that, unfortunate things happen and sometime they can happen quite often where you would find it hard to believe that it's even happening. The important thing is how you react to it. Sundar Pichai has a beautiful cockroach theory on the same line. Life can throw things at you which can make you quite unhappy or annoyed but how you decide to respond to it is your choice.<br />
<br />
If you are wondering, what this post had to do with Testing as i did maintain this as a testing specific blog till date. Then I realized that there are some learning in life which are worth sharing as a reminder to yourself as well as to others who you may read and get inspired. This attitude helps me deal with problems at work everything where things do go wrong which are beyond your control always and we need to just keep fighting till we fix the problem.</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-18080981527843965992014-02-14T20:03:00.000+05:302014-02-14T21:56:42.449+05:30Future of Testing<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Abstract<o:p></o:p></span></u></b></div>
<br />
<div class="MsoNormal" style="line-height: 13.5pt; margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif";">Someone recently asked me, when we have
daily builds going into production, and we almost have daily/weekly OS, browser
and platform updates that can break our applications and we need to support a
multitude of devices (PCs, Tablet, Mobiles) with different form factors, “<i style="mso-bidi-font-style: normal;">Can you do all your testing that is required
every day?</i> “<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: 13.5pt; margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif";">And the next question, “<i style="mso-bidi-font-style: normal;">If you need more time than that, then
probably you are too slow to keep up with the pace that our ecosystem is
evolving at and why don’t we just enable our developers to test it on fly? Why
not automate everything? Can testers really add value anymore?</i>”.
<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: 13.5pt; margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif";">AI is the new UI. In other words, the
future devices might not have a traditional UI to run automation using
QTP/Selenium. You future devices will not be just tablets and smartphones but
also smart watches, glasses, cars and more. They will take multiple inputs like
touch, voice as input.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: 13.5pt; margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif";">Now we can look at this chasm and think
about returning back or falling down or see the opportunities that lie ahead if
we take a big leap forward. My response to these challenges is that “all” the
testing can’t be commoditized as testing is an art and science both. You can’t
automate everything and replace the intelligence of human testers. No
doubt, we (testers) need to be much more agile and change the way we used to
think about testing. However my question to him, “<i style="mso-bidi-font-style: normal;">Would you go to office in a car that was just unit tested by a
developer</i>?”<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Key
Questions:<o:p></o:p></span></u></b></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="line-height: 105%; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="font-family: "Times New Roman","serif"; line-height: 105%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">1.<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 105%;">De-mystifying the role of traditional
testers in years to come and what’s expected from them <o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="line-height: 105%; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="font-family: "Times New Roman","serif"; line-height: 105%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">2.<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 105%;">Discussion around adapting to embrace
daily releases and supporting the consumer devices that run apps. Support
trends like Consumerization of IT and BYOD.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="line-height: 105%; margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="font-family: "Times New Roman","serif"; line-height: 105%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">3.<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 105%;">New types of testing to test software
that run on embedded devices, take voice inputs from humans. Could we be
working in hardware labs where hardware and software be tested together with
future devices becoming more life and mission critical?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="line-height: 105%; margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="font-family: "Times New Roman","serif"; line-height: 105%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">4.<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 105%;">Why developers would still need to focus
on development and they can’t replace testers but can of course help.<o:p></o:p></span></div>
<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Challenges
with today’s testing <o:p></o:p></span></u></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The most repeated question to development teams in
reputed organizations today is, <i style="mso-bidi-font-style: normal;">“Why do
I, the client, need to spend additional money on testing efforts when I am
already paying a premium for high-quality developers?”</i><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Such questions are not without logic. Let us see
where the client is coming from. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">To the client, an organization taking up the project
must have already developed similar projects in the past, have a highly-skilled
pool of resources to accomplish the same and able supervisory resources to
ensure there are no execution delays. However, as we understand, each project
is like a new innings – you cannot simply replicate your past laurels but can
draw from your experience.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The purpose of this paper is to precisely help the
testing community answer such questions. One can even be faced with such
questions from CTOs/CIOs with regards to justifying testing efforts. The entire
existence of testing services then faces a question mark – do we have answers
that ensure the need for testing in the future?<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">There are two parts to this answer and a larger
implication for subsequent projects.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">a)<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span></b><!--[endif]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Functional
testing vs. Non-functional testing<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The first part is that testing in parlance has
ceased to remain merely confined to functional testing. With the increasing
tribe of different devices, platforms and applications; testing has become an
envelope of services covering functional and several non-functional types of
testing. Therefore, for any forthcoming project, it will eventually become
commonplace for the client to pay for a bouquet of testing services and not
merely functional testing – which is commonly considered a plain-vanilla form
of testing meant to unearth development pitfalls. We are at the verge of a
paradigm shift where usability testing and user experience has assumed great
significance to the extent that usability is considered a must-have and the
associated functional testing is a given. This is a departure from the earlier
industry trend of considering non-functional testing as a good-to-have but the
focus remaining on functional testing as a must-have. Clearly, efforts are more
pronounced in value added testing these days as opposed to traditional testing
in the past. Therefore, testing services are no longer an added cost but an
investment to achieve wow factor with value-added testing services.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">b)<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span></b><!--[endif]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Speed
of delivery<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="line-height: 105%; margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 105%;">The second part to the
answer goes further in-depth of what functional testing will comprise of. With
the faster development sprints and release cycles – testing resources need to
be one step ahead of the development folks to firstly detect a flaw and
moreover, they need to do that with incessant regularity & speed. We would
have to agree that higher the quality of development effort, higher should the
testing abilities be for ensuring uncompromising quality. Additionally,
customizations and related activities will also assume significance in a lot of
projects – wherein testing of functionalities would be on the back-burner. <span style="background: yellow; mso-highlight: yellow;"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">These answers, however, are not reasons alone to
indicate how testing services will be offered but in fact, they point towards a
larger implication, which is – testing services will be targeted for reducing
release times as we move on and this will mean the need to firstly justify the
entire bouquet of testing services that need to be offered to any codebase for
providing quality assurance and at the same time, ensure that this is done in
the least possible time. In fact, increasingly lesser time.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">To add to this race against time, there lie greater
pits such as ensuring controlled updates like updating an application with time
are not broken. A bigger thing on the update space is uncontrolled updates
though – which are passed on by OS manufacturers and come thick and fast these
days across devices. The challenge is to therefore ensure that project-sponsors
are aware of the need for elaborate testing and testing teams are adept enough
to deliver these services in shorter spans of time – not compromising on
release quality.<o:p></o:p></span></div>
<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Impact
of Future Trend<o:p></o:p></span></u></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Keeping these key elements in mind, we can attempt
to identify the gap existing today. The future is already here – so are we
ready for daily test cycles for apps, OS updates, daily controlled and
uncontrolled updates to production impacting many apps and services or are we
ready for services projects who are small in tenure and have early go live in
market? The reason is we need to be ready to be fast enough to cater to the
pace of the market appetite. We need to be ready to match the pace in which we
are doing development now.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">It’s not merely a classical time and work
mathematics problem. It’s just not possible to shrink timelines on testing
effort without touch resources or scope. At least that’s what the age-old
scope-budget-time triangle told us in software engineering classes. Instead,
the focus is now to strategize. Strategize on testing methodologies &
practices that will enable us to adapt to the new era of daily releases,
platform ubiquity and backward compatibility. In fact, strategizing on testing
services has never been so important – we are now in a phase where the poster
boy of testing – “automation testing”, faces a gripping test. Not only it is
going to be very expensive to have automation in projects requiring daily
releases and updates, it may also not be feasible.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">a)<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span></b><!--[endif]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Need
to modify the testing approach to accommodate the need of faster releases to
production<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Let us examine what the gap is today and what can be
done to bridge this gap. To articulate, we see widespread prevalence of
traditional functional testing services – in several cases with little or no
automation inspite of emergence of such offerings as testing as a service and
pure-play testing firms offering a bouquet of function & non-functional
testing services. The key element here is the adherence to traditional ways of
software testing. Despite all efforts by organizations to make their resources
up to speed on readiness for adopting cutting-edge trends & services, there
is clearly a mismatch in pace at which development & testing is carried out
and the expected time to go live in market. We need to change our test strategy
to accommodate the need to make the product available in production but
maintaining the quality too. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">It is essential to understand how this change can
then be brought about. The truth is, there is no single way of planning out and
working towards adapting our testing methodologies. Each organization is used
to a different way of approaching a project, decomposing it into meaningful and
testable bits and then running quality tests on the whole. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Minimum
Viable Quality (MVQ)<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">There are many products/services like Bing.com that
are shipped rapidly to production. To be in the same phase of such rapid
ships to production, we need to twist our testing approaches now. We can’t
continue with our traditional testing approaches which used to run for weeks
for a build certified to go to production. An approach to certify such rapid
builds, we should consider now concept of Minimum Viable Quality (MVQ). <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">MVQ promises to help online service teams ship more
frequently with less testing, lower (initial) quality, and more efficiently
while actually exposing bugs to fewer real users and at a lower overall risk
than traditional methods involving stabilization phases and orchestrated
releases to production. The reality is that at Microsoft we have always been
comfortable shipping unbaked software. That is why we have dogfood and we
have alphas and betas and developer previews. All of these labels tell
the user that they will find bugs but that we feel the quality of the version
of the software is just good enough (the minimum) to make it worth their time
to use it. The only time we really ever hit ship quality is the final
golden build and even then we've always released products with some known bugs.
After all, what is a Zero Day Patch if not a mulligan on signoff?<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The problem you get into with modern services
development is that you are never actually done shipping. There is just
the next feature, the next scenario, the next set of performance improvements,
and the never ending list of bugs to fix. A lot of Microsoft testers
bring the ship quality mindset to services release instead of looking at each
release as just another incremental step where some features are now ready for
mass consumption and others may need to remain hidden and exposed only to those
internal "dogfood" users or the external early "beta"
adopters. Perhaps the new code is pushed to a subset of users and if it
is too buggy a quick fail back to last known good takes the code out of use
with minimum negative user impact.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">What is the advantage of taking an MVQ approach to
services delivery? The bottom line is that you start to get data about
how the code is functioning in production with real users more quickly.
The key aspect is to balance the minimum such that the feature set and the
quality of those features within the product is not so low that it is not used
by the target user segment. If it is too low, then you won't discover and
learn the harder to find bugs because the code won't be exercised. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The trick is to realize that it is the science
behind this process that needs to change – not the process itself. For
instance, features of a mobile OS that need a long time to be released into the
market may end up being obsolete or get zero adoption from the app development
community. Instead, the feature-set may be broken up into smaller sets of
sub-features with periodic go-live to the market and at the same time get the
app development community a continuous feed of feature-sets which they can
leverage to build additional apps – which eventually also ensures further
development when the entire feature set is released.<b style="mso-bidi-font-weight: normal;"><o:p></o:p></b></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Reduction
in test effort for activities like test environment preparation or test case
writing.<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">A key element of course is how test teams will shape
up for such scenarios. Will test team still spend 20% of effort in preparing
the Test Cases and test environment? In order to test the builds daily, can we
really afford to spend time in upgrading the Test Cases or debugging issues in
test environment? Clearly, we would be moving from an era of end-to-end
functional testing to an era of greater ownership of application modules, a
more granular approach to scheduling of testing – for instance, passing results
and unlocking test-scenarios from one testing resource to another in an
assembly-line like setup. The eventual approach will depend on how the
organization plans to setup testing teams in the near future, evolve its test
organization and adopt various testing practices such as crowd-sourcing,
testing-as-a-service etc.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Alpha/beta
testing or Crowd Sourcing testing<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">A cursory look at these evolving practices highlight
such trends as Testing-in-Production, which essentially translates to
alpha/beta testing by releasing an MVQ application into production and awaiting
for users to unearth issues with the same. This is widely practiced by Google
for instance – whose applications have been known to remain in beta for years
before finally coming out of it. A similar trend is, as mentioned earlier,
crowd-sourcing. The only difference here being that a group of people who
usually excel at testing are the ones the application is exposed to and not to
the entire intended application audience. So why do we at all need testers then
if we can throw it open to the audience in production or to a competent set of
crowd-sourcing folks? The answer lies in controlled adoption of these trends –
for instance, an application in beta ends up receiving frequent reports of
issues with regards to features within a particular module of the application.
This should prompt the project team to test intensively within the module and
those affected by flows from this module. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">So essentially the horizon of testing has gradually
expanded from simply closing testing efforts with UAT to the extent of
supporting even in production – and with a variety of variables on top it
ranging from ensuring functioning even with controlled/uncontrolled updates,
proper support for globalization, adapt to loss of internet connectivity
scenarios by ensuring offline availability and even seamless experiences for
users accessing the same application from one device to the other.<o:p></o:p></span></div>
<br />
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%; mso-fareast-font-family: "Times New Roman";"><span style="mso-list: Ignore;">a)<span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span></b><!--[endif]--><b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Complexity
of systems has increased. Does it impact our testing? <o:p></o:p></span></b></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The
testing strategy is not going to be revised just for today’s trend of rapid app
development and pushing in to production without spending <i style="mso-bidi-font-style: normal;">‘n’</i> no. of testing cycles but also for trends which are going to
impact largely the way we are doing the testing today. The complexity of
applications has increased exponentially. We are not in an era where we developed
an application for Windows XP Operating system and which will run only on
Internet Explorer 8. Your testing is no longer limited to 1 OS or 2 browsers.
The no. of variables have increased which are impacting the functionality of
the application.<o:p></o:p></span></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span><br />
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Let’s
take an example of a Banking App designed for Windows 8 Operating system. Few
years back, if we had to test a banking application, the use-cases would be
very limited. One would verify the core functionality on any one OS plus any
one browser. It was obvious to define that this application would work only
with 1 particular OS along with one particular browser. The Usability testing
was not a key part of the testing strategy. <o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIMiiyDYdlkkkjjuKWqirFAbhAMvv8tT9xaH44_RKWdOpZ9V1lIKvNPc7LPwxPkWWwk_qMSOthpHBtXlyvO2HNpSp_NVHEGR3B7egoHdSoYi2hspuIvp8DuSxei8PpxpMeAKz8Img5jtk/s1600/b1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIMiiyDYdlkkkjjuKWqirFAbhAMvv8tT9xaH44_RKWdOpZ9V1lIKvNPc7LPwxPkWWwk_qMSOthpHBtXlyvO2HNpSp_NVHEGR3B7egoHdSoYi2hspuIvp8DuSxei8PpxpMeAKz8Img5jtk/s1600/b1.png" height="372" width="640" /></a></div>
<br />
<span style="font-family: "Times New Roman","serif"; line-height: 107%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-no-proof: yes;"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_2" o:spid="_x0000_i1025" type="#_x0000_t75"
style='width:468pt;height:274.2pt;visibility:visible'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><br />
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Figure:
1 Showing how testing permutations and combination of various devices has
increased the scope of testing<o:p></o:p></span></u></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">But,
today, the realistic use-cases for such an app other than the pure functionality
of the app would be -<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app run on Windows Phone 8?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app handle if Operating System
updates are pushed?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app be used on multiple touch
devices like Surface, iPad, tablets?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app work on browsers like
Safari, Chrome, Firefox, several version of Internet Explorer?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app handle if app updates are
pushed along with OS updates?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app handle all types of input
methods like mouse clicks, touch, keyboard, gestures, voice inputs etc.?
Several permutations and combinations can come up out of this.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="line-height: 107%; mso-bidi-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">-</span><span style="font-family: "Times New Roman"; font-size-adjust: none; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;">
</span></span></span><!--[endif]--><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Can the app handle if any platform
update is pushed on which the app is designed.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">And
the list does go on.<o:p></o:p></span></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span><br />
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Application under test will run on
“family of devices”<o:p></o:p></span></b></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p></o:p></span><br />
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">We
also have such apps used by people that can be used when you are working from
home, when you are in office network or when you are in public network. For
example, on Lync, a user will start taking call using his laptop in the office
environment, then he moves towards his car and continues the call over his
phone using Lync app and when he reaches home, ultimately switches to his
Surface to finish the call. Can our app support this type of usability?<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">The
concentration of testing has moved from functionality to the usability. At any
point, the app should not break irrespective of<i style="mso-bidi-font-style: normal;"> ‘n’</i> variables impacting it.<o:p></o:p></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaSfb_8wKg59guBDBRoRqyNsdQt8pTYgs_byqtbJH6lrTIUBCY95BOgdynWCsS0WZ6V8IX5_RyGPPuVcppBl67TGu_1qeRYmy_NzG4RKUAILF-eroOx5CrVdxsseXZcjWM0TMWPCBwwGw/s1600/b2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaSfb_8wKg59guBDBRoRqyNsdQt8pTYgs_byqtbJH6lrTIUBCY95BOgdynWCsS0WZ6V8IX5_RyGPPuVcppBl67TGu_1qeRYmy_NzG4RKUAILF-eroOx5CrVdxsseXZcjWM0TMWPCBwwGw/s1600/b2.png" height="296" width="640" /></a></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Testing in Production. <o:p></o:p></span></b></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span><br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">With
so many variables to test with, how will one define the test coverage at the
end of the cycle? You can define in your testing scope that we will test the
app only for particular use-cases but from usability perspective, in today’s
era, you can’t direct user to use the app only with internet explorer because
we have done testing with IE only. To handle such situations, the answer is not
to increase the test team or increase the test cycles to cover all combinations
of devices. But, with use of crowd sourcing and testing in Production (TiP), we
can take care of this. If we do our testing more with production data rather
than dummy data, we are doing much more real-world testing and can uncover more
production environment issues. <o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></b></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Will there be such a thing as Test
environment?<o:p></o:p></span></b></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Traditionally,
we used to invest lot of time in preparing the test environment to make it a replica
of production environment. Test leads used to keep one test resource dedicated
for preparing the test environment and maintaining the environment. But, now we
have our environments on cloud. It has reduced test environment setup time
drastically. With this, test teams can dedicate more resources plus time for
testing cycles. Also, having environment on cloud makes it more production
ready in terms of configuration and database setup. In Microsoft Azure, when
testing cycle is completed, same test environment is converted into production
and production becomes test environment.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></b></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">The Case for Human Intelligence <o:p></o:p></span></b></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
</div>
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">So
far, we have talked about how apps are impacted with the presence of so many
devices like touch-enabled devices, mobiles etc. But, future devices are not
limited to touch devices. We are going to have devices like Smart Glasses,
Smart Watches or may be, Artificial intelligence driven Cars. Testing an
application on such devices using emulator is not going to be enough. Emulator
can’t bring the human piece of testing to such devices. Let’s take an example
of Artificial intelligence driven Cars, the car should apply automatic brakes
if the sensor senses an obstacle at 30 Feet and should reduce the speed to
20kmph if an obstacle is sensed at 60 Feet. If such scenarios are just unit
tested by the developer using emulator, will you feel safe in such car? Will
you feel safe if you know that only the code is tested but not the car behavior
when it is applied with several types of obstacles to verify the functionality?
With Emulator, you can’t validate this and hence, human element of testing
can’t be removed, even in future and even with various smart ways of
development.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Importance of User Experience Testing<o:p></o:p></span></b></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p></o:p></span><br />
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Definitely,
testing strategy has to change and become smarter. We need to add a lot of
usability verification flavor in our testing approach. Verifying the user
experience is not just about checking tool-tips on mouse hover but various
factors like app should be minimalistic, individuals should be able to use it
with minimum clicks. It should be super responsive and self-explanatory to
users. Future generation is going to be different from today and their
expectation would be different from an application. We should consider that
factor too when we are talking about user experience of an app. Concentration
span is very low for future generation and if they do not find the app worthy
enough in first 30secs of usage, probably they will never try the app again.
And, that would not be just product failure but a failure of joint effort by
test and devs. Hence, it is valid to say that verifying an application for user
experience is equally important and it should be part of test strategy. <o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Test
Effort Distribution:<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">In essence, it’s time to stop doing things right and
instead do the right things! <o:p></o:p></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-pULCuaG581JbHYRjzyoTjlU4t1EABNpmdIItR4-GzKkM5aYantrF2NonDikFy20JM6NYJN6H5asQ0TgM2_sY53F3e7L8NEhRmnT7TVgm3ylaY6wmUmEuKP9qCqUYwGZpGFD4hxqRH8/s1600/b3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7-pULCuaG581JbHYRjzyoTjlU4t1EABNpmdIItR4-GzKkM5aYantrF2NonDikFy20JM6NYJN6H5asQ0TgM2_sY53F3e7L8NEhRmnT7TVgm3ylaY6wmUmEuKP9qCqUYwGZpGFD4hxqRH8/s1600/b3.png" height="220" width="640" /></a></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
</div>
<div class="MsoListParagraph" style="margin: 0in 0in 8pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Figure:
3 showing how testing strategy is going to change in future as compare to today<o:p></o:p></span></u></span></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">
</span><br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">
</span></div>
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">
</span><br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKHV7SzhetELJzJ3XSq29Vm5PywDMbCx2GGi96Tqs8rA2ClYLvAUW69Y3Nadeg7qyGsnmRrmQ2o67Afeyeuu7KnjUKKseZC1PmEyXvgACUjarGt27-D5IvxBaaDjVIAKRdSJHwmuv4ITw/s1600/b4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKHV7SzhetELJzJ3XSq29Vm5PywDMbCx2GGi96Tqs8rA2ClYLvAUW69Y3Nadeg7qyGsnmRrmQ2o67Afeyeuu7KnjUKKseZC1PmEyXvgACUjarGt27-D5IvxBaaDjVIAKRdSJHwmuv4ITw/s1600/b4.png" height="236" width="640" /></a></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"> </span></div>
<div class="MsoListParagraph" style="margin: 0in 0in 8pt; mso-add-space: auto;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><u><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Figure:
4 showing how testing effort is going to change in future as compare to today<o:p></o:p></span></u></span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
</div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;"><o:p> </o:p></span></span></div>
</div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
</div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: "Times New Roman","serif"; line-height: 107%;">Conclusion<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Taking overall stock of the situation, a few things
stand out. Bluntly put, functional testing may witness a fall in test effort
but this would eventually be transferred to other types of testing. From the
days of writing test cases and executing them, we would be pretty much doing
exploratory testing where more of the focus remains on intelligent testing and
needs a lot of human interaction.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">So while it would be a future where testing services
are secured but the service catalog would be a completely re-wash. It is time
to move to smart testing, controlling costs but delivering on higher
expectations and ensuring the best user experience – not just testing
plain-vanilla functionality, and therefore no just traditional testing tools.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: "Times New Roman","serif"; line-height: 107%;">Testing-in-Production and Crowd-sourcing are already
here as promising ways of delivering the next generation of testing services
while optimizing testing efforts with smart resourcing and environments using
the power of cloud would pave the way for strategizing the way forward.<o:p></o:p></span><br />
<br />
<br />
<strong><u>Author: </u></strong>Gunjan Jain and Raj Kamal</div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com11tag:blogger.com,1999:blog-111172825477675184.post-21408161319875534832014-02-13T16:01:00.000+05:302014-02-13T16:01:01.471+05:30 MTM (Microsoft Test Manager) – Test Configuration for handling multiple test environments<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;"><strong>Author</strong>: Ranjit Gupta & Raj Kamal</span></div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;"></span> </div>
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">While creating test plan one thing you need to keep in mind
the configuration against which your test cases needs to be run. Configuration
can be anything like browser, OS, .net version, different version of your
product or may be different environment i.e. test, staging etc.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">So after your test execution you would like to have test
result against each configuration. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">Test configuration manager in MTM allows you to have as many
test point of your test case depending upon the number of configuration you
have.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">Test point is paring of test case and configuration. If you
have two test case TC1 and TC2 and configuration as C1, C2 and C3 then you will
have totally six test point. Test point relate to the number of test case and
configuration you create. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">You can create your own configuration from the organize tab
as shown below and assign the configuration to your test cases<o:p></o:p></span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDxeu5aU_Os_L17vq6N8xYyX1vVQSsRLWWSCN_6paPXu7JXqYszYAETMDzVsJVX091fhvKj2FnUp91ILJT7KVSJtT1UdobVBO2H0ew9Xeoj3JGUmxYOK792n_jEZ_VycrXMwuc-grPGPs/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDxeu5aU_Os_L17vq6N8xYyX1vVQSsRLWWSCN_6paPXu7JXqYszYAETMDzVsJVX091fhvKj2FnUp91ILJT7KVSJtT1UdobVBO2H0ew9Xeoj3JGUmxYOK792n_jEZ_VycrXMwuc-grPGPs/s1600/11.png" height="168" width="640" /></a></div>
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75"
style='width:467.4pt;height:123.6pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">Specifying Default test plan-<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="font-family: Calibri;">You can create a default
configuration as shown below, so now every test cases which gets added to the
test plan the default configuration gets applied to it. It gets applied even to
the test cases which are copied from other test plan.<o:p></o:p></span></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Oo40odZqUxfhyDoEautT1VnOXqk1nlgPWd7T9ff0I3W4k9fLBDaBBZB6VHQaZYQ-b6yoRJ9OadqVCfwy4EKlDYo4ntwZMe_tD1oypsaHgoI__iO-rtKuJOWfpXr-ucJ00nlFvHwIrVE/s1600/12.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4Oo40odZqUxfhyDoEautT1VnOXqk1nlgPWd7T9ff0I3W4k9fLBDaBBZB6VHQaZYQ-b6yoRJ9OadqVCfwy4EKlDYo4ntwZMe_tD1oypsaHgoI__iO-rtKuJOWfpXr-ucJ00nlFvHwIrVE/s1600/12.png" height="142" width="640" /></a><br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shape
id="Picture_x0020_3" o:spid="_x0000_i1025" type="#_x0000_t75" style='width:466.8pt;
height:104.4pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--></span><o:p></o:p><br /></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">Making use of configuration to run automated test<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="font-family: Calibri;">You can make use of MTM
configuration to run your automated test on different browser. Consider you
want to run your test on chrome, firefox and IE. Create three configuration
under your automation test plan named as “chrome” , “firefox” and “IE” and
assigned them to your automated test cases.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="font-family: Calibri;">When test is triggered from MTM </span><b style="mso-bidi-font-weight: normal;"><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">TestContext</span></b><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;">
exposes many information out of which “</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">__Tfs_TestConfigurationName__</span><span style="color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%;">” </span><span style="font-family: Calibri;">property
can be utilized to determine on which browser the test should run.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="font-family: Calibri;">In your Coded UI test <span style="mso-spacerun: yes;"> </span>test initialize method read the name of your
configuration assigned to test cases as below<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (TestContext.Properties[</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"__Tfs_TestConfigurationName__"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">].ToString() != </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">null</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.CurrentBrowser = TestContext.Properties[</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"__Tfs_TestConfigurationName__"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">].ToString();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="font-family: Calibri;">So now your coded ui test runs on
the browser you have specified in your MTM configuration</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;">. <o:p></o:p></span></div>
<br />
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com1tag:blogger.com,1999:blog-111172825477675184.post-44728726076111494312014-02-13T14:15:00.003+05:302014-02-13T14:16:05.617+05:30Visual Studio TFS - Bug Reactivation Count Report <div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;"><strong><u>Author: </u></strong>Ranjit Gupta & Raj Kamal</span><br />
<strong><u><span style="font-family: Calibri;"></span></u></strong><br />
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: Calibri;">Background:<o:p></o:p></span></u></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">Visual Studio provides a nice </span><a href="http://msdn.microsoft.com/en-us/library/dd380731.aspx"><span style="color: #0563c1; font-family: Calibri;">reactivation
report</span></a><span style="font-family: Calibri;">, out of the box, to help you determine how effectively team is
fixing bugs. This report helps you answer questions such as “<i style="mso-bidi-font-style: normal;">How many bugs have been reactivated in the
current iteration?” or “Is the team resolving and closing reactivated bugs and
stories at an acceptable rate?</i>” but doesn’t go into details, if team wants
to get reactivation report at work item level to answer a follow up question,
such as, “<b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">How many times bugs have been reactivated and what are the bugs that
have been reactivated more than X number of times</i></b><i style="mso-bidi-font-style: normal;">?</i>” <span style="mso-spacerun: yes;"> </span>This kind of report can
help the teams in taking corrective action as it’s quite obvious that bug
reactivation is rework and wastage of effort, time and money. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: Calibri;">Solution:<o:p></o:p></span></u></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">There is also a related thread on
MSDN Discussion on a similar </span><a href="http://social.msdn.microsoft.com/Forums/en-US/tfsgeneral/thread/89cbcf0a-1e1d-4f39-a9ad-4a8747f8c311"><span style="color: #0563c1; font-family: Calibri;">topic</span></a><span style="font-family: Calibri;">.
If you came to this blog, finding solution of this very problem then the good
news is that now there is add-in that we have published on the Visual Studio
Gallery, which you can<b style="mso-bidi-font-weight: normal;"> </b></span><a href="http://visualstudiogallery.msdn.microsoft.com/81b5e165-9e23-450d-ba0a-034841af73d7"><b style="mso-bidi-font-weight: normal;"><span style="color: #0563c1; font-family: Calibri;">download</span></b></a><span style="font-family: Calibri;"> and use to get this kind
of a report in excel (CSV) format for further analysis. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">In additional to that, this blog
post will also go and explain the logic that is used to generate this report so
you can go and customize it for your specific needs if you like it. </span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<b style="mso-bidi-font-weight: normal;"><u><span style="font-family: Calibri;">Details of the solution (Walkthrough)<o:p></o:p></span></u></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">Our add-in uses </span><a href="http://msdn.microsoft.com/en-us/library/bb130146.aspx#ClientObjectModel"><span style="color: #0563c1; font-family: Calibri;">TFS
Client Object Model</span></a><span style="font-family: Calibri;"> to retrieve this information. The solution to the
problem can be broken down in the following simple steps <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">1.<span style="mso-spacerun: yes;">
</span>Retrieve bug id of all the bugs and store them in a work item collection.
You need to provide TFS “<i style="mso-bidi-font-style: normal;">TeamProject</i>”
name as user parameter. You can also specify the iteration path if you are
specifically interested to get this report for a given iteration.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> wiqAllBugs = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"SELECT
[System.Id] FROM WorkItems WHERE<span style="mso-spacerun: yes;">
</span>[System.TeamProject] = '{0}'<span style="mso-spacerun: yes;">
</span>AND<span style="mso-spacerun: yes;"> </span>[System.WorkItemType] = 'Bug'
AND [System.IterationPath] UNDER'"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> +
iteration + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"'"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> tfsQuery = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Format(wiqAllBugs, projName);<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">WorkItemCollection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> wiBugCollection
= store.Query(tfsQuery);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.75in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 0.75in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">2.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">For each bug iterate through the revision
history and look for the text </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">Edited
(Active to Resolved"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">)</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"> and<span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">Edited (Resolved to Active"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">)</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"> or </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">Edited (Closed to Active"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">)</span><o:p></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.75in;">
<span style="font-family: Calibri;">The logic is to look for the bugs
that are changed from Resolved state to Active state or from Closed state to Active
state and count the no. of instances this has happened for a bug as bug
reactivation count metric. We are also capturing transition from Active to
Resolved state to capture information like “resolved by”, “resolved state” etc.
that will help in further investigation<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.75in;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Revision</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> revision </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> wItem.Revisions)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in; text-indent: 0.5in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
(revision.GetTagLine().Contains(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Edited
(Active to Resolved"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">))<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//retrieve all the
information required like resolved date,resolved by etc..<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 77.25pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">else</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (revision.GetTagLine().Contains(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Edited (Resolved to Active"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">) ||<span style="mso-spacerun: yes;">
</span>revision.GetTagLine().Contains(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Edited
(Closed to Active"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">))<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>// increase your counter every time to
get the total reactivation count <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.75in; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 1.25in; mso-add-space: auto;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in; text-indent: 0.5in;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>}</span><o:p></o:p></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.75in; mso-add-space: auto;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">3.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Finally check if your bug reactivation counter
is greater than X (or 0 to find bug that are reactivated at least once) and
print them to console/.csv / html<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; mso-add-space: auto;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.75in; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">4.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Our add-in, generates a CSV report with this
information (find below the sample)<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">You can go and tweak this logic as
per your needs. We hope you would have find this quick workaround useful.<o:p></o:p></span></div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-9744768864914619362014-02-13T14:09:00.001+05:302014-02-13T14:09:31.954+05:30MTM ( Microsoft Test Manager) - Getting latest results as email notification<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<strong>Author</strong>: Ranjit Gupta and Raj Kamal<br />
<br />
Today, MTM (Microsoft Test Manager) doesn't provide an email report with the latest test results for a given test plan. Well, you can do this by using the below snippets of code and configure it for your test team and other stakeholders. We hope you find this useful. Your comments are welcome.<br />
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">1.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Query test plan<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">ITestPlanCollection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"> mTestPlanCollection =
testProject.TestPlans.Query((</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">.Format(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">"Select * From TestPlan where PlanName = '{0}'"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">, testPlan)));</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">2.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Getting the status of the desired Test Plan<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ITestPointCollection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> teamtestPass = testplan.QueryTestPoints(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Format(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"SELECT * FROM TestPoint where
LastResultOutcome='Passed'"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ITestPointCollection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> teamtestFail = testplan.QueryTestPoints(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Format(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"SELECT * FROM TestPoint where<span style="mso-spacerun: yes;"> </span>LastResultOutcome='Failed'"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ITestPointCollection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> teamtestBlocked = testplan.QueryTestPoints(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Format(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"SELECT * FROM TestPoint where<span style="mso-spacerun: yes;"> </span>LastResultOutcome='Blocked'"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ITestPointCollection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> teamtot = testplan.QueryTestPoints(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Format(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"SELECT * FROM TestPoint "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>teampass = teampass +
teamtestPass.Count;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>teamfail = teamfail +
teamtestFail.Count;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>teamblock = teamblock +
teamtestBlocked.Count;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>teamtotal = teamtotal + teamtot.Count;</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">teamtestPass</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;">
contains all those testpoints which has Outcome as Passed. So above queries
gives you the status of your test plan<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">3.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">In your report you might want to list all test
cases or all failed/blocked test cases and with some details<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in;">
<span style="font-family: Calibri;">Below statement will give you the ID, title,
configuration, assigned to, outcome and the duration for the test point<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ITestPoint</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> point </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> teamtot)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 0.5in;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">.WriteLine(point.Id + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">"-- "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"> + point.TestCaseWorkItem.Title + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">"-- "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"> + point.ConfigurationName + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">"-- "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"> +
point.MostRecentResult.Outcome.ToString() + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">"-- "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"> + point.AssignedToName + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">"-- "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"> + point.MostRecentResult.Duration);</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">}</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;">PS: The testpoint which are in Active state “<span style="background: white; mso-highlight: white;">point.MostRecentResult.Outcome.ToString()</span>”
would throw null exception, you need to handle that in your code<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">4.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">You can capture all this information into a html
file for better reporting and send it as automated mailer<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">SmtpClient</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> client = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">SmtpClient</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"smtphost"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>client.UseDefaultCredentials = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">true</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> fromAddress = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Environment</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetEnvironmentVariable(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"USERNAME"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"@microsoft.com"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailAddress</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> from = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailAddress</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>fromAddress, </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ProjectSettings</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Default.FromName,
System.Text.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Encoding</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ASCII);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">List</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailAddress</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">> to = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">List</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailAddress</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">>();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> address = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ProjectSettings</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Default.toAddress;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[] toRecipent = address.Split(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">';'</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> add </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> toRecipent)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>to.Add(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailAddress</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(add));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.5in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>}</span><o:p></o:p></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.5in; mso-layout-grid-align: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailMessage</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> message = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">MailMessage</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>message.IsBodyHtml = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">true</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>message.From = from;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>to.ForEach(entry =>
message.To.Add(entry));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>message.Body = report.ToString();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>message.BodyEncoding = System.Text.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Encoding</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.UTF8;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>message.Subject = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ProjectSettings</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Default.mailSubject;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>message.SubjectEncoding =
System.Text.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Encoding</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.UTF8;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>client.Send(message);</span><o:p></o:p></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-9380337876102281752014-02-13T14:01:00.001+05:302014-02-13T14:01:17.467+05:30Distributing Coded UI Scripts (with Selenium add-in) for Cross Browser Automation using Visual Studio Lab Management & Environment variables <div dir="ltr" style="text-align: left;" trbidi="on">
<strong>Author</strong>: Ranjit Gupta and Raj Kamal<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">Background<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">If you are not already aware, Coded UI now supports cross
browser testing using Selenium components. The Visual Studio add-in can be
found </span><a href="http://visualstudiogallery.msdn.microsoft.com/11cfc881-f8c9-4f96-b303-a2780156628d"><span style="color: #0563c1; font-family: Calibri;">here</span></a><span style="font-family: Calibri;">,
that works if you are running VS 2012 Update 2 or above. There is also an
official </span><a href="http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/30/introducing-cross-browser-testing-with-coded-ui-tests.aspx"><span style="color: #0563c1; font-family: Calibri;">blog</span></a><span style="font-family: Calibri;">
that talk topic in detail, if you are interested. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="mso-bidi-font-style: italic;"><span style="font-family: Calibri;">Customer Story<o:p></o:p></span></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="mso-bidi-font-style: italic;"><span style="font-family: Calibri;">A large utility
service company in United Stated has retained us to implement its internet
facing web presence <span style="mso-spacerun: yes;"> </span> - USD 7
Million engagement. The website will provide timely, business driven
information along with functionality to its customers to do their regular
interactions, such as paying bills, checking historical usage data, turning
on/off services, and others mentioned in the business requirements section. As
it’s an external facing site, it needs to be supported on Firefox, Chrome as
well as IE 8 & IE 9. With the size and the criticality of the application
to customer’s core business, selective manual testing on non-IE browsers
is not an acceptable approach. <o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">The power of Coded UI
+ Selenium & Visual Studio Lab Management <o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">We wrote Coded UI Tests used this Selenium add-in along with
Visual Studio Lab feature to distribute our automated tests on multiple browsers.
Our goal was to dedicate each OS + Browser combination a dedicated agent
machine, so all our tests run in parallel on different browsers on pre-defined
machines. <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">One challenge was that, there is no way in Visual Studio Lab
settings to specify that a particular agent machine should be used for a
specific browser e.g. Chrome, Firefox, IE 8, IE 9 etc. <span style="mso-spacerun: yes;"> </span>We didn’t want to create multiple copies of
coded UI test methods and hardcode them to run against specific configurations.
We were looking for a solution that didn’t require us to write custom logic to
solve this very problem and fortunately we could achieve this without any
additional coding using the below proposed solution.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<b style="mso-bidi-font-weight: normal;"><span style="font-family: Calibri;">Solution – Simple yet
elegant<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<span style="font-family: Calibri;">To get past this issue, we made use of environment variables.
The steps are explained below. <b style="mso-bidi-font-weight: normal;"><o:p></o:p></b></span></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">1.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Create environment variable on each agent
machine and set its value as the desired browser name (IE8/IE9/Chrome/Firefox) against
which you want to run your automated tests.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">2.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Create a Test Initialize method and read the
value of the environment variable before test starts on each agent machine.
This will return the name of the browser that needs to be used for playing back
automation.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none; text-indent: 0.5in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>[</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">TestInitialize</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">]<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> Init()<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">App_Constants</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.browser= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Environment</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetEnvironmentVariable(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"browser"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, <o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">EnvironmentVariableTarget</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.User);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p> </o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">3.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Inside your test method, set </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">.CurrentBrowser</span><span style="font-family: Calibri;"> value as </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">App_Constants</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;">.browser</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"> </span><span style="font-family: Calibri;">which holds
the browser name stored in environment variable<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none; text-indent: 0.5in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">TestMethod</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">]<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> CodedUITestMethod1()<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.CurrentBrowser = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">App_Constants</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.browser;<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>this</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.UIMap.RecordedMethod1();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">this</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.UIMap.AssertMethod1();<span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}</span><span style="color: black; font-family: Consolas; font-size: 9.5pt; line-height: 107%;"><o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">4.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Depending on the value stored in the environment
variable, Coded UI launches the browser and runs the test against launched
browser.<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">5.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Define your </span><a href="http://msdn.microsoft.com/en-us/library/dd286643(v=vs.100).aspx"><span style="color: #0563c1; font-family: Calibri;">test
matrix using Test Configuration Manager in Microsoft Test Manager</span></a><o:p></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<span style="mso-no-proof: yes;"><!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
style='width:467.4pt;height:93.6pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><img border="0" height="156" src="file:///C:/Users/rajkamal/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg" v:shapes="Picture_x0020_1" width="779" /><!--[endif]--></span><o:p></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<span style="font-family: Calibri;">You can set these configuration as default
= Yes, if you want these to be used for the test cases to bed added to the test
plan<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">6.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><a href="http://msdn.microsoft.com/en-us/library/dd380741.aspx"><span style="color: #0563c1; font-family: Calibri;">Associate</span></a><span style="font-family: Calibri;"> your
automated tests with test cases in MTM (Microsoft Test Manager)<o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">7.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Setup </span><a href="http://msdn.microsoft.com/en-us/library/vstudio/hh546459.aspx"><span style="color: #0563c1; font-family: Calibri;">test
controller</span></a><span style="font-family: Calibri;"> and </span><a href="http://msdn.microsoft.com/en-us/library/ee291332.aspx"><span style="color: #0563c1; font-family: Calibri;">test agents</span></a><span style="font-family: Calibri;"> <o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; tab-stops: 93.0pt;">
<span style="font-family: Calibri;"><span style="mso-tab-count: 1;"> </span><o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">8.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;">Run your automated test against each agent <o:p></o:p></span></div>
<br />
<div class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 0.5in;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt 0.25in;">
<span style="font-family: Calibri;">Now you can control which OS/Browser
you would like to use to run your automated tests without making any changes in
your Coded UI Tests or writing any extra code.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 8pt;">
<o:p><span style="font-family: Calibri;"></span></o:p> </div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com4tag:blogger.com,1999:blog-111172825477675184.post-69085168359738927002013-09-12T20:58:00.004+05:302013-09-12T20:58:41.426+05:30Win 8/1/IE 11 - Cross Browser Testing, Device Testing and more cool features<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="font-family: Calibri;">I am sure many of you would have discovered these if you
have installed Win 8.1 but I wanted to quickly share with others the cool
features that IE 11 brings out the box as part of developer toolbar.
Highlighting few of them below:<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">1.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;"><b>Cross Browser/Platform testing</b>: This is
cool to see how you site renders on different browser (not just limited to
different versions of IE) and OS’s as well as different resolutions. This
will be quite handy for testers.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9vMCi37LHDqtRWqBBqMQ67dHWWr5hB-nLqgpdwoR4XYw9q2xHVH3Ty9qWyEWEkluS7cjivmlieT9zZ60jaga2L6GUH6aqMndTGCzprs6gVLfCO2UGWTl9a-QlhgS364Ne8t403IsARKA/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9vMCi37LHDqtRWqBBqMQ67dHWWr5hB-nLqgpdwoR4XYw9q2xHVH3Ty9qWyEWEkluS7cjivmlieT9zZ60jaga2L6GUH6aqMndTGCzprs6gVLfCO2UGWTl9a-QlhgS364Ne8t403IsARKA/s640/1.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjp7CQdGkubBBHzkDCQ2WIpd5BOIhZJe7_W5CR7y3QdB1t7mS4CyWegFDWdjfIMBliRq-AwG0MJbVG8A574DfPBVnxLDuvj474OTOtU2vP0j7gevojvobnzKAxD3JAKdMMmPhP-DXQjUc/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a> </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJKpFJ_pXzeoFp6811EIbLS3ED-xSonycRr4Cd-P7JWn4c9gq02V8Ep83gmFeuA6Xyn1-rbYhuxv_QAqcSlrjyjZHxBy4xVvVsFrAavU6RaGWdbnpPsnPsvTTLQl5ShKIZ2Rt17dzYEYM/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a> </div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">2.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;"><b>UI Responsiveness</b>: Looks pretty nice for
performance benchmarking and quick assessment of performance.<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjp7CQdGkubBBHzkDCQ2WIpd5BOIhZJe7_W5CR7y3QdB1t7mS4CyWegFDWdjfIMBliRq-AwG0MJbVG8A574DfPBVnxLDuvj474OTOtU2vP0j7gevojvobnzKAxD3JAKdMMmPhP-DXQjUc/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjp7CQdGkubBBHzkDCQ2WIpd5BOIhZJe7_W5CR7y3QdB1t7mS4CyWegFDWdjfIMBliRq-AwG0MJbVG8A574DfPBVnxLDuvj474OTOtU2vP0j7gevojvobnzKAxD3JAKdMMmPhP-DXQjUc/s640/2.jpg" width="640" /></a></span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;">
<!--[if gte vml 1]><v:shape id="Picture_x0020_5"
o:spid="_x0000_i1026" type="#_x0000_t75" alt="cid:image004.png@01CEAF41.656B02D0"
style='width:733.8pt;height:303pt'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg"
o:href="cid:image009.jpg@01CEAFE9.00C9A9A0"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p><br /></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">3.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;"><b>Network</b>:<o:p></o:p></span></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in;">
<o:p><span style="font-family: Calibri;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJKpFJ_pXzeoFp6811EIbLS3ED-xSonycRr4Cd-P7JWn4c9gq02V8Ep83gmFeuA6Xyn1-rbYhuxv_QAqcSlrjyjZHxBy4xVvVsFrAavU6RaGWdbnpPsnPsvTTLQl5ShKIZ2Rt17dzYEYM/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJKpFJ_pXzeoFp6811EIbLS3ED-xSonycRr4Cd-P7JWn4c9gq02V8Ep83gmFeuA6Xyn1-rbYhuxv_QAqcSlrjyjZHxBy4xVvVsFrAavU6RaGWdbnpPsnPsvTTLQl5ShKIZ2Rt17dzYEYM/s640/3.jpg" width="640" /></a></span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;">
<!--[if gte vml 1]><v:shape id="Picture_x0020_6"
o:spid="_x0000_i1027" type="#_x0000_t75" alt="cid:image007.png@01CEAF41.858D0630"
style='width:839.4pt;height:355.2pt'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image003.jpg"
o:href="cid:image011.jpg@01CEAFE9.00C9A9A0"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p><br /></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><span style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">4.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><!--[endif]--><span style="font-family: Calibri;"><b>Memory</b>:<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZUQ_t8QM8IEwq5e1mAOxZNbldNrZUFBm7dZh0jlNIbR_tzRr8eLOrx-IcN_-Lbfx25uqousH_LCG8AH7LxO59Kv5EjPK-CY47d9jPCzz5Fvm8U-pKQC1BKNbxMy8N-Jye7tc8fOzbz8c/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZUQ_t8QM8IEwq5e1mAOxZNbldNrZUFBm7dZh0jlNIbR_tzRr8eLOrx-IcN_-Lbfx25uqousH_LCG8AH7LxO59Kv5EjPK-CY47d9jPCzz5Fvm8U-pKQC1BKNbxMy8N-Jye7tc8fOzbz8c/s640/4.jpg" width="640" /></a></span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;">
<!--[if gte vml 1]><v:shape id="Picture_x0020_3"
o:spid="_x0000_i1028" type="#_x0000_t75" alt="cid:image006.png@01CEAF40.F28EDDE0"
style='width:711pt;height:267pt'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg"
o:href="cid:image012.jpg@01CEAFE9.00C9A9A0"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p><br /></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoListParagraph" style="margin: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; text-indent: -0.25in;">
<!--[if !supportLists]--><b><span style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri;"><span style="mso-list: Ignore;"><span style="font-family: Calibri;">5.</span><span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span></b><!--[endif]--><b><span style="font-family: Calibri;">Profiler<o:p></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs39gy9Iee9DQZiAeQ0SWrXzdwxF54oBh1eSa1QJdP7LDrpFza_flJEBisGZgehONgm2Lr-4t0bKg3FaOv1DnEi2RPDAV4fTs2dywVCaHrsty_ZO7yDVdwXzpGz26X0QEr6lbEC4L36TQ/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs39gy9Iee9DQZiAeQ0SWrXzdwxF54oBh1eSa1QJdP7LDrpFza_flJEBisGZgehONgm2Lr-4t0bKg3FaOv1DnEi2RPDAV4fTs2dywVCaHrsty_ZO7yDVdwXzpGz26X0QEr6lbEC4L36TQ/s640/5.jpg" width="640" /></a><br />
<div class="MsoNormal" style="margin: 0in 0in 0pt 0.5in;">
<!--[if gte vml 1]><v:shape id="Picture_x0020_4"
o:spid="_x0000_i1029" type="#_x0000_t75" alt="cid:image008.png@01CEAF41.656B02D0"
style='width:855pt;height:247.8pt'>
<v:imagedata src="file:///C:\Users\rajkamal\AppData\Local\Temp\msohtmlclip1\01\clip_image005.jpg"
o:href="cid:image013.jpg@01CEAFE9.00C9A9A0"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p><br /></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<o:p><span style="font-family: Calibri;"> </span></o:p></div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-57411342730697400202013-09-12T20:52:00.004+05:302013-09-12T20:52:33.779+05:30Test Effectiveness, Test Efficiency, Defect Removal Efficiency (DRE) - Jargons :)<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
I was talking to a colleague today around difference among these test metrics and I am sharing it with you all if it helps :)<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<b><span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<b><span style="color: #1f497d;"><span style="font-family: Calibri;">Test Case Effectiveness =
Total defects found by test cases / Total defects**<o:p></o:p></span></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><span style="font-family: Calibri;">e.g. if 80 defects were found by
test cases and 10 were through ad hoc testing and 10 were leaked to UAT / Prod
then TC effectiveness is 80 %<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><span style="font-family: Calibri;"><span style="background-color: white;">** <span style="background: yellow; mso-highlight: yellow;">This includes all defects found post build phase
(after test cases are designed) so if buddy testing was done then sure it
should be added to total defects as we will use our test cases to do buddy
testing</span>. Total defects will also include the defects found in UAT
and post production as they are leakages.<o:p></o:p></span></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<b><span style="color: #1f497d;"><span style="font-family: Calibri;">Test Efficiency = No. of
valid defects / Total Defects found by test team (including invalid
defects)<o:p></o:p></span></span></b></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><span style="font-family: Calibri;">e.g. if 90 defects out of 100
were accepted then Test efficiency is 90 %<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><span style="font-family: Calibri;">This gives us the rework and
wastage due to invalid bugs that we rejected<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="font-family: Calibri;"><b><span style="color: #1f497d;">Defect Removal Efficiency
(DRE)</span></b><span style="color: #1f497d;"> = Total defect found before
delivery (through review, inspection, testing etc) / Total defect during
project lifetime<o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><span style="font-family: Calibri;">Here we are saying doesn’t
matter if we found them by test case or reviews, if we found them before UAT
then its good and the defects that are found in UAT and Prod will be added to
denominator and will show our DRE.<o:p></o:p></span></span></div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com1tag:blogger.com,1999:blog-111172825477675184.post-17585467632905712992013-08-17T13:17:00.001+05:302013-08-17T13:17:09.931+05:30Mob Testing (inspired by Mob Programming)<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Testers & QA's,<br />
<br />
There is something interesting that we might want to try. I came across an upcoming agile practice called Mob Programming. In gist, this takes pair programming to next level by coding as a team. The idea is simple that you can write the best code when one person is actually typing the code and rest of the team is providing inputs. This has helped teams deliver builds without bugs. If you think, you are developing, unit testing, reviewing and testing the code all-at-once. How cool is that?<br />
<br />
Read about it @ <a href="http://mobprogramming.org/mob-programming-basics/">http://mobprogramming.org/mob-programming-basics/</a><br />
<br />
<h4>
<em><span style="font-size: x-small;">Driver/Navigators</span></em></h4>
<em><span style="font-size: x-small;">We follow a “Driver/Navigator” style of work, which I originally learned from Llewellyn Falco as a pair programming technique. Llewellyn’s approach is different from any other I have been shown, have seen, or have read about (and I think he invented it or evolved into it.)</span></em><br />
<em><span style="font-size: x-small;">In this “Driver/Navigator” pattern, the Navigator is doing the thinking about the direction we want to go, and then verbally describes and discusses the next steps of what the code must do. The Driver is translating the spoken English into code. In other words, all code written goes from the brain and mouth of the Navigator through the ears and hands of the Driver into the computer. If that doesn’t make sense, we’ll probably try to do a video about that or a more complete description sometime soon.</span></em><br />
<em><span style="font-size: x-small;">In our use of this pattern, there is one Driver, and the rest of the team joins in as Navigators and Researchers. One important benefit is that we are communicating and discussing our design to everyone on the team. Everyone stays involved and informed.</span></em><br />
<em><span style="font-size: x-small;">The main work is Navigators “thinking , describing, discussing, and steering” what we are designing/developing. The coding done by the Driver is simply the mechanics of getting actual code into the computer. The Driver is also often involved in the discussions, but her main job is to translate the ideas into code. Of course, being great at writing code is important and useful – as well as knowing the languages, IDE and tools, etc. – but the real work of software development is the problem solving, not the typing.</span></em><br />
<em><span style="font-size: x-small;">If the Driver is not highly skilled, the rest of the team will help by guiding the Driver in how to create the code – we often suggest things like keyboard short-cuts, language features, Clean Code practices, etc. This is a learning opportunity for the Driver, and we transfer knowledge quickly througout the team which quickly improves everyones coding skills.</span></em><br />
<br />
<strong>I would suggest that if we apply the same to testing how productive it can be. I know exploratory testing is cool but what would be even better is that the entire test team gets into a room and one person takes the responsibility of "driver"- he will follow the instructions of the team and document/execute the test cases. Rest of the team will play "navigators" and suggest scenarios and different test condition. This will be a great demonstration of collective IQ and things like mails, meetings, triage calls can be eliminated to reduce unproductivity.</strong><br />
<br />
Let me know your thoughts and if you find this interesting, we can pilot this in one of your projects and evangelize it.<br />
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com4tag:blogger.com,1999:blog-111172825477675184.post-75797796407016258352013-05-07T14:31:00.002+05:302013-05-10T12:27:22.386+05:30TFS Live Configuration - TFS Login Details<div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">If you are trying to use our TFS Live app for TFS Server 2010/2012 and finding it hard to configure the app then please refer to below details:</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><strong>Details about tfs setting screen:</strong></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">tfs server name: <<the name of your TFS Server>> e.g. <a title="https://ranjitgupta.visualstudio.com/" href="https://ranjitgupta.visualstudio.com/">xy</a>z-tfs-server</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">path: <<the tfs path. By default it is “tfs” >> e.g. tfs</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">port: << the port that is configured for your tfs >> e.g. 8080 as default for http and 443 as default for https</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">protocol: << whether your tfs is http or https>> e.g. http / https</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">project collection name: <<the name of your project collection>> e.g. defaultcollection</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">username: <<your domain credential that you use to connect to your TFS >> e.g. abc\rajkamal</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">password: ***** (your domain password </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><strong>Sample #1. Enter the TFS details and press authenticate</strong></div> <div style="text-align: left" dir="ltr" trbidi="on"><strong></strong> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFyVg01A4O9AP78Yks2AmdeVKCr9yUPVc1yKZpLFUWID2OWeYIIDvWqWWZpQiW8vm2mTEL5LZzswjaNCVgp59OsWPkhfNoPfVpPUKZIksic3xgEuxfOwqSE_jlnAEyegFreoxCekRB4c/s1600-h/image%25255B9%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-vBYK2aRx4oA/UYv5J_A7aeI/AAAAAAAAHEM/ISbq-KQ7gcg/image_thumb%25255B5%25255D.png?imgmax=800" width="292" height="565"></a></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><strong>Sample #2. Enter the TFS URL with all the details directly as “TFS Servername”. In this case, you don’t have to worry about entering path, port, protocol or project collection name as they are part of the URL itself</strong></div> <div style="text-align: left" dir="ltr" trbidi="on"><strong></strong> </div> <div style="text-align: left" dir="ltr" trbidi="on"><strong>Example below: <a href="https://xyz-tfs-server:8443/tfs/defaultcollection">https://xyz-tfs-server:8443/tfs/defaultcollection</a></strong></div> <div style="text-align: left" dir="ltr" trbidi="on"><strong></strong> </div> <div style="text-align: left" dir="ltr" trbidi="on"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzcHRyr-1hRg9UbVmmkTViBQLX62dkV_Yqa90Rc0TbDQnoldG2YBv6ZqvMf2BEyEFfoG-cHdGYi9Oq3GSIt9jwWfp2WEmwd1cGbtMR-dHtF2q_3ujFbIOdQW6QG3AV6PSLzI41_Uws4FM/s1600-h/image%25255B14%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh31fogMxiMqD4EajqssUTwuYxTmXw2gcfcwrx7dK-55ZZQxuVeyA434OTQsITpCK4qKLgIhDDObpy4GxR8MrBE1-XqzwHy14hJmzJ61byEDxc0wxS4yAk1nvIsOCYKjrAhOQlRlYTnjcc/?imgmax=800" width="291" height="575"></a></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-86608915866757753112013-05-07T14:30:00.002+05:302013-05-10T00:40:24.518+05:30Enable Alternate Credentials for Hosted TFS / TFS Service<div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">If you are trying to use our TFS Live app for TFS Service instance then you must login using “Alternate Credentials”. Essentially you will need to provide your windows live id and newly set password using “Alternate Credential” when trying to login to our app. This is required due to limited TFS Services API support. </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">Details about tfs setting screen:</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">tfs server name: <<the base URL of you TFS Service account>>> e.g. <a title="https://ranjitgupta.visualstudio.com/" href="https://ranjitgupta.visualstudio.com/">https://ranjitgupta.visualstudio.com/</a></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">project collection name: <<the name of your project collection. Most probably it will be defaultcollection>> e.g. defaultcollection</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">username: <<the windows live id that is used to create access>> e.g. <a href="mailto:raj.kamal@outlook.com">raj.kamal@outlook.com</a></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">password: ***** (password set using “Alternate credential”) -<strong> Read the section below to enable this setting</strong></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><a href="http://lh4.ggpht.com/-J_DLC2EMMkU/UYvx7zWFmNI/AAAAAAAAHC8/hdqgb__txkA/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj20hezsCHmaLTylnHDP0aT-6aGAlqoKZvwFNuET_9tb4muGN1Ht-VzMuPlCFAmngPaJh9FkA7ydIQP69ggn8P8u-qyOGRq5atTEBDY8yDV3M4v1QebOvXCAInZ_gqeno8GChzeXeynL8Q/?imgmax=800" width="284" height="500"></a></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><strong>Steps to enable “Alternate Credentials” </strong></div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">Step 1. Go to your TFS Server home page and login with your windows live id</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on">Step 2. Go to My Profile setting as shown below (at right top)</div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"> </div> <div style="text-align: left" dir="ltr" trbidi="on"><a href="http://lh4.ggpht.com/-3yjvnFlJtuw/UYvx_kGO-vI/AAAAAAAAHDM/XBJ2f0y7f6Q/s1600-h/image_thumb%25255B2%25255D%25255B2%25255D.png"><img title="image_thumb[2]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image_thumb[2]" src="http://lh3.ggpht.com/-nzjcfd9dQaA/UYvyA3c4uTI/AAAAAAAAHDU/TtEKZPP05sw/image_thumb%25255B2%25255D_thumb.png?imgmax=800" width="677" height="220"></a></div> <p>Step 3: Go to “Credentials” tab in “User Profile” window</p> <p>Step 4: Select “Enable Alternate Credentials”</p> <p><a href="http://lh3.ggpht.com/-uH8DDvkIzhI/UYvyCMm7stI/AAAAAAAAHDc/vf6N7cyOoS4/s1600-h/image_thumb%25255B4%25255D%25255B2%25255D.png"><img title="image_thumb[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image_thumb[4]" src="http://lh4.ggpht.com/-8p6kiJG6rtM/UYvyDwltWWI/AAAAAAAAHDk/5K9mokUWfek/image_thumb%25255B4%25255D_thumb.png?imgmax=800" width="497" height="314"></a></p> <p>Step 5: Set a new password (Note: This can be same password as of your windows live id so easy to remember)</p> <p> <a href="http://lh5.ggpht.com/-oS-fGaE6xkQ/UYvyFrX3cWI/AAAAAAAAHDs/ZFhwJVnODJs/s1600-h/image_thumb%25255B7%25255D%25255B2%25255D.png"><img title="image_thumb[7]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image_thumb[7]" src="http://lh3.ggpht.com/-6Wgay8iHhQE/UYvyHUtChfI/AAAAAAAAHDw/REIG24fOCi0/image_thumb%25255B7%25255D_thumb.png?imgmax=800" width="503" height="383"></a></p> Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-21547414292388119072013-04-05T23:12:00.003+05:302013-04-05T23:12:44.087+05:30Dont be afraid to take up a project that's failing <div dir="ltr" style="text-align: left;" trbidi="on">
<span class="userContent">"Why you shouldn't worry about taking up engagements that are in Red? Because they can't become Dark Red now :) and will only become Yellow and then eventually Green."</span><br />
<span class="userContent"></span><br />
<span class="userContent">Funny may it sound but things get worse but then they get better and the experience of turning a failure into success is unforgettable. You will learn things that you wont learn if you always play safe. A sailor who hasn't faced a storm is not really a true sailor. An escalated projects have high visibility and you have an amazing opportunity to fix things and you might be surprised in the end.</span></div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-90600738919278158332013-04-05T23:06:00.002+05:302013-04-05T23:06:51.623+05:30Testing in Production ?<div dir="ltr" style="text-align: left;" trbidi="on">
<span class="userContent">Living life on the edge for normal people would be having a house near a cliff top or jumping off the plane with a parachute or something of that sort but for software engineers, it would be delivering a code to production without testing it and hoping that nobody runs into it ever or it works somehow magically :D These guys are real daredevils :D</span><br />
<span class="userContent"></span><br />
<span class="userContent">I don't promote it but it does happen. We should let these developers know that they are living on edge with a time bomb ticking and its a matter of time before it explodes. Why take chance when you can test the code and then release it.</span><br />
<span class="userContent"></span> </div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-78199389005712320752013-04-05T23:03:00.001+05:302013-04-05T23:03:03.200+05:30Testing - Recursive Features<div dir="ltr" style="text-align: left;" trbidi="on">
<span class="userContent">There should be an another 'task manager' to kill the real 'task manager' when it gets hanged while trying to kill a 'process' that got hanged :)</span><br />
<span class="userContent"></span><br />
<span class="userContent">Though my above comment on FB was on a lighter side, I feel that there should be testability around such things where we generally confine our thinking to just one level and leave it there.</span></div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-51997851856414306792013-04-05T22:54:00.002+05:302013-04-05T23:03:27.724+05:30Saga of Unsung Heroes<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
‘Tester Testifies’ is my tribute to all the testers in the world – the unsung heroes, who save millions of dollars by finding bugs and still stay unheard.</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com0tag:blogger.com,1999:blog-111172825477675184.post-88359126000529546452013-03-23T09:50:00.001+05:302013-03-23T09:50:45.688+05:30Software “Test Confidence Report” [Test Sign-Off]<p>I would like to share something new that I learnt from one of my recent engagement. Thanks to Anand Prabhala, my Project Manager, who triggered these chain of thoughts by asking one simple question, <em>“Raj, keeping all the bugs metrics and test executions reports aside, as a test lead, what is your <b>‘test confidence’</b> to release this application into UAT'”.</em> <p>If you are in testing, I am sure you would have found yourself in similar situations many times before. That was a déjà vu moment and I found myself saying something like <em>‘well, it depends. I can’t tell you that as it’s very subjective and it totally depends on individual’s perception of quality and whatever I might say might be my own opinion not necessarily the opinion of my test team. You should look at my test execution report and bug metrics as true indicators’. </em> <p><em>I knew that he had a point, Metrics are good but we should be able to convert them into something really meaningful and actionable to be able to take a decision with confidence and conviction. As a test lead, providing any number of test metrics is not enough, if you can’t take a confident decision by looking at it. That’s like just half the job done.</em> <p>I thought it’s going to be a no-brainer. Call for a meeting and ask my test team to vote and we will know our test confidence. Funny though it may sound but you may get even more confused as confidence is highly subjective and can’t be arrived at by just doing a poll. Beside it won’t be fair as confidence is just like temperature which can fluctuate drastically based on circumstances, moods, emotions, pressure and state of mind on a given day. <p>Most of the times there is a strong correlation between tester’s confidence and metrics like failed test and active bugs but there can be exceptions. Imagine that there is a functionality that is working well but there are few eye spoilers that’s bothering her for quite some time and your test execution and bug report doesn’t get captured as alarming by the standard metrics like % of test cases passed, no .of critical/high severity bug etc. The test confidence could also be low if tester believes that end user is going to hate it and this must be fixed. We are saying lot of times test confidence can’t be used concluded as “high” by saying if 90 % test cases passed or if there are not s1 / s2 issues and that’s where we need to give weightage to tester’s feeling about the quality of that feature. On the contrary, we could also have scenarios where more test cases failed in some cases and metrics look terrible but we know that they are not coming in the way to do UAT testing and hence test confidence could be high or medium but not low. <p>Lot of times such stories doesn’t come out by just looking at plain numbers. Remember, now you are talking about an application that typically consist of myriad of features. Brain can’t be expected to accurately take into account all your test confidences against each feature and do an intelligent summation of test confidence for you. This will only get complicated when those features are owned by a team of testers and now test lead’s job get tougher to get test confidences from all the testers and decide on overall test confidence level of the team. <p>In reality, it might be just a matter of finding the real culprits that are bringing down your test confidence and targeting them and you will be surprised that those issues might get fixed very swiftly, once identified and prioritized but the trick is to identity them. <p>I thought why we don’t add subjectivity to objectivity as that’s was the missing ingredient. Let’s start measuring test confidence for each feature by looking at real metrics for that feature. We took the TFS out-of-the-box requirement traceability report and added just a simple field called” test confidence”. We got these test confidence indicators (high, medium, low) from testers, who were owning these feature and started assigning test confidence as high, medium or low. This is a marriage of test confidence and industry standard requirement traceability report J <p><a href="http://lh3.ggpht.com/-DXfT5F9VHpA/UU0tiYJMWxI/AAAAAAAAHCI/FgytiDr0iNY/s1600-h/clip_image001%25255B6%25255D%25255B3%25255D.png"><img title="clip_image001[6]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image001[6]" src="http://lh5.ggpht.com/-8fwXoDUykfM/UU0tl-IA3cI/AAAAAAAAHCQ/jxg21r6NE7k/clip_image001%25255B6%25255D_thumb%25255B1%25255D.png?imgmax=800" width="674" height="345"></a> <p>Finally, you can just add the number. of features that had high confidence, medium confidence and low confidence and calculate %. <i>E.g. Now I can say I am 87 % highly confident and 12 % medium confident and 1 % low confident. </i> <p>Note: This way I am not saying I am confident or not. My test confidence is not a boolean value anymore. <p><a href="http://lh6.ggpht.com/-YFbP2hArnZs/UU0tmlHaicI/AAAAAAAAHCY/JQkwRuVDcDw/s1600-h/clip_image002%25255B6%25255D%25255B3%25255D.png"><img title="clip_image002[6]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002[6]" src="http://lh6.ggpht.com/-IL3HjRvPLQM/UU0tnK0wipI/AAAAAAAAHCg/ooD1vjTymhI/clip_image002%25255B6%25255D_thumb%25255B1%25255D.png?imgmax=800" width="671" height="151"></a> <p>We passed on this report to our developers to prioritize bug fixing with the aim to increase test confidence where it was low or medium. Now our development team didn’t really have to worry about lot of things like severity, priority, stack ranking, usability issues etc. We could make their life easy by giving a single indicator. This also helped our customers prioritize their testing and know the features that are not ready yet. <p>Do you want to use it in your next engagement? Let me know by posting your comments.</p> Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com6tag:blogger.com,1999:blog-111172825477675184.post-57295234057900969032013-02-22T12:24:00.000+05:302013-02-23T11:09:32.055+05:30TFS Live - Windows 8 App<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
Note**: if you are trying with hosted TFS, please refer to slide 17 of this PPT for configuration change<br />
<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<i style="mso-bidi-font-style: normal;"><span style="mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-family: Calibri;">Download Link <span style="mso-spacerun: yes;"> </span>for Window 8 /RT (or search in Windows Store
for TFS Live)<o:p></o:p></span></span></i></div>
<span style="mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><o:p><span style="font-family: Calibri;"> </span></o:p></span><br />
<b style="mso-bidi-font-weight: normal;"><span style="color: #1f497d; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><a href="http://apps.microsoft.com/windows/en-US/app/tfs-live/6af3a840-1dbd-47c3-8ec8-3f7c1e8ac6a9"><span style="color: #0563c1; font-family: Calibri;">http://apps.microsoft.com/windows/en-US/app/tfs-live/6af3a840-1dbd-47c3-8ec8-3f7c1e8ac6a9</span></a><o:p></o:p></span></b><br />
<br />
<br />
Want to just try out and don't have TFS access?<br />
<br />
<ul style="text-align: left;">
<li>Enter “TFS Server” as <a href="https://ranjitgupta.visualstudio.com/defaultcollection"><span style="color: #48cbda;">https://ranjitgupta.visualstudio.com/defaultcollection</span></a> </li>
<li>Enter “domain\username or live id” as <a href="mailto:tfslive@outlook.com"><span style="color: #48cbda;">tfslive@outlook.com</span></a> </li>
<li>Enter “password” as nothing123$</li>
</ul>
<br />
<br />
<iframe frameborder="0" height="366" src="https://skydrive.live.com/embed?cid=6FBF86123141E8FE&resid=6FBF86123141E8FE%2115279&authkey=AOwuZjxqaDYBP_U&em=2&wdAr=1.7777777777777776" width="610">This is an embedded &amp;lt;a target='_blank' href='http://office.com'&amp;gt;Microsoft Office&amp;lt;/a&amp;gt; presentation, powered by &amp;lt;a target='_blank' href='http://office.com/webapps'&amp;gt;Office Web Apps&amp;lt;/a&amp;gt;.</iframe>
<br />
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com1tag:blogger.com,1999:blog-111172825477675184.post-23447465858426654462013-02-22T12:16:00.003+05:302013-02-23T11:10:28.508+05:30TFS Live - Windows Phone 8<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<i style="mso-bidi-font-style: normal;"><span style="mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-family: Calibri;"><br />
Note**: if you are trying with hosted TFS, please refer to slide 17 of this PPT for configuration change<br />
<br />
<i style="mso-bidi-font-style: normal;"><span style="mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-family: Calibri;"><br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<br />
<i style="mso-bidi-font-style: normal;"><span style="mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"><span style="font-family: Calibri;">Download Link for Windows Phone 8 <span style="mso-spacerun: yes;"> </span>(or search in Windows Phone Store for TFS Live)<o:p></o:p></span></span></i><br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="color: #1f497d;"><o:p><span style="font-family: Calibri;"> </span></o:p></span></div>
<a href="http://www.windowsphone.com/en-us/store/app/tfs-live/6b869573-44a2-4860-b2e7-55806d4b2011"><b><span style="color: #0563c1; font-family: Calibri;">http://www.windowsphone.com/en-us/store/app/tfs-live/6b869573-44a2-4860-b2e7-55806d4b2011</span></b></a><b><span style="color: #1f497d;"><o:p></o:p></span></b></div>
</span><div class="MsoNormal" style="margin: 0in 0in 0pt;">
</div>
</span><div class="MsoNormal" style="margin: 0in 0in 0pt;">
</div>
</i><div class="MsoNormal" style="margin: 0in 0in 0pt;">
</div>
Want to just try out and don't have TFS access?<br />
<br />
<ul style="text-align: left;">
<li>Enter “TFS Server” as <a href="https://ranjitgupta.visualstudio.com/defaultcollection"><span style="color: #48cbda;">https://ranjitgupta.visualstudio.com/defaultcollection</span></a> </li>
<li>Enter “domain\username or live id” as <a href="mailto:tfslive@outlook.com"><span style="color: #48cbda;">tfslive@outlook.com</span></a> </li>
<li>Enter “password” as nothing123$</li>
</ul>
</span> </span> </i></div>
<br />
<iframe frameborder="0" height="366" src="https://skydrive.live.com/embed?cid=6FBF86123141E8FE&resid=6FBF86123141E8FE%2115280&authkey=ADkGG5cRcQomYPY&em=2&wdAr=1.7777777777777776" width="610">This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> presentation, powered by <a target='_blank' href='http://office.com/webapps'>Office Web Apps</a>.</iframe>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com3tag:blogger.com,1999:blog-111172825477675184.post-70544333057128993492013-02-14T11:39:00.001+05:302013-02-18T17:52:12.154+05:30Coded UI Usability Automation using JavaScript<div dir="ltr" style="text-align: left;" trbidi="on">
<div id="longDesc">
<br />
After downloading the extension, add the DLL to your references under your Coded UI Project. Please find below the sample documentation<br />
#Coded UI Usability Automation using JavaScript<br />
<br />
# Send your feedback to <a href="mailto:rankumar@microsoft.com">rankumar@microsoft.com</a> / <a href="mailto:rajkamal@microsoft.com">rajkamal@microsoft.com</a><br />
<br />
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//This
method retreives the properties of hyperlink with inner text "News"
and "Hotmail"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
[</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">TestMethod</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">]<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> CodedUITestMethod1()<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> bw = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Launch(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Uri</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"<a href="http://www.bing.com/"><span style="color: #0563c1;">http://www.bing.com/</span></a>"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
bw.WaitForControlReady();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">List</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><usabilityautomation .="" span=""><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">> list =
UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Usability</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetUsabilityProperties(bw, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"a"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"News,Hotmail"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></usabilityautomation></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> prop </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> list)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.font_family,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Arial,Sans-Serif"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.text_decoration,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"none"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//This method retrieves the properties of
div element whose id is "hp_container "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
[</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">TestMethod</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">]<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> CodedUITestMethod2()<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> bw = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Launch(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Uri</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"<a href="http://www.bing.com/"><span style="color: #0563c1;">http://www.bing.com/</span></a>"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
bw.WaitForControlReady();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">List</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><usabilityautomation .="" span=""><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">> list =
UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Usability</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetUsabilityProperties(bw, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"div"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">,</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"hp_container"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></usabilityautomation></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
(UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> prop </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> list)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.margin_left,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"117px"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.font_size,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"13.33px"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.width,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"1366px"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.color,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"rgb(0, 0, 0)"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//This method retrieves the properties of
input element whose id is "sb_form_q"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
[</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">TestMethod</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">]<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> CodedUITestMethod3()<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> bw = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Launch(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Uri</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"<a href="http://www.bing.com/"><span style="color: #0563c1;">http://www.bing.com/</span></a>"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
bw.WaitForControlReady();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">List</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><usabilityautomation .="" span=""><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">> list =
UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Usability</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetUsabilityProperties(bw, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"input"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"sb_form_q"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></usabilityautomation></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
(UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> prop </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> list)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.padding_left,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"9px"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Assert</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.AreEqual(prop.padding_right,
</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"5px"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> }<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//This method retrieves the properties of
all input element present on the page</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
[</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">TestMethod</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">]<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> CodedUITestMethod4()<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> bw = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">BrowserWindow</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Launch(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Uri</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"<a href="http://www.bing.com/"><span style="color: #0563c1;">http://www.bing.com/</span></a>"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">));<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
bw.WaitForControlReady();<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">List</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><usabilityautomation .="" span=""><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">> list =
UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Usability</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.GetUsabilityProperties(bw, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"input"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></usabilityautomation></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">foreach</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
(UsabilityAutomation.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Repository</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> prop </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">in</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> list)<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
{<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// your assert logic</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}<o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p> </o:p></span></div>
<br />
<div class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
}</span><span style="color: #1f497d;"><o:p></o:p></span></div>
</div>
</div>
Rajhttp://www.blogger.com/profile/08032643617387238222noreply@blogger.com3