<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1578677178561645717</id><updated>2009-09-24T16:50:34.067-07:00</updated><title type='text'>SoftWare TestinG</title><subtitle type='html'>This Blog Contains information on Unit Testing, Integration Testing, System Testing, User Acceptance Testing, SAP Testing, SOA Testing, Web Testing, End to End Testing, Web Services Testing, Regression Testing, Testing Automation, Performance Testing, Stress Testing, Load Testing, Volume Testing, Security Testing, Testing COTS, Defects, Bug ,Fixes, Testing Tools like QTP, Load Runner, Quality Center, Rational Robot and many more related to software testing.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default?start-index=26&amp;max-results=25'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-5640401673169017299</id><published>2009-03-31T10:21:00.001-07:00</published><updated>2009-03-31T10:21:28.885-07:00</updated><title type='text'>Open source QA tool for automated Web application testing</title><content type='html'>&lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;span style="COLOR: windowtext"&gt;Q-&lt;/span&gt;&lt;b&gt; Could you recommend a quality assurance (QA) tool for automated regression/functional testing (open source or free tools are preferred) for testing a Web application that contains a lot of JavaScript for opening pop-up windows, redirects, etc.? I&amp;#39;m using HTTPUnit and Selenium but these tools are not handling pop-up windows and redirects well. Thanks&lt;/b&gt;&lt;/p&gt;  &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;b&gt;A-&lt;/b&gt; My preferred automation solution for Web applications is a combination of *Unit and Wati* -- for instance, JUnit plus Watij. I like Watij over Selenium RC simply because it seems a little more object-oriented than Selenium. But this is totally personal, I&amp;#39;ve used both tools successfully. &lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Handling pop-ups and other interactive display changes can be a challenge, regardless of the tool. You might consider a couple of approaches. First, be active in the tool&amp;#39;s user group, seeking solutions. There are several groups available on the Internet -- just pick one or two. Be polite: post your question once, rather than blasting across multiple groups. If you post to the Selenium user&amp;#39;s group, you will definitely encounter other testers who have faced similar challenges in the past -- they&amp;#39;ll probably have tried-and-true solutions for you. Secondly, pay close attention to your implementation. If your Web app uses a lot of rich Internet applications (RIAs), your might get away with the use of divs rather than handling each window (in RIA, developers can &amp;quot;pop up&amp;quot; windows which are, in fact, just hidden divs being exposed). Experiment with different programming solutions and see which is more reliable. There is generally more than one way to accomplish what you&amp;#39;re trying to do. You&amp;#39;re looking for the way which is 1) feasible, 2) most reliable and 3) most performant (in that order).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;The third approach may be the most challenging and, in the short term, costly. However, if you&amp;#39;re working on an ongoing, long-term project it will have payoff. If the current implementation is not very testable, propose alternative implementations to the development team. For instance, if the current project creates multiple pop-up windows (rather than using Ajax to expose elements), ask that the team take time to change this, implementing a solution which you can test more reliably and in a shorter amount of time. You need to be very, very detailed in your reasoning -- you will need to include schedule and cost savings. Point to gains down the road when your automated regression and functional tests run more reliably. By implementing testability, you will be addressing what Agile teams call &amp;quot;technical debt.&amp;quot; You take a short-term hit on schedule, with the outcome being a long-term improvement in effectiveness and efficiency.&lt;/font&gt;&lt;/p&gt;  &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 14pt"&gt;Will penetration testing be replaced by preventative tools?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;by michaeldkelly&lt;b&gt;&lt;span style="FONT-SIZE: 14pt"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;I recently read the article "Penetration Testing: Dead in 2009" by Bill Brenner. In the article Mr. Brenner follows a small debate around the idea that over time penetration testing will be largely replaced by preventative checks. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;The debate opens with some quotes from Brian Chess from Fortify Software. Fortify creates code analysis tools that scan for security concerns and adherence to good secure coding practices. That potential bias aside, I suspect that Mr. Chess' statement — that "Customers are clamoring more for preventative tools than tools that simply find the weaknesses that already exist [...]. They want to prevent holes from opening in the first place" — is absolutely true. I know &lt;em&gt;I&lt;/em&gt; clamor for those tools, and I'm just a lowly test manager. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;I'm a big fan of the work companies like Fortify, IBM and HP are doing in this space. If my project team can find a potential issue before we deploy the code, I'm all for it. It can save us time and helps us focus on different and potentially higher-value risks. However, I've yet to see a tool that can deal with the complexity of a deployment environment (setup, configuration, code, etc…) and while I'm a big believer in doing everything you can up front (design, review, runtime-analysis, etc.), I believe there will always be a roll for a skilled manual investigation of what gets deployed. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Testing (penetration or other) is about applying skill and judgment to uncover quality-related information about the product. That's not &lt;em&gt;just&lt;/em&gt; code — it's more than that. Your typical penetration tester today covers more than today's automated tools can cover. While there are different tools to test various components (some that focus on code, some that focus on the network, etc.), and they should absolutely be used, those tools will never be able to uncover all the potential issues with a system. And, what's sometimes worse, is they can lead to a false sense of security.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-5640401673169017299?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/5640401673169017299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=5640401673169017299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5640401673169017299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5640401673169017299'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/open-source-qa-tool-for-automated-web.html' title='Open source QA tool for automated Web application testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-5521566082917631241</id><published>2009-03-31T10:19:00.001-07:00</published><updated>2009-03-31T10:19:41.090-07:00</updated><title type='text'>Two-minute guide to determining software testing coverage</title><content type='html'>&lt;br&gt; &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;span style="COLOR: windowtext"&gt;By&lt;/span&gt; Michael Kelly&lt;span style="COLOR: windowtext"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Deciding what to test really involves two different questions. The first is a question of scope: &amp;quot;Out of everything that I could possibly test, which features are the right ones to test?&amp;quot; There will always be more to test than you will have time to test. The second is a question of technique and coverage: &amp;quot;For each feature I am testing, how do I want to test that feature?&amp;quot; Different quality criteria will lead to covering different product elements and different testing techniques. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;In this two-minute crash course, I&amp;#39;ll provide some details on how I answer those questions and how I structure my test execution to ensure I&amp;#39;m testing for the right risks at the right time. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;2:00: Figure out the scope of your testing&lt;/b&gt;&lt;br&gt;For the question about scope -- what features should we test -- I like using Scott Barber&amp;#39;s FIBLOTS mnemonic (which he presents in his Performance Testing Software Systems class). Each letter of the mnemonic helps us think about a different aspect of risk. Here&amp;#39;s a summary of how I apply FIBLOTS when thinking about scope:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Frequent&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What features are most frequently used (e.g., features the user interacts with, background processes, etc.)? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Intensive&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What features are the most intensive (searches, features operating with large sets of data, features with intensive GUI interactions)? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Business-critical&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What features support processes that &lt;i&gt;need&lt;/i&gt; to work (month-end processing, creation of new accounts)? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Legal&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What features support processes that are required to work by contract? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Obvious&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What features support processes that will earn us bad press if they don&amp;#39;t work? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Technically risky&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What features are supported by or interact with technically risky aspects of the system (new or old technologies, places where we&amp;#39;ve seen failures before, etc.)? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Stakeholder-mandated&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: What have we been asked/told to make sure we test? &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;1:33: Understand the details of each feature you&amp;#39;re testing&lt;/b&gt;&lt;br&gt;Once I understand what it is I want to test, I move on to understanding what aspects of each feature I&amp;#39;d like to cover. For that, I pull out the Satisfice Heuristic Test Strategy Model. I use the product elements list in that document to determine what aspects of the feature I need to focus on. At a high level, I think of coverage in terms of: &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Structure&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: This is everything that comprises the physical product or the specific feature I&amp;#39;m looking at (code, hardware, etc.). &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Functions&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: Everything that the product or feature does (user interface, calculations, error handling, etc.). &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Data&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: Everything that the product or feature processes (input, output, lifecycle). &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Platform&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: Everything on which the product or feature depends (and that is outside your project). &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Operations&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: How the product or feature will be used (common use, disfavored use, extreme use, etc.). &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Time&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;: Any relationship between the product and time (concurrency, race conditions, etc.).&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;1:03: Structure your work in a way that makes sense to you&lt;/b&gt;&lt;br&gt;I typically start by structuring my work in lists or spreadsheets. Then, once I know what I&amp;#39;m going to test, I start to think of how I&amp;#39;m going to test it. It&amp;#39;s not real to me until I can visualize the testing taking place. Do I need specialized software to help (like runtime analysis tools)? Will I need to write code or coordinate some activity (like a network failure)? Even visualizing something as simple as the data that I&amp;#39;ll need can sometimes trigger a new idea or obstacle I&amp;#39;ll need to tackle. As I think about each test, I&amp;#39;ll start to group my tests into charters.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Once I have my charters figured out, I&amp;#39;ll start to tackle whatever obstacles or setup tasks need to be done to allow me to run them. Some charters won&amp;#39;t have any, and others might require a joint effort across teams. Generally, I&amp;#39;m ready to start testing once two conditions are satisfied: &lt;/font&gt;&lt;/p&gt;  &lt;ol type="1"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l2 level1 lfo3; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;There is software somewhere that&amp;#39;s ready for some level of testing. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l2 level1 lfo3; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; FONT-SIZE: 11pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;I have at least one charter that&amp;#39;s ready to be executed (setup is completed or wasn&amp;#39;t required).&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;0:35: Get your hands on the software you&amp;#39;re testing&lt;/b&gt;&lt;br&gt;You&amp;#39;ll notice I don&amp;#39;t have a lot of entry criteria for my testing. That&amp;#39;s because I&amp;#39;m &lt;i&gt;always&lt;/i&gt; interested in seeing the software as soon as possible. I don&amp;#39;t care how buggy it might be, once I see what I&amp;#39;m going to be testing, often my test ideas change. So the sooner I see it, the sooner I can provide feedback to the developer and start refactoring my tests. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;While this philosophy won&amp;#39;t work for all of my testing (in general I need something that&amp;#39;s functionally sound before I can really start performance testing), it&amp;#39;s reflective of a value I have to be an asset to the rest of the team. While I of course always want the most bug-free code I can find (well-designed, unit-tested, peer-reviewed), I&amp;#39;m a realist. Sometimes my feedback is more valuable to the team if I can get eyes on the product sooner rather than later. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;0:21: Start with the components and build your way out from there &lt;/b&gt;&lt;br&gt;That said, I do have some general timing heuristics I use when thinking about when to test what. In general, I won&amp;#39;t start doing any sort of end-to-end testing (following data through multiple parts of a system or subsystems) until I&amp;#39;m fairly confident each piece of the system is working to some degree (basic functionality has been confirmed, it&amp;#39;s relatively stable and so on). &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;I typically don&amp;#39;t try to do much automation or performance testing until I get at least one &amp;quot;stable&amp;quot; interface. The interface could be a Web service, a user interface, or even a method call, but I want it to be through at least one or two rounds of preliminary testing and I want to have some indication from the programming team that they don&amp;#39;t plan to make major changes to the interface any time soon. I&amp;#39;m not looking for a promise it won&amp;#39;t change, things change all the time -- I just want us to agree that &lt;i&gt;right now&lt;/i&gt; we don&amp;#39;t expect it to change. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;0:05: Don&amp;#39;t forget to regression test&lt;/b&gt;&lt;br&gt;Finally, I typically won&amp;#39;t start regression testing until I&amp;#39;ve completed my first round of chartered test execution. Schedule constraints can of course override that, but I like the idea of regression testing being the last thing I do. It makes me more comfortable with the changes made as a result of my testing, and it gives me one last (often more relaxed) look at the product. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-5521566082917631241?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/5521566082917631241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=5521566082917631241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5521566082917631241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5521566082917631241'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/two-minute-guide-to-determining.html' title='Two-minute guide to determining software testing coverage'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-1475721662646502328</id><published>2009-03-31T10:18:00.001-07:00</published><updated>2009-03-31T10:18:06.668-07:00</updated><title type='text'>7 Tips to be More Innovative in the Age of Agile Testing to Survive  an Economic Crisis</title><content type='html'>&lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;strong&gt;What is Agile Testing?&lt;/strong&gt;&lt;br&gt;"Agile testing involves testing from the customer perspective as early as possible, testing early and often as code becomes available and stable enough from module/unit level testing." - A wikipedia definition.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;Why Need of Innovations in the Age of Agile Testing?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;strong&gt;Global Recession/Economic downtime effect&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;Current Events are not Current Trends –&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;When global downturns hit, there is certain inevitability to their impact on information technology and Finance Sectors. Customers become more reluctant in giving software business. Some customers are withdrawing their long term projects and some customers using the opportunities in quoting low price. Many projects that dragged much longer than expected and cost more than planned. So, Companies started to explore how "Agile with different flavors" can help their Enterprises more reliably deliver software quickly and iteratively. The roles and responsibilities of Test Managers/Test Architects become more important in implementing Agile Projects. Innovations are increasingly being fueled by the needs of the testing society at large.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;The Challenges in Agile Testing&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Agile Testers face lot of challenges when they are working with Agile development team. A tester should be able to apply Root-Cause Analysis when finding severe bugs so that they unlikely to reoccur. While Agile has different flavors, Scrum is one process for implementing Agile. Some of the challenging scrum rules to be followed by every individual are&lt;/font&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Obtain Number of Hours Commitment Up Front &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Gather Requirements / Estimates Up Front &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Entering the actual hours and estimated hours daily. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Daily Builds &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Keep the Daily Scrum meetings short &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Code Inspections are Paramount &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;So, in order to meet the above challenges, an agile tester needs to be innovative with the tools that they have. A great idea happens when what you have (tangible and intangible) meets the world's deepest hunger&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;How Testers Can be More Innovative in the Age of Agile Testing?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;Here are Important Keys to Innovation:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;1. Creative&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;A good Agile Tester needs to be extremely creative when trying to cope up with speed of development/release.  For a tester, being creative is more important than being critical.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;2. Talented&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;He must be highly talented and strives for more learning and innovating new ideas. Talented Testers are never satisfied with what they have achieved and always strives to find unimaginable bugs of high value and priority.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;3. Fearless&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;An Agile Tester should not be afraid to look at a developer's code and if need be, hopefully in extreme cases, go in and correct it.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;4. Visionary&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;He must have a comprehensive vision, which includes client's expectations and delivery of the good product.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;5. Empowered&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;He must be empowered to work in Pairs.  He will be involving in Pair Programming to bring shorter scripts, better designs and finding more bugs.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;6. Passionate&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Passionate Testers always have something unique to contribute that may be in terms of their innovative ideas, the way they carry day-to-day work, their outputs and improve things around them tirelessly.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Times New Roman"&gt;7. Multiple Disciplines&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Agile Tester must have multiple skills like, Manual, Functional, Performance testing skills and soft skills like Leadership skills, Communication skills, EI, etc. so that agile testing will become a cake walk.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-1475721662646502328?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/1475721662646502328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=1475721662646502328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1475721662646502328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1475721662646502328'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/7-tips-to-be-more-innovative-in-age-of.html' title='7 Tips to be More Innovative in the Age of Agile Testing to Survive  an Economic Crisis'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-2207687253127905499</id><published>2009-03-31T10:16:00.001-07:00</published><updated>2009-03-31T10:16:42.812-07:00</updated><title type='text'>What's the difference between priority and severity of bugs in  Software Testing?</title><content type='html'>&lt;br&gt; &lt;h2 style="MARGIN: auto 0in"&gt;&lt;span style="FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font color="#4a6279"&gt;&lt;font face="Trebuchet MS"&gt;Source: one stop software testing&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h2&gt; &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;a name="0"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;Priority&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt;&amp;quot; is associated with scheduling, and &amp;quot;severity&amp;quot; is associated with standards. &lt;br&gt; &lt;br&gt;&amp;quot;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;Priority&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt;&amp;quot; means something is afforded or deserves prior attention; a precedence &lt;br&gt; established by order of importance (or urgency). &lt;br&gt;&lt;br&gt;&amp;quot;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;Severity&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt;&amp;quot; is the state or quality of being severe; severe implies adherence to rigorous standards or high principles and often suggests harshness; severe is marked by or requires strict adherence to rigorous standards or high principles, e.g. a severe code of behavior. &lt;br&gt; &lt;br&gt;The words &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;priority and severity&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; do come up in bug tracking. A variety of commercial, problem tracking/management software tools are available. These tools, with the detailed input of software test engineers, give the team complete information so developers can understand the bug, get an idea of its &amp;#39;severity&amp;#39;, reproduce it and fix it. &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;The fixes of bugs are based on project &amp;#39;priorities&amp;#39; and &amp;#39;severity&amp;#39; of bugs.&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; The &amp;#39;severity&amp;#39; of a problem is defined in accordance to the customer&amp;#39;s risk assessment and recorded in their selected tracking tool. A buggy software can &amp;#39;severely&amp;#39; affect schedules, which, in turn can lead to a reassessment and renegotiation of &amp;#39;priorities&amp;#39;&lt;/span&gt;&lt;/p&gt;  &lt;h2 style="MARGIN: auto 0in"&gt;&lt;span style="FONT-SIZE: 15pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font color="#4a6279"&gt;&lt;font face="Trebuchet MS"&gt;How to write effective bug report?&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h2&gt; &lt;h3 style="MARGIN: auto 0in"&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font face="Trebuchet MS"&gt;&amp;quot;The purpose of a bug report is to let the developers see their faults and failures of the application under test. The bug report explains the gap between the actual result and expected result, and the details of that how to reproduce the bug.&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;Many times it happens that if the bug report is not effective or incomplete then programmers face many problems while fixing the bugs. &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Due to the Bad bug report:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; 1. bug is not reproducible by developers &lt;br&gt;2. bug is fixed but with incorrect functionality. &lt;br&gt;3. delay in bug fixes &lt;br&gt;and many more…. &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Sample of bad bug report:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Bug Title: Error message&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;When running the application, I get an &amp;quot;Internal Server Error&amp;quot; that says &amp;quot;See the .log file for more details&amp;quot;.&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Steps to Recreate:&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Happens when &amp;quot;Document.create = null&amp;quot;. It is not happening when changed to &amp;quot; Document.create&amp;quot;.&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Expected results:&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;this error message should not appear when status is "Document.create = null"&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Observed results:&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;See above.&lt;/span&gt;&lt;/i&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;So now how to write effective bug reports? Below I am giving some Bug report best practices:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;1. Once the bug is found&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; Check the bug repository and search that if the bug is already exist. If exists, then check whether the status of bug is CLOSED OR OPEN. If the Status of bug is closed then REOPEN it. &lt;br&gt;Now, if the bug is not there in the repository and it is a new bug, then you need to report the bug. &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;2. If the bug is Reproduce able, then report it, Otherwise avoid reporting of non-reproducible bugs (best practices).&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;3. &lt;/span&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Report a new bug:&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &amp;quot;Bug description&amp;quot; &lt;/span&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;also known as &lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&amp;quot;Short description&amp;quot;&lt;/span&gt;&lt;span style="COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; or &lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&amp;quot;Bug Summary&amp;quot;:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; It should be a small statement, which briefly points towards the exact problem. Writing a one line description is an ART. Bug Summary helps everyone quickly review outstanding problems. It is the most important part of the bug. It should describe only the problem, not the replication steps. &lt;br&gt; If it is not clear then managers might defer the bug by mistake and also it affects the individual performance of a tester. &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;4. The Language of the bug:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Language should be as simple as possible and as straight as possible. Don't point any developer through your words. Remember – the nasty is the bug, not the programmer. &lt;br&gt; &lt;br&gt;The language should be such that is the bug report should be easily understandable by developers, fellow testers, managers, or in some cases, even the customers &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;5. Steps to Reproduce:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; - The steps should be in a logical flow. Don't break the flow or skip any step. &lt;br&gt;- Mention the Pre-requisites clearly. &lt;br&gt;- Use attachments and screenshots of errors, and annotate the screenshots. &lt;br&gt;- The details must be elaborated like which buttons were pressed and in what order. &lt;br&gt; &lt;i&gt;Note – Please don't write an essay on it. Be clear and precise. People do not like to read long paragraphs&lt;/i&gt; &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;6. Give Examples:&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; either with actual data or the dummy scenario. It will be easy for developers to recreate the bug. &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;7. Provide the Test Case ID, requirement ID, and Specs Reference.&lt;/span&gt;&lt;/font&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;8. Define the proper Severity and Priority. &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;br&gt; &lt;font face="Trebuchet MS"&gt;The impact of the defect should be thoroughly analyzed before setting the severity of the bug report. If you think that your bug should be fixed with a high priority, justify it in the bug report. &lt;br&gt; &lt;br&gt;This justification should go in the Description section of the bug report. &lt;br&gt;If the bug is the result of regression from the previous builds/versions, raise the alarm. The severity of such a bug may be low but the priority should be typically high. &lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font face="Trebuchet MS"&gt;8. Read what you wrote.&lt;/font&gt;&lt;/span&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Read the report back to yourself, and see if you think it&amp;#39;s clear. If you have listed a sequence of actions which should produce the failure, try following them yourself, to see if you missed a step. &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;9. Mention the correct environment, application link, build number, and login/password details (if any). &lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font face="Trebuchet MS"&gt;10. Common issues: &lt;/font&gt;&lt;/span&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Many times it happens that the bug is not reproducible (even though the bug report is good) by developers, the don't worry, arrange go to meeting/walkthrough with them and help them in order to recreate the bug. And sometimes it happens like first day the bug is appearing then on next day the same bug is not appearing. In this case, the bug can be assigned back to you. Now you need to accept it and close the bug with appropriate comments like &lt;br&gt; &lt;i&gt;"It is working fine now, but previously this problem was appearing. So, will close this bug after verifying in next build."&lt;/i&gt; &lt;br&gt;Of course, you need to close the bug after verifying in the next release/build/patch because it is an inconsistent bug. &lt;br&gt; Thus a good tester needs to be patient &amp;amp; always build a defense mechanism in the form of preserving test data &amp;amp; screenshots etc. to justify his statements. &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="COLOR: #990000; FONT-SIZE: 10pt; FONT-WEIGHT: normal; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;11. Don't Assume the Expected results.&lt;/span&gt;&lt;/font&gt;&lt;span style="COLOR: #3f4a50; FONT-SIZE: 10pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font face="Trebuchet MS"&gt; Write the expectations which are mentioned in the test case, requirements documents, FDD or in Specification documents. &lt;br&gt; &lt;br&gt;That's all. Practices make us perfect.&lt;/font&gt;&lt;/span&gt;&lt;/h3&gt; &lt;h3 style="MARGIN: auto 0in"&gt;&lt;span style="FONT-SIZE: 12pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;&lt;font color="#4a6279"&gt;&lt;font face="Trebuchet MS"&gt;Code Coverage " A White Box Testing Technique&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;What is code coverage –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; An analysis method that determines which parts of the software have been executed (covered) by the test case suite and which parts have not been executed and therefore may require additional attention. &lt;br&gt; &lt;br&gt;As per wiki – "&lt;i&gt;Code coverage is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing.&lt;/i&gt;" &lt;br&gt; &lt;br&gt;Code coverage measurement simply determines those statements in a body of code have been executed through a test run and those which have not. In general, a code coverage system collects information about the running program and then combines that with source information to generate a report on test suite&amp;#39;s code coverage. &lt;br&gt; Code coverage is part of a feedback loop in the development process. As tests are developed, code coverage highlights aspects of the code which may not be adequately tested and which require additional testing. This loop will continue until coverage meets some specified target. &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;The main ideas behind coverage:&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; &lt;br&gt; - Systematically create a list of tasks (the testing requirements) &lt;br&gt;- Check that each task is covered during the testing &lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;Code coverage is defined in six types as listed below&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;:&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Segment coverage –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; Each segment of code b/w control structure is executed at least once. &lt;br&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Branch Coverage or Node Testing –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; Each branch in the code is taken in each possible direction at least once. Branch Coverage Gives a measure of how many assembler branch instructions are associated with each line. In addition, a measure of the number of branches taken/not taken is given. &lt;br&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Compound Condition Coverage –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; When there are multiple conditions, you must test not only each direction but also each possible combinations of conditions, which is usually done by using a 'Truth Table' &lt;br&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Basis Path Testing –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; Each independent path through the code is taken in a pre-determined order. This point will further be discussed in other section. &lt;br&gt; &lt;br&gt;&lt;b&gt;Basis path testing is a white box testing technique first proposed by Tom McCabe.&lt;/b&gt; The Basis path method enables to derive a logical complexity measure of a procedural design and use this measure as a guide for defining a basis set of execution paths. Test Cases derived to exercise the basis set are guaranteed to execute every statement in the program at least one time during testing. &lt;br&gt; &lt;br&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Data Flow Testing (DFT) –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; In this approach you track the specific variables through each possible calculation, thus defining the set of intermediate paths through the code i.e., those based on each piece of code chosen to be tracked. Even though the paths are considered independent, dependencies across multiple paths are not really tested for by this approach. DFT tends to reflect dependencies but it is mainly through sequences of data manipulation. This approach tends to uncover bugs like variables used but not initialize, or declared but not used, and so on. &lt;br&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Path Testing –&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt;Path testing is where all possible paths through the code are defined and covered. This testing is extremely laborious and time consuming. &lt;br&gt; &lt;br&gt;&lt;b&gt;Path coverage&lt;/b&gt; &lt;br&gt;&lt;b&gt;- Goal is to ensure that all paths through program are taken&lt;/b&gt; &lt;br&gt;&lt;b&gt;- Too many paths&lt;/b&gt; &lt;br&gt;&lt;b&gt;- Restrict to paths in a subroutine&lt;/b&gt; &lt;br&gt;&lt;b&gt;- or to two consecutive branches&lt;/b&gt; &lt;br&gt;&lt;br&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #990000"&gt;• Loop Testing –&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;; COLOR: #3f4a50"&gt; In addition to above measures, there are testing strategies based on loop testing. These strategies relate to testing single loops, concatenated loops, and nested loops. Loops are fairly simple to test unless dependencies exist among the loop or b/w a loop and the code it contains. &lt;br&gt; This white box technique focuses exclusively on the validity of loop constructs. Four different classes of loops can be defined: &lt;br&gt;&lt;br&gt;&lt;b&gt;1. simple loops,&lt;/b&gt; &lt;br&gt;&lt;b&gt;2. nested loops,&lt;/b&gt; &lt;br&gt;&lt;b&gt;3. concatenated loops, and&lt;/b&gt; &lt;br&gt; &lt;b&gt;4. unstructured loops.&lt;/b&gt; &lt;br&gt;&lt;br&gt;&lt;b&gt;Simple Loops:&lt;/b&gt; &lt;br&gt;The following tests should be applied to simple loops where n is the maximum number of allowable passes through the loop: &lt;br&gt;&lt;br&gt;1. skip the loop entirely, &lt;br&gt; 2. only pass once through the loop, &lt;br&gt;3. m passes through the loop where m &amp;lt; n, &lt;br&gt;4. n - 1, n, n + 1 passes through the loop. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Nested Loops&lt;/b&gt;: &lt;br&gt;The testing of nested loops cannot simply extend the technique of simple loops since this would result in a geometrically increasing number of test cases. One approach for nested loops: &lt;br&gt; &lt;br&gt;1. Start at the innermost loop. Set all other loops to minimum values. &lt;br&gt;2. Conduct simple loop tests for the innermost loop while holding the outer loops at their minimums. Add tests for out-of-range or excluded values. &lt;br&gt; 3. Work outward, conducting tests for the next loop while keeping all other outer loops at minimums and other nested loops to typical values. &lt;br&gt;4. Continue until all loops have been tested. &lt;br&gt;&lt;br&gt;&lt;b&gt;Concatenated Loops&lt;/b&gt;: &lt;br&gt; Concatenated loops can be tested as simple loops if each loop is independent of the others. If they are not independent (e.g. the loop counter for one is the loop counter for the other), then the nested approach can be used. &lt;br&gt; &lt;br&gt;&lt;b&gt;Unstructured Loops&lt;/b&gt;: &lt;br&gt;This type of loop should be redesigned not tested!!! &lt;/span&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-2207687253127905499?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/2207687253127905499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=2207687253127905499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/2207687253127905499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/2207687253127905499'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/whats-difference-between-priority-and.html' title='What&apos;s the difference between priority and severity of bugs in  Software Testing?'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-5331173959741979742</id><published>2009-03-31T10:15:00.001-07:00</published><updated>2009-03-31T10:15:26.081-07:00</updated><title type='text'>The role of a software test manager</title><content type='html'>&lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;span style="COLOR: windowtext"&gt;By David W. Johnson&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;The role of the software test manager or test lead is to effectively lead the testing team. To fulfill this role, the lead must understand the discipline of testing and how to effectively implement a testing process while fulfilling the traditional leadership roles of a manager. What does that mean? The manager must manage and implement or maintain an effective testing process. That involves creating a test infrastructure that supports robust communication and a cost-effective testing framework. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;What the test manager is responsible for: &lt;/span&gt;&lt;/p&gt; &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defining and implementing the role testing plays within the organization. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defining the scope of testing within the context of each release/delivery. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Deploying and managing the appropriate testing framework to meet the testing mandate. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Implementing and evolving appropriate measurements and metrics. &lt;/span&gt;&lt;/li&gt;  &lt;ul type="circle"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;To be applied against the product under test. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;To be applied against the testing team.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Planning, deploying and managing the testing effort for any given engagement/release. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Managing and growing testing assets required for meeting the testing mandate: &lt;/span&gt;&lt;/li&gt;  &lt;ul type="circle"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Team members &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Testing tools &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Testing processes&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Retaining skilled testing personnel.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;The test manager or lead must understand how testing fits into the organizational structure. In other words, he must clearly define its role within the organization. This is often accomplished by crafting a mission statement or a defined testing mandate. Example: &amp;quot;To prevent, detect, record and manage defects within the context of a defined release.&amp;quot; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;Now it becomes the test lead&amp;#39;s job to communicate and implement effective managerial and testing techniques to support this &amp;quot;simple&amp;quot; mandate. Your team, peers&amp;#39; (development lead, deployment lead and other leads) and superior&amp;#39;s expectations need to be set appropriately given the timeframe of the release and the maturity of the development team and testing team. These expectations are usually defined in terms of functional areas deemed to be in scope or out of scope. Examples of those in scope include creating a new customer profile and updating a customer profile. Examples of those out of scope may include security and backup and recovery. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;The definition of scope will change as you move through the various stages of testing. The key thing is to make sure your testing team and the organization as a whole clearly understands what is being tested and what is not being tested for the current release. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;The test lead/manager must employ the appropriate testing framework or test architecture to meet the organization&amp;#39;s testing needs. Although the testing framework requirements for any given organization are difficult to define, there are several questions the test lead/manager must ask. The answers to the questions and others will define the short- and long-term goals of the testing framework. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;What is the relationship between product maturity and testing?&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;&lt;br&gt; In the chart below, the first arrow leads to the product being ready for deployment. The second arrow leads to the product being ready to be tested as an integrated or whole system. The third arrow indicates functional testing can be performed against delivered components. The fourth arrow indicates the developer can test the code as an un-integrated unit. And the fifth arrow leads to the product concept being captured and reviewed. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;How can the testing organization help prevent defects? &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;&lt;br&gt; There are really two sides to testing verification and validation. Unfortunately the meaning of those terms has been defined differently by several governing/regulatory bodies. To put it more succinctly, there are tests that can be performed before the product is constructed or built, and there are tests that can be performed after the product has been constructed. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;To prevent defects from occurring, you must test before the product is constructed. There are several methods for doing that. The most powerful and cost-effective method is reviews. Reviews can be either formal, technical reviews or peer reviews. Formal product development life cycles will provide the testing team with useful materials/deliverables for the review process. When properly implemented, any effective development paradigm should supply those deliverables. Example of development models and at what point during those models you can get information for the review process: &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l6 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Cascade or waterfall &lt;/span&gt;&lt;/li&gt;  &lt;ul type="circle"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l6 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Requirements &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l6 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Functional specifications&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l6 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Agile or Extreme Programming &lt;/span&gt;&lt;/li&gt;  &lt;ul type="circle"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l6 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;High-level requirements &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l6 level2 lfo1; tab-stops: list 1.0in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Storyboards&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;Testing needs to be included in this review process, and any defects found need to be recorded and managed. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;How and when can the testing organization detect software defects? &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;&lt;br&gt; The testing organization can detect software defects after the product or some operational segment of it has been delivered. The type of testing to be performed depends on the maturity of the product at the time. The classic hierarchy or sequence of testing is as follows: &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Design review &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Unit testing &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Functional testing &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;System testing &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;User acceptance testing&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;The testing team should be involved in at least three of those phases: design review, function testing and system testing. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;Functional testing involves the design, implementation and execution of test cases against the functional specification and/or functional requirements for the product. This is where the testing team measures the functional implementation against the product intent using well-formulated test cases and notes any discrepancies as defects (faults). One example is testing to ensure the Web page allows the entry of a new forum member. In that case, you are testing to ensure the Web page functions as an interface. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;System testing follows much the same course (design, implement, execute and defect), but the intent or focus is very different. While functional testing focuses on discrete functional requirements, system testing focuses on the flow through the system and the connectivity between related systems. An example of that is testing to ensure the application allows the entry, activation and recovery of a new forum member. In that case, you are testing to ensure the system supports the business. There are several types of system tests; what is required for any given release should be determined by the scope: &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l2 level1 lfo3; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Security &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l2 level1 lfo3; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Performance &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l2 level1 lfo3; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Integration&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;What are the minimum set of measurements and metrics? &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;&lt;br&gt; The single most important deliverable the testing team maintains is defects. Defects are arguably the only product the testing team produces that are seen and understood by the project as a whole. This is where the faults against the system are recorded and tracked. At a minimum each defect should contain the following: &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defect name/title &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defect description: What requirement is not being met? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Detailed instructions on how to replicate the defect. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defect severity. &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Impacted functional area. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defect author. &lt;/span&gt;&lt;/li&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l3 level1 lfo4; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Status (open, in progress, fixed, closed)&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;This will then provide the data for a minimal set of metrics: &lt;/span&gt;&lt;/p&gt; &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo5; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Number of defects raised &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo5; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Distribution of defects in terms of severity &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l1 level1 lfo5; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Distribution of defects in terms of functional area&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 10pt"&gt;From this baseline the measurements and metrics a testing organization maintains are dependent on its maturity and mission statement. The Software Engineering Institute (SEI) Process Maturity Levels apply to testing as much as they do to any software engineering discipline: &lt;/span&gt;&lt;/p&gt;  &lt;ol type="1"&gt; &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l5 level1 lfo6; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Initial: (Anarchy) Unpredictable and poorly controlled. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l5 level1 lfo6; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Repeatable: (Folklore) Repeat previously mastered tasks. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l5 level1 lfo6; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Defined: (Standards) Process characterized, fairly well understood. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l5 level1 lfo6; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Managed: (Measurement) Process measured and controlled. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto; mso-list: l5 level1 lfo6; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Optimizing: (Optimization) Focus on process improvement. &lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;p style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto" class="MsoNormal"&gt;&lt;span style="COLOR: windowtext"&gt;How disciplined the testing organization needs to become and what measurements and metrics are required depend on a cost/benefit analysis conducted by the test lead/manager. What makes sense in terms of the stated goals and previous performance of the testing organization? &lt;/span&gt;&lt;/p&gt;  &lt;p style="MARGIN: 0in 0in auto; mso-margin-top-alt: auto" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="COLOR: windowtext"&gt;How to grow and maintain a testing organization? &lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: windowtext"&gt;&lt;br&gt;Managing or leading a testing team is probably one of the most challenging positions in IT. The team is usually understaffed and lacks appropriate tooling and financing. Deadlines don&amp;#39;t move, but the testing phase is continually being pressured by product delays. Motivation and retention of key testing personnel under these conditions is critical. How do you accomplish this seemly impossible task? I can only go by my personal experience both as a lead and a team member: &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;If the timelines are impacted, modify the test plan appropriately in terms of scope. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Clearly communicate the situation to the testing team and project management. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Keep clear lines of communication with development and project management. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Whenever possible sell, sell, sell the importance and contributions of the testing team. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Ensure the testing organization has clearly defined roles for each member of the team and a well-defined career path. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Measure and communicate the testing team&amp;#39;s return on investment. If the detected defect would have reached the field, what would have been the cost? &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Explain testing expenditures in terms of investment (ROI) not cost. &lt;/span&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in auto; COLOR: windowtext; mso-margin-top-alt: auto; mso-list: l4 level1 lfo7; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Finally, never lose your cool&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-5331173959741979742?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/5331173959741979742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=5331173959741979742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5331173959741979742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5331173959741979742'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/role-of-software-test-manager.html' title='The role of a software test manager'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-3543362295660914287</id><published>2009-03-31T10:12:00.001-07:00</published><updated>2009-03-31T10:12:55.717-07:00</updated><title type='text'>How to evaluate Testing Tool</title><content type='html'>&lt;br clear="all"&gt; &lt;p style="LINE-HEIGHT: 140%"&gt;&lt;span style="LINE-HEIGHT: 140%; FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; COLOR: black; FONT-SIZE: 10pt"&gt;Recently started testing of an enterprise grade web application developed in JAVA, that brought me round to that ever important question: How to evaluate testing tools?&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%"&gt;&lt;span style="LINE-HEIGHT: 140%; FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; COLOR: black; FONT-SIZE: 10pt"&gt;After shooting this question to many senior candidates during interviews, I found out that the crowd out there has not yet given a good thought on that one. Here are the criteria for evaluating a tool/ language before you start developing automation frameworks.&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;NEVER choose a tool/ language for developing you automation framework simply because that's the only thing you know or have worked on in the past. Like I say "Don't try to use a Hammer on a screw."&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Begin by determining what kind of user interfaces are there to test and what kind of software components your framework would have to interface with. This could range from GUI's like plain HTML,flex,win32 apps to components like Java/C API's, Databases, 3rd party services like ssh support etc etc. Ascertain whether your target tool/language can "talk" to these interfaces comfortably.&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Determine the amount of support available for development using these languages/ tools in the domain areas required. Official/ unofficial forums, extent of search engine indexing, active developer community out there being a few of them.&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;4.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Determine the ease of developing frameworks using these as against other choices. This is where a couple of POC's can come in handy.&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;5.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;How maintainable and scalable is your framework developed on this. Since testing frameworks are highly dynamic pieces of code that work with changing product code bases.&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;6.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;How lightweight is the tool, since you do NOT want a tool that is so heavy that impacts the performance of your test runs.&lt;/span&gt;&lt;/p&gt;  &lt;p style="LINE-HEIGHT: 140%; TEXT-INDENT: -0.25in; MARGIN: 0in 0in 12pt 48pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;; mso-fareast-font-family: Georgia; mso-bidi-font-family: Georgia"&gt;&lt;span style="mso-list: Ignore"&gt;7.&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Georgia&amp;#39;,&amp;#39;serif&amp;#39;"&gt;What is the amount of support it has for reporting and collaboration. You might want to generate reports in various formats if you want it to range from being "mailable" to your stakeholders to interfacing with your defect management and test case management software.&lt;/span&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-3543362295660914287?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/3543362295660914287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=3543362295660914287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3543362295660914287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3543362295660914287'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/how-to-evaluate-testing-tool.html' title='How to evaluate Testing Tool'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-167308691383030518</id><published>2009-03-31T10:11:00.001-07:00</published><updated>2009-03-31T10:11:51.985-07:00</updated><title type='text'>How to learn white box testing</title><content type='html'>&lt;br clear="all"&gt; &lt;p style="MARGIN: 0in 0in 0pt" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Q-&lt;b&gt; If I have been a QA tester, and don&amp;#39;t have white box testing, where do you learn the skill?&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p style="MARGIN: 0in 0in 0pt" class="MsoNormal"&gt;&lt;b&gt;&lt;font size="3" face="Calibri"&gt; &lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo1" class="MsoListParagraph"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="3" face="Calibri"&gt;A-&lt;/font&gt;&lt;span style="FONT: 7pt &amp;#39;Times New Roman&amp;#39;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;font size="3" face="Calibri"&gt;White box testing, also known as glass box or clear box testing, is testing that takes place where the testing had working knowledge of the code. In the AST BBST Foundations course, glass box testing concerns are illustrated with the question, &amp;quot;Does this code do what the programmer expects?&amp;quot; This is in contrast to the black box concern of, &amp;quot;Does this product fail to do what users -- human and software -- expect?&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 11pt"&gt;From a learning perspective, this can mean a number of things. Testers working at this level are often comfortable with programming, hardware, networks, databases and application servers. Depending on the software, specialized knowledge of certain programming techniques or specific technologies may be required. Examples could include custom protocols, effective use of connection polling, language-specific test frameworks, among others. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-FAMILY: &amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;; FONT-SIZE: 11pt"&gt;Here&amp;#39;s what I normally recommend for people getting started down this path: &lt;/span&gt;&lt;/p&gt; &lt;ul type="disc"&gt; &lt;li style="MARGIN: 0in 0in 12pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Learn the basics of computer science:&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; You can do this through schooling or through some well selected books with a good self-study ethic. I recommend looking for entry-level courses and books on computer organization, networking, databases and file systems, data structures, assemblers/compilers/interpreters, algorithms, and discrete mathematics. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in 12pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Get comfortable working in a language:&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Today, I favor Ruby. But I taught myself Pascal as a teenager, learned C/C++ in college, and used Java in my first job as a programmer. It doesn&amp;#39;t matter what language you learn -- just get fluent. You need to be comfortable enough that you can turn out simple programs rather easily and you need to be able understand and follow more complicated code -- even if you couldn&amp;#39;t write it yourself. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in 12pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Practice writing unit tests, stubs, and harnesses:&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; As you learn a language, you&amp;#39;ll want to be sure you learn how to do unit testing in that language as you progress. The reason isn&amp;#39;t so you can write better code yourself -- that&amp;#39;s a happy side effect -- but so you get comfortable looking at and editing those types of tests. Similarly, as you start to practice testing, you&amp;#39;re more than likely going to encounter situations where you&amp;#39;ll want to mock out part of your test. This is a common pastime for white box testers, as they often use custom stubs and harness to mock out parts of the component their testing or to add more visibility to the results of their testing. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in 12pt; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Download and play with tools:&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; This type of testing usually involves some tooling help if you plan on getting anywhere fast. Anything from your common runtime analysis tools (memory profilers, performance monitors, code coverage tools, etc.) to simple static analysis tools can help you learn the lingo and can get you thinking about common problems in white box testing. There are several good open source sites where you can find tools in this area; I currently favor &lt;a href="http://opensourcetesting.org"&gt;opensourcetesting.org&lt;/a&gt;. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li style="MARGIN: 0in 0in 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Learn about security testing:&lt;/span&gt;&lt;/b&gt;&lt;span style="mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; Get to know your buddies at the Open Web Application Security Project (OWASP). You can think of security testing as a capstone project for white box testers. Not only is it a practical application of the skills and tactics that make white box testers successful, but it pulls together everything else you&amp;#39;re learning. If you work through the OWASP materials, you see that you&amp;#39;ll need to understand a lot of the computer science materials. You&amp;#39;ll need to be able to read code. You&amp;#39;ll need to use tools -- lots of tools -- and it will be helpful to be able to write your own simple scripts. I find that OWASP makes all of their material accessible to the beginner or near beginner). They also have local groups -- perhaps in your area -- where you can get some peer support for your learning. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-167308691383030518?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/167308691383030518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=167308691383030518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/167308691383030518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/167308691383030518'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/how-to-learn-white-box-testing.html' title='How to learn white box testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-2212010621685944467</id><published>2009-03-31T10:10:00.001-07:00</published><updated>2009-03-31T10:10:01.986-07:00</updated><title type='text'>Testers: Time to gear up for mobile software testing</title><content type='html'>&lt;br clear="all"&gt; &lt;p style="MARGIN: 0in 0in auto" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;; COLOR: windowtext; FONT-SIZE: 12pt"&gt;The economy has many businesses retrenching or in a holding pattern -- but mobile applications designed to be accessed via smartphones or personal digital assistants (PDAs) are poised to be one of the next big things, according to many experts. If so, what impact will that have on enterprise quality assurance (QA) and testing organizations? &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;&amp;quot;Good testing practices apply regardless of the platform,&amp;quot; said author and testing consultant Judy McKay, but she and other testing pros say mobile apps will also pose some unique challenges. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;For starters, &amp;quot;the mobile phone is a frontier-based mentality,&amp;quot; said William Coleman, vice president of business development at LogiGear Corp., a software testing services company in San Mateo, Calif. &amp;quot;There are four or five operating systems all competing for supremacy,&amp;quot; he said, and &amp;quot;very loose standards … that many phone manufacturers and app developers circumvent.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;But despite the lack of standards -- and the down economy -- it appears mobile app development is forging ahead. In a study released in January, Evans Data Corp. found that 94% of corporate developers expect the development of wireless enterprise applications to either increase (47.6%) or stay the same (46.4%) this year, with the Asia-Pacific region leading the growth. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;For the business user, &amp;quot;we&amp;#39;re seeing enterprise apps being developed on enterprise standard OSes like WinMo [Windows Mobile] and RIM, but we don&amp;#39;t see a rush to the others just yet. Enterprises trust Microsoft and RIM,&amp;quot; said Coleman. According to the Evans Data study, 40% more developers plan to target Windows Mobile than Apple iPhone, and 46% more plan to target .NET (compact framework) than Google&amp;#39;s Android platform. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Not only are there multiple operating systems to take into account, but testers will also have to deal with multiple versions of an operating system, various hardware devices and form factors, and the strength of a carrier&amp;#39;s network connections and services. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;&amp;quot;The amount of permutations does create a significant problem for testing and time to market,&amp;quot; said Doron Reuveni, CEO and co-founder of uTest, a Software as a Service (SaaS) marketplace for software application testing based in Southborough, Mass. &amp;quot;The issues in mobile apps are quite significant compared to testing Web and desktop apps.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Andrew Reshefsky is a uTest tester who has worked on mobile email encryption programs for corporate clients. A big challenge, he said, is that users are on different networks, and &amp;quot;you have to figure out whether the issue is because of the network or the software.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Another issue is the device itself. &amp;quot;Every phone has an OS; some phones can update the OS, some can&amp;#39;t. If the problem is with the phone you have to figure that out, because software developers don&amp;#39;t like to fix problems that don&amp;#39;t exist [with the software],&amp;quot; he said. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Testers also face the challenge of shorter development cycles. &amp;quot;The time to market is extremely short, so usability testing is a big thing,&amp;quot; McKay said. According to Evans Data, 40% of wireless development projects take three to six months to complete, and 60% are completed in less than six months. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;McKay added that there will be &amp;quot;more emphasis on performance, connectivity and upgradeability.&amp;quot; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;&amp;quot;When you have a captive user, they&amp;#39;re stuck with the performance you give them, but with mobile devices they expect very fast performance, but you don&amp;#39;t have a guaranteed level of connectivity,&amp;quot; she said. If users are unhappy with performance, &amp;quot;there&amp;#39;s a higher risk that the app will be completely rejected.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;uTest&amp;#39;s Reuveni said their customers are looking for two levels of testing. First, &amp;quot;they want some level of certification that this works on this variety of carriers, networks, phones, etc., with this version of the software, so there&amp;#39;s a degree of comfort when they release it,&amp;quot; he said. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Second, he said, is to look for flaws. &amp;quot;In mobile there&amp;#39;s a lot of ad hoc exploratory testing, partly due to the apps being developed so quickly, but also the customer wants real user behavior, so they&amp;#39;re looking for a combination of flaws and feedback from real users that understand and have seen a lot of mobile apps.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3" face="Times New Roman"&gt;Test automation will be key&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;To meet the challenges of testing mobile apps, automation will be key, McKay said. &amp;quot;Any time you do performance load you&amp;#39;ve got to use tools,&amp;quot; she said. LogiGear&amp;#39;s Coleman added, &amp;quot;As complexity [increases], the requirements for testing get more demanding. The only way to capture that is through automation.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;LogiGear specializes in test automation, and Coleman said they are working in the mobile area. &amp;quot;The big hole in this space is automation for mobile phones,&amp;quot; he said. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;It&amp;#39;s a nascent area, said Manish Mathuria, founder and chief technology officer of InfoStretch Corp., an outsourcer of quality assurance, test automation, software development and mobile testing services. &amp;quot;One reason is the form factors of the different devices in use vary so widely; for an automation tool to cover all of them reliably is not an easy task,&amp;quot; he said. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;In terms of adopting automation, Mathuria said, QA teams have a long way to go as well: &amp;quot;Enterprise QA teams are sometimes barely equipped to manage automation well on the desktop side.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Mathuria said that today the great majority of mobile apps his company sees are consumer-facing, with games being the biggest area, followed by utilities, but everyone interviewed for this article agreed that the enterprise is likely to follow. &amp;quot;The smartphone is the new computer abstraction,&amp;quot; Coleman said. &amp;quot;Ten years from now we won&amp;#39;t be using laptops.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Are testers prepared for the mobile revolution? &amp;quot;Testers tend to be behind the development curve,&amp;quot; McKay said. &amp;quot;Developers are out experimenting with new things, but testers may be deeply involved in the last project.&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Times New Roman"&gt;Her advice? &amp;quot;Keep an eye on what developers are doing and thinking, and the ops people. [Testers] can no longer pretend they don&amp;#39;t need to know about performance of load and connectivity. There is a lot of expertise that will have to be developed, and this will be the time to get better.&amp;quot; &lt;/font&gt;&lt;/p&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-2212010621685944467?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/2212010621685944467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=2212010621685944467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/2212010621685944467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/2212010621685944467'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/03/testers-time-to-gear-up-for-mobile.html' title='Testers: Time to gear up for mobile software testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-3054245204765103808</id><published>2009-02-05T05:17:00.000-08:00</published><updated>2009-02-05T05:18:57.152-08:00</updated><title type='text'>Cloud computing creates software testing challenges</title><content type='html'>The "cloud" promises to create new opportunities for enterprise developers as well as for suppliers offering services and tools for this new paradigm. For testing organizations, there will be both new challenges and new tools for answering what Soasta CEO Tom Lounibos calls the one key question: Can I go live?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The impact on testing is that the end-user experience is being influenced by the cloud provider and all other parties involved.&lt;br /&gt;Vik Chaudhary&lt;br /&gt;VP of product management and corporate development, Keynote Systems Inc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"Testing all the layers — from your application to the cloud service provider — is something testers will have to become efficient in," said Vik Chaudhary, vice president of product management and corporate development at Keynote Systems Inc. in San Mateo, Calif.&lt;br /&gt;According to market research firm IDC, spending on IT cloud services is expected to grow nearly threefold, to $42 billion by 2012. Cloud computing will also account for 25% of IT spending growth in 2012 and nearly a third of the IT spending growth in 2013, IDC projected.&lt;br /&gt;IDC makes a distinction between "cloud services" and "cloud computing." Cloud services, according to the market research firm, are "consumer and business products, services, and solutions that are delivered and consumed in real-time over the Internet." In contrast, cloud computing as defined by IDC is the infrastructure or "stack" for development and deployment that enables the "real-time delivery of products, services, and solutions over the Internet."&lt;br /&gt;Chaudhary explains the shift: "Enterprises like Schwab, Travelocity, etc. have been deploying their own data centers for years. The challenge was to manage highly scalable applications and how to ensure the best experience. Legions of people were employed by these companies to monitor/test/add servers, etc."&lt;br /&gt;What's happening more recently with new cloud infrastructure like Google App Engine, he said, is that organizations can run their applications on Google's infrastructure.&lt;br /&gt;"That means the bar to deploy applications in the cloud is so much lower. You don't have to have data centers or ops teams; you can focus on building the application and the functionality. It's a paradigm shift in application development," he said.&lt;br /&gt;It's a shift for the tester, too. For example, Chaudhary said, "If you build an application and you use the BlackBerry to access a manufacturing application hosted by a cloud company like Salesforce, Salesforce does a certain amount of testing, to ensure the server is available, etc. But when it comes to the application itself, does it run on two phones or 50 phones? Do you have a long page to load?"&lt;br /&gt;In addition, the cloud hosting company may use a third-party service to speed performance. "The impact on testing is that the end-user experience is being influenced by my company, by the cloud provider, and all other parties involved," he said.&lt;br /&gt;Reducing testing costs&lt;br /&gt;While Lounibos said Mountain View, Calif.-based Soasta Inc. has a growing group of customers that don't own servers and do everything in the cloud, "the majority are still more traditional; they use managed service providers and are dabbling in the cloud." However, he said, cloud-based testing is a way for organizations to learn the cloud and reduce the costs of testing at the same time.&lt;br /&gt;"Traditional customers see testing as a money pit. They're looking for ways to reduce costs. The [main] argument for cloud computing for the enterprise is, is it reliable enough," he said. "This is not so for testing. Testing [in the cloud] just replicates the real world; it doesn't have the issues associated with production, but it has the benefits of cost reduction."&lt;br /&gt;With cloud computing, Lounibos said, testers "have access, availability, and affordability to enormous amounts of computing power, which is what's needed in testing. The idea of being able to provision 125 servers in 5 to 8 minutes and only pay for the hours you test is so compelling. You no longer have to have huge test labs for Web applications."&lt;br /&gt;Soasta's CloudTest, for example, is available as an on-demand virtual test lab in the cloud or as an appliance. It supports load, performance, functional, and Web UI/Ajax testing. According to Lounibos, "We were built on top of the cloud for the cloud."&lt;br /&gt;For its part, Keynote offers KITE (Keynote Internet Testing Environment) for testing and analyzing the performance of Web applications across the Internet cloud. KITE offers instant testing from the desktop as well as from a variety of geographic locations.&lt;br /&gt;For Internet applications in particular, Chaudhary said performance testing needs to move to the cloud.&lt;br /&gt;"When it comes to performance, you're not depending just on the application but on all the providers [involved]. And do you [the user] have DSL or a dialup line, or a mobile device? Performance testing by nature is environmental," he said.&lt;br /&gt;For mobile applications, Chaudhary said both performance and functional testing should move to the cloud.&lt;br /&gt;"For mobile applications, the functional testing also depends on the providers. Say you've got a screen for login. The size of the page and the screen on phone and the provider can all affect if the application works," he said.&lt;br /&gt;By testing in the cloud, Chaudhary added, organizations can more easily and cost-effectively test for hundreds of devices.&lt;br /&gt;With applications that run on the cloud, "you need to test network performance, server performance, database performance, software performance on the application, and how it's cached in the client," said Dennis Drogseth, a vice president at market research company Enterprise Management Associates Inc., based in Boulder, Colo. "If you have a single application that runs in one place, you can test it geographically in one place. What you have with an Amazon or Facebook, for example, is all kinds of pieces coming in from different geographies, and you can't know ahead of time where they'll be. It's definitely more complicated than running a test script on a single server-based application."&lt;br /&gt;The challenge is to run tests across all the diverse components and geographies to identify problems, he said, and organizations that develop an application "typically don't have access to those types of environments. So [a company like] Keynote is giving those testers a working environment where they leverage the Internet cloud and all the vagaries and look at real networks and desktops."&lt;br /&gt;New testing tools needed&lt;br /&gt;Drogseth said new types of testing tools will be needed. "You can't do cloud computing with application development testing tools for a LAN or a single server. You need tools to allow you to understand the network and desktop implications and all the pieces. You need to bring the network to the developer."&lt;br /&gt;"I suspect over the next five years every testing vendor will try to come to the cloud. I think we will have a new generation of testing companies," said Lounibos. "This [cloud computing] is a big market coming down road; it's just the way we'll consume services."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-3054245204765103808?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/3054245204765103808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=3054245204765103808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3054245204765103808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3054245204765103808'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/02/cloud-computing-creates-software.html' title='Cloud computing creates software testing challenges'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-5727701800514374918</id><published>2009-02-05T05:15:00.000-08:00</published><updated>2009-02-05T05:16:30.490-08:00</updated><title type='text'>Software Testing Advice for Novice Testers</title><content type='html'>Novice testers have many questions about software testing and the actual work that they are going to perform.  As novice testers, you should be aware of certain facts in the software testing profession.  The tips below will certainly help to advance you in your software-testing career.  These ‘testing truths’ are applicable to and helpful for experienced testing professionals as well.  Apply each and every testing truth mentioned below in your career and you will never regret what you do.&lt;br /&gt;Know Your Application&lt;br /&gt;Don’t start testing without understanding the requirements.  If you test without knowledge of the requirements, you will not be able to determine if a program is functioning as designed and you will not be able to tell if required functionality is missing.  Clear knowledge of requirements, before starting testing, is a must for any tester.&lt;br /&gt;Know Your Domain&lt;br /&gt;As I have said many times, you should acquire a thorough knowledge of the domain on which you are working.  Knowing the domain will help you suggest good bug solutions.  Your test manager will appreciate your suggestions, if you have valid points to make.  Don’t stop by only logging the bug.  Provide solutions as well.  Good domain knowledge will also help you to design better test cases with maximum test coverage.  For more guidance on acquiring domain knowledge.&lt;br /&gt;No Assumptions In Testing&lt;br /&gt;Don’t start testing with the assumption that there will be no errors.  As a tester, you should always be looking for errors.&lt;br /&gt;Learn New Technologies&lt;br /&gt;No doubt, old testing techniques still play a vital role in day-to-day testing, but try to introduce new testing procedures that work for you.  Don’t rely on book knowledge.  Be practical. Your new testing ideas may work amazingly for you.&lt;br /&gt;You Can’t Guarantee a Bug Free Application&lt;br /&gt;No matter how much testing you perform, you can’t guarantee a 100% bug free application.  There are some constraints that may force your team to advance a product to the next level, knowing some common or low priority issues remain. Try to explore as many bugs as you can, but prioritize your efforts on basic and crucial functions.  Put your best efforts doing good work.&lt;br /&gt;Think Like An End User&lt;br /&gt;This is my top piece of advice.  Don’t think only like a technical guy.  Think like customers or end users.  Also, always think beyond your end users.  Test your application as an end user.  Think how an end user will be using your application.  Technical plus end user thinking will assure that your application is user friendly and will pass acceptance tests easily.  This was the first advice to me from my test manager when I was a novice tester.&lt;br /&gt;100% Test Coverage Is Not Possible&lt;br /&gt;Don’t obsess about 100% test coverage.  There are millions of inputs and test combinations that are simply impossible to cover.  Use techniques like boundary value analysis and equivalence partitioning testing to limit your test cases to manageable sizes.&lt;br /&gt;Build Good Relations With Developers&lt;br /&gt;As a tester, you communicate with many other team members, especially developers. There are many situations where tester and developer may not agree on certain points.  It will take your skill to handle such situations without harming a good relationship with the developer.  If you are wrong, admit it.  If you are right, be diplomatic.  Don’t take it personally.  After all, it is a profession, and you both want a good product.&lt;br /&gt;Learn From Mistakes&lt;br /&gt;As a novice, you will make mistakes.  If you don’t make mistakes, you are not testing hard enough!  You will learn things as you get experience.  Use these mistakes as your learning experience.  Try not to repeat the same mistakes.  It hurts when the client files any bug in an application tested by you.  It is definitely an embracing situation for you and cannot be avoided.  However, don’t beat yourself up.  Find the root cause of the failure. Try to find out why you didn’t find that bug, and avoid the same mistake in the future.  If required, change some testing procedures you are following.&lt;br /&gt;Don’t Underestimate Yourself if Some of Your bugs Are Not Fixed&lt;br /&gt;Some testers have assumptions that all bugs logged by them should get fixed.  It is a good point to a certain level but you must be flexible according to the situation.  All bugs may or may not be fixed.  Management can defer bugs to fix later as some bugs have low priority, low severity or no time to fix.  Over time you will also learn which bugs can be deferred until the next release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-5727701800514374918?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/5727701800514374918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=5727701800514374918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5727701800514374918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5727701800514374918'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/02/software-testing-advice-for-novice.html' title='Software Testing Advice for Novice Testers'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-766675397820740441</id><published>2009-02-05T05:14:00.000-08:00</published><updated>2009-02-05T05:15:19.415-08:00</updated><title type='text'>SQL Injection – How to Test Web Applications against SQL Injection Attacks</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cvb47657.CITIODC%5CLocal%20Settings%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Cvb47657.CITIODC%5CLocal%20Settings%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Cvb47657.CITIODC%5CLocal%20Settings%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Arial","sans-serif"; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	color:black;} p 	{mso-style-noshow:yes; 	mso-style-priority:99; 	mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman","serif"; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p&gt;Security testing of web applications against SQL Injection, explained with simple examples - By Inder P Singh.&lt;/p&gt;  &lt;p&gt;Many applications use some type of a database. An application under test might have a user interface that accepts user input that is used to perform the following tasks:&lt;/p&gt;  &lt;p&gt;1.    Show the relevant stored data to the user e.g. the application checks the credentials of the user using the log in information entered by the user and exposes only the relevant functionality and data to the user&lt;/p&gt;  &lt;p&gt;2.    Save the data entered by the user to the database e.g. once the user fills up a form and submits it, the application proceeds to save the data to the database; this data is then made available to the user in the same session as well as in subsequent sessions&lt;/p&gt;  &lt;p&gt;Some of the user inputs might be used in framing SQL statements that are then executed by the application on the database. It is possible for an application NOT to handle the inputs given by the user properly. If this is the case,&lt;strong&gt; a malicious user could provide unexpected inputs to the application that are then used to frame and execute SQL statements on the database.&lt;/strong&gt; This is called SQL injection. The consequences of such an action could be alarming.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The following things might result from SQL injection:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. &lt;/strong&gt;The user could log in to the application as another user, even as an administrator.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. &lt;/strong&gt;The user could view private information belonging to other users e.g. details of other users’ profiles, their transaction details etc.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. &lt;/strong&gt;The user could change application configuration information and the data of the other users.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. &lt;/strong&gt;The user could modify the structure of the database; even delete tables in the application database.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; The user could take control of the database server and execute commands on it at will.&lt;/p&gt;  &lt;p&gt;Since the consequences of allowing the SQL injection technique could be severe, it follows that SQL injection should be tested during the security testing of an application. Now with an overview of the SQL injection technique, let us understand a few practical examples of SQL injection.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;Important: The SQL injection problem should be tested only in the test environment. &lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If the application has a log in page, it is possible that the application uses a dynamic SQL such as statement below. This statement is expected to return at least a single row with the user details from the Users table as the result set when there is a row with the user name and password entered in the SQL statement.&lt;/p&gt;  &lt;p&gt;SELECT * FROM Users WHERE User_Name = ‘” &amp;amp; strUserName &amp;amp; “‘ AND Password = ‘” &amp;amp; strPassword &amp;amp; “’;”&lt;/p&gt;  &lt;p&gt;If the tester would enter John as the strUserName (in the textbox for user name) and Smith as strPassword (in the textbox for password), the above SQL statement would become:&lt;/p&gt;  &lt;p&gt;SELECT * FROM Users WHERE User_Name = ‘John’ AND Password = ‘Smith’;&lt;/p&gt;  &lt;p&gt;If the tester would enter John’– as strUserName and no strPassword, the SQL statement would become:&lt;/p&gt;  &lt;p&gt;SELECT * FROM Users WHERE User_Name = ‘John’– AND Password = ‘Smith’;&lt;/p&gt;  &lt;p&gt;Note that the part of the SQL statement after John is turned into a comment. If there were any user with the user name of John in the Users table, the application could allow the tester to log in as the user John. The tester could now view the private information of the user John.&lt;/p&gt;  &lt;p&gt;What if the tester does not know the name of any existing user of the application? In such a case, the tester could try common user names like admin, administrator and sysadmin. If none of these users exist in the database, the tester could enter John’ or ‘x’=’x as strUserName and Smith’ or ‘x’=’x  as strPassword. This would cause the SQL statement to become like the one below.&lt;/p&gt;  &lt;p&gt;SELECT * FROM Users WHERE User_Name = ‘John’ or ‘x’='x’ AND Password = ‘Smith’ or ‘x’=’x’;&lt;/p&gt;  &lt;p&gt;Since ‘x’=’x’ condition is always true, the result set would consist of all the rows in the Users table. The application could allow the tester to log in as the first user in the Users table.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;i&gt;Important: The tester should request the database administrator or the developer to copy the table in question before attempting the following SQL injection.&lt;/i&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If the tester would enter John’; DROP table users_details;’—as strUserName and anything as strPassword, the SQL statement would become like the one below.&lt;/p&gt;  &lt;p&gt;SELECT * FROM Users WHERE User_Name = ‘John’; DROP table users_details;’ –‘ AND Password = ‘Smith’;&lt;/p&gt;  &lt;p&gt;This statement could cause the table “users_details” to be permanently deleted from the database.&lt;/p&gt;  &lt;p&gt;Though the above examples deal with using the SQL injection technique only the log in page, the tester should test this technique on all the pages of the application that accept user input in textual format e.g. search pages, feedback pages etc.&lt;/p&gt;  &lt;p&gt;SQL injection might be possible in applications that use SSL. Even a firewall might not be able to protect the application against the SQL injection technique.&lt;/p&gt;  &lt;p&gt;I have tried to explain the SQL injection technique in a simple form. I would like to re-iterate that SQL injection should be tested only in a test environment and not in the development environment, production environment or any other environment. Instead of manually testing whether the application is vulnerable to SQL injection or not, one could use a web vulnerability scanner that checks for SQL injection.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-766675397820740441?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/766675397820740441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=766675397820740441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/766675397820740441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/766675397820740441'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/02/sql-injection-how-to-test-web.html' title='SQL Injection – How to Test Web Applications against SQL Injection Attacks'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-6033525955685561259</id><published>2009-01-30T04:29:00.001-08:00</published><updated>2009-01-30T04:29:59.884-08:00</updated><title type='text'>Improving software testing skills and manual vs. automated testing</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Q-&lt;b&gt; I am working as software tester in India. I want to become more efficient in this field. Please kindly tell me what to do for that? Could you also give me some tips for manual testing and tell me what you think is best, manual or automated testing?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;There are many ways to learn about software testing, including reading books and articles, attending training classes, listening to webcasts and hands-on work in the field. But there is no one answer book or one path to learn software testing. Consider, too, that there are many different &lt;i&gt;types&lt;/i&gt; of software and what works well for one type of software may not work at all for another type. I&amp;#39;m using the word &amp;quot;type&amp;quot; to identify financial applications, e-commerce Web sites, medical devices, embedded software, manufacturing applications and so forth. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Tools and techniques that work in one environment might not work at all with a different type of application. I point this out not to confuse you or to be obscure, but as a reminder that as you learn what makes sense for what you are testing now, it would be best not to become too attached or rigid in your thinking about testing software. Even if you remain testing one &lt;i&gt;type&lt;/i&gt; of software, technology changes and oftentimes our tools and techniques have to change as well. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;These warnings aside, there are two books in the software testing field I often recommend: &lt;/span&gt;&lt;/p&gt; &lt;ol type="1"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Testing Computer Software, 2nd Edition&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; By Cem Kaner, Jack Falk, Hung Q. Nguyen &lt;br&gt;ISBN-13: 978-0471358466 &lt;/span&gt;&lt;/li&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Lessons Learned in Software Testing&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt; &lt;br&gt; By Cem Kaner, James Bach, Bret Pettichord &lt;br&gt;ISBN-13: 978-047108112 &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Keep reading and keep learning. As James Bach suggested in his tutorial on Self-Education for Testers, build your own curriculum. Find the books, articles, Web sites and blogs that help you learn. Build your own educational plan. James does a great job of pointing out how to survey a book. I interpreted his idea this way -- sometimes we want to learn in detail and sometimes we just need to know a little bit about a topic. For instance, if you decide you want to learn more about relational databases, investigate books at your local bookstore or library. You can also go online for continued research. Surveying multiple topics will help you choose what topics to you want to learn in-depth and what topics you want to gain an awareness of. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Additionally, I recommend finding opportunities to work with the technology you want to know more about. You can read, research via the internet, attend training classes and read tech magazines, but nothing compares to live experience. Seek work opportunities that help you grow.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Look at your current position and determine if there are ways to increase your knowledge with the opportunities that you already have access to. I recommend a mix of learning -- learn technical skills about current technology and learn about testing practices. If you vary your reading, your own education will become more full-bodied and varied. I wouldn&amp;#39;t recommend trying to learn one area -- say, Java -- in detail without learning more about requirements building or managing a defect process. &lt;i&gt;So many topics&lt;/i&gt; are important in the field of software testing that it&amp;#39;s nearly impossible to create one list and say, &amp;quot;Here, go and read these books.&amp;quot; But I do believe it&amp;#39;s essential to keep reading and keep learning. I generally plan several study times for myself each week. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Automated vs. manual testing&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&lt;br&gt;Regarding your question about which form of testing is best, manual or automated. There is no one right answer. Here are a few considerations to help you make the assessment whether a task is worth automating. &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Will the functionality need to be tested multiple times due to multiple internal builds before production release? &lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Will the functionality need to be tested on different operating systems and/or on different browsers? &lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Will the functionality need to be tested with many different types of data? &lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;If automation is built, will it be used for one product release or for many releases in the future? &lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Does your company have sufficient staff to bring a tool in-house? &lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;"&gt;Do you have or can you gain sufficient knowledge of the tool and automation techniques in general to put a tool to good use?&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;Thanks and Regards,&lt;br&gt;Venu Naik Bhukya.&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-6033525955685561259?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/6033525955685561259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=6033525955685561259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/6033525955685561259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/6033525955685561259'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/improving-software-testing-skills-and.html' title='Improving software testing skills and manual vs. automated testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-3226446757784531970</id><published>2009-01-30T04:13:00.000-08:00</published><updated>2009-01-30T04:19:37.338-08:00</updated><title type='text'>Guidelines and Checklist for Website Testing</title><content type='html'>&lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Worldwide web is browsed by customers with different knowledge levels, while testing websites (static/Dynamic) QA department should concentrate on various aspects to make effective presentation of website in www.&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #ffcc99; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Aspects to cover &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Functionality&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Usability&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;User Interface&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Serverside Interface&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Compatibility&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Security&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Performance &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Functionality&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.1&amp;nbsp;&amp;nbsp; Links&lt;/span&gt;&lt;/b&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Objective is to check for all the links in the website&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.1 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.1.1&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All Hyperlinks&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.2 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.1.2&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All Internal links &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.3 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.1.3 &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All&amp;nbsp; External links&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.4 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.1.4 &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All Mail links&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.5 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.1.5&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Check for orphan pages&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.6 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.1.6 &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Check for Broken links&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.2Forms&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Check for the integrity of submission of all forms&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.7 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.2.1&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All Field level Checks &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.8 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.2.2&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All Field level Validations &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.9 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.2.3&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Functionality of create,modify,delete and view &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.1 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 1.2.4&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Handling of wrong inputs &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.1 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 1.2.5&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Default values if any (standard)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.1.1 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 1.2.6&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Optional Versus Mandatory fields &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.3 Cookies &lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.3.1Check for the cookies that has to be enabled and how it has to be expired &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.4 Web Indexing &lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Depending on how the site is designed using metatags, frames, HTMLsyntax, dynamically created pages, passwords or different languages, our site will be searchable in different ways&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.4.1 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.4.1&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Meta&lt;/span&gt; &lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Tags&lt;/span&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.4.2 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.4.2&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Frames&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.5in"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.4.3 &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.4.3&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;HTML syntax&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;1.5 Database &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Two types of errors that may occur in web application &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;a) &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.5.1 &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Data Integrity : Missing or wrong data in table &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;b) &lt;/span&gt;&lt;span style="FONT-SIZE: 7pt; COLOR: #666699; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.5.2&lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Output Errors : Errors In writing ,editing or reading operation in the table &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;Usability&lt;/b&gt; &lt;/p&gt; &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;How simple customer can browse the website&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;2.1 Navigation&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Navigation describes the way user navigate with in a webpage, between different user interface controls (buttons, text boxes, combo boxes, dropdown lists&amp;nbsp; ...etc)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 2.1.1 Application navigation is proper through tab (key board) &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 2.1.2 Application navigation through mouse &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 2.1.3 Main features accessible from the main/home page (mother window) &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; 2.1.4 Any hotkeys, control keys to access menus &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;2.2 Content &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Correctness is whether the information is truthful or contains misinformation. The accuracy of the information is whether it is without grammatical or spelling errors. Remove irrelevant information from your site this may otherwise cause misunderstanding or confusion &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;2.2.1 Spelling and grammar&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;2.2.2 Updated information (contact details mail IDs help reports) &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;2.3&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;General appearance&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;2.3.1 Page appearance &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;2.3.2 Colour, font size &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;2.3.3 Frames &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;2.3.4 Consistent Designs &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;2.3.5 Symbols and logos (localization) &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;User Interface &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;All about how exactly website looks like (view)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Basic guidelines for web User interface (Microsoft)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.1 Verify whether screen resolution been taken in to account while using browser, will the UI resize itself as you maximize/minimize this must be tested with various screen resolutions&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.2 verify whether the number of controls per page have been checked, generally 10 is a good number&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.3 Where there are options to choose from, user should be forced to choose from a set of radio buttons and the default should be pointing at default message (none, select one..etc)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.4 Every dropdown box should have the first choice as NONE (it could be any other meaningful sentence such as Choose one or select&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.5 Ensure persistency of all values, when you enter values in a form, and move on the next page and then return to change one of the previous screen .The users must not be forced to re-enter all the values once again, this must be checked and ensured &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.6 Horizontal scrolling is not preferable in general .Avoid using horizontal scroll bar Ensure that the use of vertical scroll bar is judicious &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.7 Consider the use of pagination where appropriate. &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.8 Ensure that shift click control click work in list boxes, clarify these features work in both browsers &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.9 The location of buttons (OK and Cancel) should be at the right hand bottom side of a screen and consistent.&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.10 Clarify whether encryption of the password occurs from your login page all the way to the backend (the login page must not transmit clear text password) &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.11 Illegal operations should give popup messages (message should be simple and clear)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.12 Verify if there is a requirement to use image maps in the application (does net scape support this well &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.13 positive popup messages should be displayed (submitted, deleted, updated, done and cleared)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.14 Ensure that you have multiple check boxes when multiple selections is to be performed&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.15 Avoid long scrolling drop down list make it short &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;3.16 website URL should be small and simple &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Serverside Interface&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;4.1 Serverside Interface &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;4.1.1 Verify that communication is done correctly, web server-application server, application server-database sever and vice versa &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;4.1.2 Compatibility of server software, hardware, network connections&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;4.1.3 Database compatibility&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;4.1.4 External interface if any &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Client side Compatibility&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.1 platforms &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Check for the website compatibility with &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.1.1 Windows (95, 98, 2000, NT)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.1.2 Unix&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.1.3 Linux&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.1.4 Macintosh (if applicable)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.1.5 Solaris (if applicable)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2 Browsers &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2.1 Internet Explorer (3.x, 4.x, 5.x)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2.2 Netscape Navigator (3.x, 4.x, 6.x)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2.3 AOL&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2.4 Browser settings (security settings graphics, java etc..)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2.5 Frames and cascade style sheets&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.2.6 HTML specification &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;5.3 Graphics&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Loading of images graphics, etc.&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Security&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;6.1 Valid and invalid login &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;6.2 limits defined for the number of tries&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;6.3 Can it be bypassed by typing URL to a page inside directly in the browser?&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;6.4 verify log files are maintained to store the information for traceability&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;6.5 verify encryption is done correctly if SSL is used (if applicable)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;6.6 No access to edit scripts on the server without authorization &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-INDENT: -0.25in"&gt;&lt;span style="FONT-SIZE: 7pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Performance &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #ff6600; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1 Connection speed &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1.1 Try with different connection speeds (14.4, 28.8, 56.6, ISDN, cable DSL, T1, T3)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.2 Load &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1.1 Perform load test as per the SLA (Service Level Agreement) &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1.2 What is the estimated number of users per time period and how will it be divided over the period&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1.3 Will there be peak loads and how systems react&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1.4 Can your site handle a large amount of users requesting a certain page? &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.1.5 Is large amount of data transferred from user?&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;7.3 stress &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.3.1 Stress testing is done in order to actually break a site or certain features to determine how the system reacts &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.3.2 Stress tests are designed to push and test system limitations and determine whether the system recovers gracefully from crashes &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;Note: Hackers often stress systems by providing loads of wrong in-data until it crash and then gain access to it during start-up&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.3.3 System abnormal conditions (stress testing)&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Less bandwidth of cable &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Low disk memory &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Low processor speed &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt"&gt;&lt;b&gt;&lt;span style="COLOR: blue; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.4 Soke test &lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.4.1 Is the application or certain features going to be used only during certain periods of time or will it be used continuously 24X7&lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.4.2 Will downtime be allowed or is that out of the question &lt;/span&gt;&lt;span style="FONT-SIZE: 12pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="BACKGROUND: white; MARGIN: 0in 0in auto; TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: #666699; FONT-FAMILY: &amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;"&gt;7.4.2 Verify that the application is able to meet the requirements and does not run out of memory or disk space &lt;/span&gt;&lt;/p&gt; &lt;br clear="all"&gt;&lt;br&gt;-- &lt;br&gt;Thanks and Regards,&lt;br&gt;Venu Naik Bhukya.&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-3226446757784531970?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/3226446757784531970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=3226446757784531970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3226446757784531970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3226446757784531970'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/guidelines-and-checklist-for-website.html' title='Guidelines and Checklist for Website Testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-1857714851438958407</id><published>2009-01-30T04:00:00.001-08:00</published><updated>2009-01-30T04:00:28.306-08:00</updated><title type='text'>Tools, methods to test software more efficiently</title><content type='html'>&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Several classes of testing tools are available today that make the testing process easier, more effective and more productive. When properly implemented, these tools can provide a test organization with substantial gains in testing efficiency. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;However, test tools need to fit into the overall testing architecture and should be viewed as process enablers -- not as the &amp;quot;answer.&amp;quot; Test organizations will often look to tools such as reviews, test management, test design, test automation and defect tracking to facilitate the process. It is quite common for a testing tool or family of tools to address one or more of those needs, but for convenience they will be addressed from a functional perspective not a &amp;quot;package&amp;quot; perspective.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;It is important to note that, as with any tool, improper implementation or ad-hoc implementation of a testing tool can negatively impact the testing organization. Ensure a rigorous selection process is adhered to when selecting any tool and do such things needs analysis, on-site evaluation, and an assessment of return on investment (ROI). &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;&lt;u&gt;Reviews&lt;/u&gt;&lt;/b&gt;&lt;br&gt;Reviews and technical inspections are the most cost-effective to way detect and eliminate defects in any project. This is also one of the most underutilized testing techniques. Consequently there are very few tools available to meet this need. Any test organization that is beginning to realize the benefits of reviews and inspections but is encountering scheduling issues between participants should look to an online collaboration tool. There are several tools available for the review and update of documents, but only one that I&amp;#39;m aware of that actually addresses the science and discipline of reviews -- &lt;/font&gt;&lt;/font&gt;&lt;a href="http://www.sdtcorp.com/reviewpro.html"&gt;&lt;font face="Times New Roman" size="3"&gt;ReviewPro&lt;/font&gt;&lt;/a&gt;&lt;font face="Times New Roman" size="3"&gt; by Software Development Technologies. I normally do not &amp;quot;plug&amp;quot; a particular tool, but when the landscape is sparse I believe some recognition is in order. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;&lt;u&gt;Test management&lt;/u&gt;&lt;/b&gt;&lt;br&gt;Test management encompasses a broad range of activities and deliverables. The test management aid or set of aids selected by an organization should integrate smoothly with any communication (email, network, etc.) and automation tools that will be applied during the testing effort. Generic management tools will often address the management of resources, schedules and testing milestones but not the activities and deliverables specific to the testing effort -- test requirements, test cases, test results and analysis. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Test requirements:&lt;/b&gt; Requirements or test requirements often become the responsibility of the testing organization. For any set of requirements to be useful to the testing organization, it must be maintainable, testable, consistent and traceable to the appropriate test cases. The requirements management tool must be able to fulfill those needs within the context of the testing team&amp;#39;s operational environment. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Test cases: &lt;/b&gt;The testing organization is responsible for authoring and maintaining test cases. A test case authoring and management tool should enable the test organization to catalogue, author, maintain, manually execute and auto-execute automated tests. These test cases need to be traceable to the appropriate requirements and the results recorded in such a manner as to support coverage analysis. Key integration requirements when looking to test case management tools: Does it integrate with the test requirement aide? Does it integrate with the test automation tools being used? Will it support coverage analysis? &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Test results and analysis: &lt;/b&gt;A test management suite of tools and aids needs to be able to report on several aspects of the testing effort. There is an immediate requirement for test case results -- which test case steps passed and which failed? There will be periodic status reports that will address several aspects of the testing effort: test cases executed/not executed, test cases passed/failed, requirements tested/not tested, requirements verified/not verified, and coverage analysis. The reporting mechanism should also support the creation of custom or ad-hoc reports that are required by the test organization. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;&lt;u&gt;Test automation&lt;/u&gt;&lt;/b&gt;&lt;br&gt;Several test automation frameworks have been implemented over the years by commercial vendors and testing: record &amp;amp; playback, extended record and playback, and load/performance. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Record and playback: &lt;/b&gt;Record and playback frameworks were the first commercially successful testing solutions. The tool simply records a series of steps or actions against the application and allows a playback of the recording to verify that the behavior of the application has not changed. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Extended record and playback: &lt;/b&gt;It became quickly apparent that a simple record and playback paradigm was not very effective and did not make test automation available to non-technical users. Vendors extended the record and playback framework to make the solution more robust and transparent. These extensions included data-driven, keyword and component-based solutions. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Load/performance: &lt;/b&gt;Load/performance test frameworks provide a mechanism to simulate transactions against the application being tested and to measure the behavior of the application while it is under this simulated load. The load/performance tool enables the tester to load, measure and control the application. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;&lt;u&gt;Defect tracking&lt;/u&gt;&lt;/b&gt;&lt;br&gt;The primary purpose of testing is to detect defects in the application before it is released into production; furthermore, defects are arguably the only product the testing team produces that is seen by the project team. The defect management tools must enable the test organization to author, track, maintain, trace to test cases, and trace to test requirements any defects found during the testing effort. The defect management tool also needs to support both scheduled and ad-hoc analysis and reporting on defects. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-1857714851438958407?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/1857714851438958407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=1857714851438958407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1857714851438958407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1857714851438958407'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/tools-methods-to-test-software-more.html' title='Tools, methods to test software more efficiently'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-1100826954551458252</id><published>2009-01-30T03:06:00.001-08:00</published><updated>2009-01-30T03:06:40.574-08:00</updated><title type='text'>Web application testing: The difference between black, gray and white  box testing</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 24pt; FONT-FAMILY: &amp;#39;Times New Roman&amp;#39;,&amp;#39;serif&amp;#39;"&gt;Web application testing: The difference between black, gray and white box testing&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Calibri" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Black, white and gray box tests provide different approaches for assessing the security of Web applications. Each approach has specific advantages and disadvantages, and selecting a testing approach needs to be done based on the time and resources available, as well as the overall goals of the test being performed. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;You can assume most real-world attackers will approach systems from a black-box perspective. But to better account for the advantage attackers have with regard to time and resources, and to avoid relying on security through obscurity, gray and white box tests can be appropriate approaches as well. Maximizing the security value of testing approaches when you have limited time and resources requires careful test planning and a thorough understanding of how testing constraints affect the completeness of testing results. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Let&amp;#39;s take a look at the differences between the three tests. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Black box testing&lt;/b&gt;&lt;br&gt;Black box testing refers to testing a system without having specific knowledge to the internal workings of the system, no access to the source code, and no knowledge of the architecture. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;In essence, this approach most closely mimics how an attacker typically approaches applications. However, due to the lack of internal application knowledge, the uncovering of bugs and/or vulnerabilities can take significantly longer. Black box tests must be attempted against running instances of applications, so black box testing is typically limited to dynamic analysis such as running automated scanning tools and manual penetration testing. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;White box testing&lt;/b&gt;&lt;br&gt;White box testing, which is also known as clear box testing, refers to testing a system with full knowledge and access to all source code and architecture documents. Having full access to this information can reveal bugs and vulnerabilities more quickly than the &amp;quot;trial and error&amp;quot; method of black box testing. Additionally, you can be sure to get more complete testing coverage by knowing exactly what you have to test. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;However, because of the sheer complexity of architectures and volume of source code, white box testing introduces challenges regarding how to best focus the testing and analysis efforts. Also, specialized knowledge and tools are typically required to assist with white box testing, such as debuggers and source code analyzers. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;In addition, if white box testing is performed using only static analysis techniques using the application source code and without access to a running system, it can be impossible for security analysts to identify flaws in applications that are based on system misconfigurations or other issues that exist only in a deployment environment of the application in question. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Gray box testing&lt;/b&gt;&lt;br&gt;When we talk about gray box testing, we&amp;#39;re talking about testing a system while having at least some knowledge of the internals of a system. This knowledge is usually constrained to detailed design documents and architecture diagrams. It is a combination of both black and white box testing, and combines aspects of each. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Gray box testing allows security analysts to run automated and manual penetration tests against a target application. And it allows those analysts to focus and prioritize their efforts based on superior knowledge of the target system. This increased knowledge can result in more significant vulnerabilities being identified with a significantly lower degree of effort and can be a sensible way for analysts to better approximate certain advantages attackers have versus security professionals when assessing applications. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b&gt;Selecting a testing methodology&lt;/b&gt;&lt;br&gt;The testing approach you use should depend on a number of factors, including time allocated to the assessment, access to internal application resources and goals of the test. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Tests intended to best approximate short-term efforts of attackers with limited resources can be conducted using black box methodologies. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;If the test is intended to reflect longer-term efforts by attackers who have more significant resources, gray box tests can help to reflect knowledge that attackers might learn about application internals without requiring the assessment team to expend the full amount of resources that would be available to attackers. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Teams that need to make the most insightful and far-reaching recommendations about applications within a limited amount of time should use white or clear box testing. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Security testers should be flexible and be able to plan a test approach for any of these scenarios given the time and access to resources available for an application. By meshing the availability of assessment time and testing resources with the overall goals of the testing, analysts can select a testing methodology that will maximize the security benefits of the findings within the given constraints. Given an understanding that time and testing resources favor attackers in the wild, assessments teams should optimize their activities accordingly. &lt;/font&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-1100826954551458252?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/1100826954551458252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=1100826954551458252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1100826954551458252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1100826954551458252'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/web-application-testing-difference.html' title='Web application testing: The difference between black, gray and white  box testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-2946112551217007510</id><published>2009-01-09T10:15:00.001-08:00</published><updated>2009-01-09T10:15:17.838-08:00</updated><title type='text'>Designing test cases using Cause-Effect Graphing Technique</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in auto"&gt;&lt;span style="COLOR: windowtext"&gt;Q-&lt;/span&gt;&lt;b&gt; Can you explain how you can design test cases using the Cause-Effect Graphing Technique?&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in auto"&gt;&lt;b&gt;A-&lt;/b&gt; The Cause-Effect Testing Technique is another of several efforts for mapping input to output/response. In the Cause-Effect Graphing Technique, input and output are modeled as simple text, such as this: &lt;/p&gt;  &lt;p class="MsoNormal" style="MARGIN: 0in 0in auto"&gt;Cause --&amp;gt; intermediate mode --&amp;gt; effect &lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;See the Wikipedia article &amp;quot;Cause-effect graph&amp;quot; for additional information. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Much more information about the Cause-Effect Graphing Technique can be found in the &amp;quot;Cause-Effect Graphing User Guide&amp;quot;, which is an entire PDF for the use of Bender RBT testing tool. (Note that this manual was written in 2006, so it might be somewhat out of date.) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;The goal of cause-effect graphing is to reduce the number of test cases run. Many input/modifiers/effect combinations have the same output and exercise the same code in the system under test. By reducing the combinations, fewer tests can be run while still achieving the same confidence in quality. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;A somewhat related modeling concept is PICT -- Pairwise Interdependent Combinatorial Testing. This technique goes a step beyond cause-effect and actually applies combinatorial theory to reduce the number of combinations needed to be tested. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;Each theory has its application. In a highly related system where cause and intermediate effect are tightly coupled, it might be a challenge to model the system in PICT (although some PICT tools, including Microsoft&amp;#39;s free PICT modeling tool, do allow you to weight various factors as well as create combinations). &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;My concern about cause-effect is simple: How could you model cause-effect on a high-availability Web service with 30 methods, each containing 40 or 50 parameters? By manually identifying each cause and effect, you&amp;#39;ll spend so much time detailing the test that I&amp;#39;m not convinced you could actually test the application. This is why tools like Bender RBT exist -- to help automate this process. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;My biggest complaint about a methodology like cause-effect is its lack of real-world application. I doubt your manager would tolerate your spending five or six days modeling your application into a cause-effect graph. Your manager is more likely to expect you to apply good testing sense and develop cases quickly, but keeping an eye on critical combinations. Still, further research is warranted, and if you can efficiently apply this model to your efforts, you&amp;#39;ll be rewarded with higher quality at a reduced input cost. &lt;/font&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-2946112551217007510?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/2946112551217007510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=2946112551217007510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/2946112551217007510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/2946112551217007510'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/designing-test-cases-using-cause-effect.html' title='Designing test cases using Cause-Effect Graphing Technique'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-6444363435815221533</id><published>2009-01-05T10:05:00.001-08:00</published><updated>2009-01-05T10:05:32.378-08:00</updated><title type='text'>How to test Web services</title><content type='html'>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CRadha%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CRadha%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CRadha%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;style&gt; &amp;lt;!--  /* Font Definitions */  @font-face 	{font-family:&amp;quot;Cambria Math&amp;quot;; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&amp;quot;&amp;quot;; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;} a:link, span.MsoHyperlink 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} p 	{mso-style-noshow:yes; 	mso-style-priority:99; 	mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:&amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1436100039; 	mso-list-template-ids:465874204;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in; 	mso-ansi-font-size:10.0pt; 	font-family:Symbol;} @list l0:level2 	{mso-level-tab-stop:1.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level3 	{mso-level-tab-stop:1.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level4 	{mso-level-tab-stop:2.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level5 	{mso-level-tab-stop:2.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level6 	{mso-level-tab-stop:3.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level7 	{mso-level-tab-stop:3.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level8 	{mso-level-tab-stop:4.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level9 	{mso-level-tab-stop:4.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&amp;gt; &lt;/style&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;In many ways testing a Web service is no different than testing anything else. You still do all the same steps of the test method, but some of them can take on a bit of a different flavor. Here are a couple of tidbits I&amp;#39;ve picked up over the last couple of years testing Web services. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Determining coverage and oracles&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;br&gt; When testing Web services, I find that scheme coverage becomes important. You still probably care about all the same coverage you cared about with non-Web service testing (scenario coverage, requirements coverage, code coverage, and application data coverage), but now you get to add schema coverage to the list. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;For me, schema means not only performing a schema validation against all the response XMLs that come back from the service you&amp;#39;re testing, it also includes testing for the right number of maximum and minimum repeating elements, correct reference identification tag values, and other subtle nuances for XML. This can sometimes create an oracle problem. I find that I&amp;#39;m often comparing against a schema &lt;i&gt;along with&lt;/i&gt; a mapping document of some sort. A mapping document tells me what data should be stored in what element and when it should be there. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Determining the test procedures&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;br&gt; One of the initial problems to be solved when performing Web service testing is management of all the data files (typically XML, but not always). There are tools that do this file management for you (I&amp;#39;ll cover some of them briefly below), but you should have a game plan for files that need to be managed manually. When I&amp;#39;m testing I typically track three files: a request file, an expected response file, and an actual response file. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;The naming convention I&amp;#39;ve picked up along the way is to put a &amp;quot;-rq.xml&amp;quot;, &amp;quot;-rs.xml&amp;quot;, or &amp;quot;-result.xml&amp;quot; on the end of all my files. That way for each file name you have a set of XMLs that paint the entire picture for that test case. Once you get a naming convention worked out, get the files into source control if you don&amp;#39;t have a tool that keeps them all straight for you. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Once you have all these XMLs (sometimes hundreds, sometimes thousands), now you get the joy of keeping them up to date. I&amp;#39;ve found that schema changes can happen quite often on a project, as can mapping changes. Whenever one of those changes occur, you get the pleasure of updating all those XML files. And remember, if you have 100 test cases, you have 200 files -- assuming you don&amp;#39;t bother to update your actual result file since you&amp;#39;ll be re-running the test case. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;The way I handle most schema changes is to have a Ruby script handy that I can use to make the updates for me programmatically. If you do it enough times, you eventually build a library of scripts for just about every type of change that comes your way. There are some exceptions to that where you may need to do some changes manually, but I find those changes don&amp;#39;t normally affect all the test cases, just a subset. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Operating the test system&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;br&gt; There are a lot of great tools available for testing web services. MindReef SoapScope is a fine commercial option, and SoapUI is a fine open source option. I&amp;#39;ve found them both to have all the basic features I&amp;#39;ve needed. SoapScope is a bit better about data trending and analysis. SoapUI has a few more technical features for test execution. I&amp;#39;ve also spent some time using IBM Rational for SOA Quality, which is an Eclipse-based tool focused on Web service testing. It&amp;#39;s a latecomer, but has a nice feature set. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;More often then not, I find that I use homegrown tools written in Ruby and Java to perform Web service testing. It gives you more control over the interfaces, features, and a working knowledge of what&amp;#39;s actually going on in the test tool you&amp;#39;re using. There are some drawbacks like support and documentation. Even the open source SoapUI team does a fantastic job in support -- they turned around a defect for me in 24 hours once. That&amp;#39;s better then you&amp;#39;ll see from MindReef or IBM I&amp;#39;m sure. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Try a couple of tools before you settle. I&amp;#39;ve found that I switch between the different tools based on the team I&amp;#39;m working with and what we&amp;#39;re tying to do. Once you&amp;#39;ve compared a couple of them you&amp;#39;ll figure out which features you really need and which are nice but optional. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Evaluating the test results&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;br&gt; Evaluating the results for Web service tests can sometimes be really easy, and sometimes painful. There are couple of things you&amp;#39;ll want to practice getting good at: &lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;writing      XSLTs to transform your actual response to mask out values you don&amp;#39;t care      about (server dates for example); &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;writing      Xpath queries to check for specific values in an XML document; &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;learning      all the command line options on your favorite diff-tool; &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;and      ensuring you have at least one person on the team that knows the schema      inside and out and can see the entire mapping document in their head when      they look at the response files. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;The better you are at the first three, the less important the last one is. I&amp;#39;ve also found that custom logging (both in your test execution tool and in the Web service under test) can also help add visibility to the results. Depending on what you&amp;#39;re testing, sometimes you can cut out the need for file comparison entirely.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Once you get up to speed with the basics of manually testing the Web service, performance testing is normally trivial. Some of the tools have the ability to generate load built in. If you&amp;#39;re using a homegrown option, all you need to do is thread your requests and you have the same ability. Getting the usage model right can sometimes be a challenge, but it&amp;#39;s doable. &lt;/p&gt;  &lt;p&gt;Other concerns that come into play can be authentication/&lt;a href="http://searchsoftwarequality.techtarget.com/sDefinition/0,,sid92_gci211622,00.html"&gt;authorization&lt;/a&gt; and encryption. I&amp;#39;ve not personally had to do a lot there, but I know that it&amp;#39;s a problem for some. I imagine that if you&amp;#39;re testing a payment gateway like your questions states, you&amp;#39;ll need to do some investigation around what that means for your data and the tools you can use. &lt;/p&gt;  &lt;br clear="all"&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-6444363435815221533?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/6444363435815221533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=6444363435815221533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/6444363435815221533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/6444363435815221533'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/how-to-test-web-services.html' title='How to test Web services'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-9021756225949158563</id><published>2009-01-05T10:02:00.001-08:00</published><updated>2009-01-05T10:02:31.931-08:00</updated><title type='text'>How to evaluate testing software and tools</title><content type='html'>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CRadha%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CRadha%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CRadha%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;style&gt; &amp;lt;!--  /* Font Definitions */  @font-face 	{font-family:&amp;quot;Cambria Math&amp;quot;; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:&amp;quot;&amp;quot;; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:&amp;quot;Times New Roman&amp;quot;;} h2 	{mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-link:&amp;quot;Heading 2 Char&amp;quot;; 	margin-top:10.0pt; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	page-break-after:avoid; 	mso-outline-level:2; 	font-size:13.0pt; 	font-family:&amp;quot;Cambria&amp;quot;,&amp;quot;serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	color:#4F81BD; 	font-weight:bold;} p 	{mso-style-noshow:yes; 	mso-style-priority:99; 	mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:&amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin;} span.Heading2Char 	{mso-style-name:&amp;quot;Heading 2 Char&amp;quot;; 	mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:&amp;quot;Heading 2&amp;quot;; 	mso-ansi-font-size:13.0pt; 	mso-bidi-font-size:13.0pt; 	font-family:&amp;quot;Cambria&amp;quot;,&amp;quot;serif&amp;quot;; 	mso-ascii-font-family:Cambria; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Cambria; 	color:#4F81BD; 	font-weight:bold;} span.a3 	{mso-style-name:a3; 	mso-style-unhide:no;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:370613325; 	mso-list-template-ids:-1060223148;} @list l0:level1 	{mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level2 	{mso-level-tab-stop:1.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level3 	{mso-level-tab-stop:1.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level4 	{mso-level-tab-stop:2.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level5 	{mso-level-tab-stop:2.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level6 	{mso-level-tab-stop:3.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level7 	{mso-level-tab-stop:3.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level8 	{mso-level-tab-stop:4.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l0:level9 	{mso-level-tab-stop:4.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1 	{mso-list-id:1064910176; 	mso-list-template-ids:-1679948198;} @list l1:level1 	{mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level2 	{mso-level-tab-stop:1.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level3 	{mso-level-tab-stop:1.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level4 	{mso-level-tab-stop:2.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level5 	{mso-level-tab-stop:2.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level6 	{mso-level-tab-stop:3.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level7 	{mso-level-tab-stop:3.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level8 	{mso-level-tab-stop:4.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l1:level9 	{mso-level-tab-stop:4.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2 	{mso-list-id:1864513114; 	mso-list-template-ids:-1005189906;} @list l2:level1 	{mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level2 	{mso-level-tab-stop:1.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level3 	{mso-level-tab-stop:1.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level4 	{mso-level-tab-stop:2.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level5 	{mso-level-tab-stop:2.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level6 	{mso-level-tab-stop:3.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level7 	{mso-level-tab-stop:3.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level8 	{mso-level-tab-stop:4.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l2:level9 	{mso-level-tab-stop:4.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3 	{mso-list-id:1940603450; 	mso-list-template-ids:-78732786;} @list l3:level1 	{mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level2 	{mso-level-tab-stop:1.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level3 	{mso-level-tab-stop:1.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level4 	{mso-level-tab-stop:2.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level5 	{mso-level-tab-stop:2.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level6 	{mso-level-tab-stop:3.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level7 	{mso-level-tab-stop:3.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level8 	{mso-level-tab-stop:4.0in; 	mso-level-number-position:left; 	text-indent:-.25in;} @list l3:level9 	{mso-level-tab-stop:4.5in; 	mso-level-number-position:left; 	text-indent:-.25in;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&amp;gt; &lt;/style&gt;  &lt;p&gt;Once a testing organization reaches a certain size, level of maturity or workload, the requirement to purchase/build testing software or aides becomes apparent. There are several classes of testing tools available today that make the testing process easier, more effective and more productive. Choosing the appropriate tool to meet the testing organization&amp;#39;s long-term and short-term goals can be a challenging and frustrating process. But following a few simple guidelines and applying a common-sense approach to software acquisition and implementation will lead to a successful implementation of the appropriate tool and a real return on investment (ROI).&lt;/p&gt;  &lt;p&gt;One of the simplest questions to ask when looking at testing software is &amp;quot;What is ROI?&amp;quot; The simplest answer is &amp;quot;Anything that reduces the resource (people) hours required to accomplish any given task.&amp;quot; Testing tools should be brought into an organization to improve the efficiency of a proven testing process. The value of the actual process has already been established within the organization or within the industry. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Example: Test management&lt;/b&gt;&lt;br&gt; The organization has meticulously tracked test requirements and test cases using spreadsheets, but it finds this to be a cumbersome process as the test organization grows. It has been shown that this process has reduced the number of defects reaching the field, but the cost of maintaining the approach now impacts its effectiveness. Solution: Invest in a test management tool or suite of tools. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Example: Test automation&lt;/b&gt;&lt;br&gt; The organization has created a suite of manual test cases using a text editor, but it finds it difficult to maintain, use and execute these test cases efficiently as the test organization&amp;#39;s role grows. The test cases have proven effective in detecting defects before they reach production, but the time required to manage and execute these test cases now impacts the ROI. Solution: Invest in a test automation tool or suite of tools. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Example: Defect Management&lt;/b&gt;&lt;br&gt; The test organization has implemented a defect tracking process using email and a relational database, but it now finds that defects are being duplicated and mishandled as the volume of defects grows. Solution: Upgrade the current in-house solution or invest in a defect management tool. &lt;/p&gt;  &lt;h2&gt;&lt;span style=""&gt;Needs analysis&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="a3"&gt;The first thing an organization must accomplish is catalogue what needs or requirements the testing software is expected satisfy. For an organization that is new to the acquisition process, this can be an intimidating exercise. There are three categories or &amp;quot;points of view&amp;quot; that must be addressed: management/organization, test architecture and end user. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Needs analysis: Management/organization&lt;/u&gt;&lt;/b&gt;&lt;br&gt; Management or the test organization needs to clearly state what the objective is for purchasing testing software. It must state the mission or goal that will be met by acquiring the test software and the expected ROI in terms of person-hours once the tool has been fully implemented. That can be accomplished by creating a simple mission statement and a minimum acceptable ROI. &lt;/p&gt;  &lt;p&gt;It should be noted that any ROI fewer than three hours saved for every hour invested should be considered insufficient because of the impact of introducing a new business process into the testing organization. This should be a concise statement on the overall goal (one to three sentences) not a dissertation or catalogue of the products capabilities. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Example: Test management&lt;/i&gt;&lt;/b&gt;&lt;br&gt; The selected Test Management system shall enable end users to author and maintain requirements and test cases in a Web-enabled, shareable environment. Furthermore, the test management tool shall support test management &amp;quot;best practices&amp;quot; as defined by the Test Organization. The minimum acceptable ROI is four hours saved for every hour currently invested. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Example: Test automation&lt;/i&gt;&lt;/b&gt;&lt;br&gt; The selected Test Automaton tool shall enable end users to author, maintain and execute automated test cases in a Web-enabled, shareable environment. Furthermore, the test automation tool shall support test case design, automation and execution &amp;quot;best practices&amp;quot; as defined by the Test Organization. The minimum acceptable ROI is five hours saved for every hour currently invested. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Example: Defect management&lt;/i&gt;&lt;/b&gt;&lt;br&gt; The selected Defect Management tool shall enable end users to author, maintain and track/search defects in a Web- and email-enabled, shareable environment. Furthermore, the defect management tool shall support authoring, reporting and tracking &amp;quot;best practices&amp;quot; as defined by the Test Organization. The minimum acceptable ROI is four hours saved for every hour currently invested. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Needs analysis: Test architecture&lt;/u&gt;&lt;/b&gt;&lt;br&gt; Management has defined the immediate organizational goal, but the long-term architectural necessities must be defined by the testing organization. When first approaching the acquisition of testing software, test organizations usually have not invested much effort in defining an overall test architecture. Lack of an overall test architecture can lead to product choices that may be effective in the short term but lead to additional long-term costs or even replacement of a previously selected toolset. &lt;/p&gt;  &lt;p&gt;If an architectural framework has been defined, then the architectural needs should already be clearly understood and documented. If not, then a general set of architectural guidelines can be applied. Example: &lt;/p&gt;  &lt;p&gt;The selected testing software and tool vendor shall do the following: &lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Have a record of integrating successfully with all Tier      1 testing software vendors. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Have a history of operational success in the      appropriate environments. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Have an established end-user community that is      accessible to any end user. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support enterprisewide collaboration. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support customization. &lt;/span&gt;&lt;/li&gt; &lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support several (1 to n) simultaneous      engagements/projects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Provide a well-designed, friendly and intuitive user      interface. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Provide a smooth migration/upgrade path from one      version of the product to the next. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Provide a rich online help facility and effective      training mechanisms (tutorials, courseware, etc.).&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;The general architectural requirements for any tool will include more objectives than the nine listed above, but it is important to note that any objective should be applied across the entire toolset. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Needs analysis: End user&lt;/u&gt;&lt;/b&gt;&lt;br&gt; The end user needs analysis should be a detailed dissertation or catalogue of the envisioned product capabilities as they apply to the testing process. (It would probably be a page or more of requirements itemized or tabulated in such a way as to expedite the selection process.) This is where the specific and perhaps unique product capabilities are listed. The most effective approach is to start from a set of general requirements and then extend into a catalogue of more specific/related requirements. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Example: Test management&lt;/i&gt;&lt;/b&gt;&lt;br&gt; The Test Management solution shall do the following: &lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the authoring of test requirements. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the maintenance of test requirements. &lt;/span&gt;&lt;/li&gt; &lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support enterprise wide controlled access to test      requirements (Web-enabled preferred). &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support discrete grouping or partitioning of test      requirements. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support traceability of requirements to test cases and      defects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support &amp;quot;canned&amp;quot; and &amp;quot;user-defined&amp;quot;      queries against test requirements. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support &amp;quot;canned&amp;quot; and &amp;quot;user-defined&amp;quot;      reports against test requirements. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support coverage analysis of test requirements against      test cases. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the integration of other toolsets via a      published API or equivalent capacity. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;And so on…&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;The key here is to itemize the requirements to a sufficient level of detail and then apply these requirements against each candidate. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Example: Test automation&lt;/i&gt;&lt;/b&gt;&lt;br&gt; The Test Automation solution shall do the following: &lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the creation, implementation and execution of      automated test cases. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support enterprise wide, controlled access to test      automation (Web-enabled preferred). &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support data-driven automated test cases. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support keyword-enabled test automation. &lt;/span&gt;&lt;/li&gt; &lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Integrate with all Tier 1 and 2 test management tools      that support integration. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Integrate with all Tier 1 and 2 defect management tools      that support integration. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Enable test case design within a non-technical      framework. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Enable test automation and verification of Web, GUI,      .NET, and Java applications. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the integration of other toolsets via a      published API or equivalent capacity. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;And so on…&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;Once again, the key is to itemize the requirements to a sufficient level of detail. It is not necessary for all the requirements to be &amp;quot;realistic&amp;quot; in terms of what is available. Looking to the future can often lead to choosing a tool that eventually does provide the desired ability. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Example: Defect management&lt;/i&gt;&lt;/b&gt;&lt;br&gt; The Defect Management solution shall do the following: &lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the creation of defects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support the maintenance of defects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt; &lt;span style=""&gt;Support the tracking of defects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support enterprise wide controlled access to defects      (Web-enabled preferred). &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support integration with all Tier 1 and 2 test      management tools that support integration. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Enable structured and ad-hoc searches for existing      defects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Enable the categorization of defects. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Enable customization of defect content. &lt;/span&gt;&lt;/li&gt; &lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;Support &amp;quot;canned&amp;quot; and customized reports. &lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style=""&gt;And so on… &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;In all cases, understanding of the basic needs will change as you proceed through the process of defining and selecting appropriate testing software. &lt;/p&gt;  &lt;p&gt;In addition, for each case you must make sure that a particular vendor does not redefine the initial goal. Becoming an educated consumer in any given product space will lead to a redefinition of the basic requirements that should be recognized and documented. &lt;/p&gt;  &lt;h2&gt;&lt;span style=""&gt;Identify candidates &lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="a3"&gt;Identifying a list of potential software candidates can be accomplished by investigating several obvious sources: generic Web search, online quality assurance and testing forums, QA and testing e-magazines and co-workers. Once you create a list of potential software candidates, an assessment of currently available reviews can be done. Remember to keep an eye open for obvious marketing ploys. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;It is also important to note which products command the largest portion of the existing market and which product has the fastest growth rate. This relates to the availability of skilled end users and end-user communities. Review the gathered materials against the needs analysis and create a short list of candidates (three to five) for assessment. &lt;/p&gt;  &lt;h2&gt;&lt;span style=""&gt;Assess candidates &lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="a3"&gt;If you have been very careful and lucky, your first encounter with the vendor&amp;#39;s sales force will occur at this time. This can be a frustrating experience if you are purchasing a relatively small number of licenses, or it can be an intimidating one if you are going to be placing an order for a large number of licenses. Being vague as to the eventual number of licenses can put you in the comfortable middle ground. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Assessments of any testing software should be accomplished onsite with a full demonstration version of the software. When installing any new testing software, install it on a typical end-user system, check for &amp;quot;dll&amp;quot; file conflicts, check for registry entry issues, check for file conflicts, and ensure the software is operational. Record any issues discovered during the initial installation and seek clarification and resolution from the vendor. &lt;/p&gt;  &lt;p&gt;Once the testing software has been installed, assess the software against the previous needs analysis -- first performing any available online tutorials and then applying the software to your real-world situation. Record any issues discovered during the assessment process and seek clarification and resolution from the vendor. Any additional needs discovered during an assessment should be recorded and applied to all candidates. &lt;/p&gt;  &lt;p&gt;The assessment process will lead to the assessment team gaining skills in the product space. It is always wise to do one final pass of all candidates once the initial assessment is completed. Each software candidate can now be graded against the needs/requirements and a final selection can be made. &lt;/p&gt;  &lt;h2&gt;&lt;span style=""&gt;Implementation&lt;/span&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="a3"&gt;Implementation obviously is not part of the selection process, but it is a common point of failure. Test organizations will often invest in testing software but not in the wherewithal to successfully use it. Investing hundreds of thousands of dollars in software but not investing capital in onsite training and consulting expertise is a recipe for disaster. &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;The software vendor should supply a minimum level of training for any large purchase and be able to supply or recommend onsite consultants/trainers who will ensure the test organization can take full advantage of the purchased software as quickly as possible. By bringing in the right mix of training, consulting and vendor expertise, the test organization can avoid much of the disruption any change in process brings and quickly gain the benefits that software can provide. &lt;/p&gt;  &lt;br clear="all"&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-9021756225949158563?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/9021756225949158563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=9021756225949158563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/9021756225949158563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/9021756225949158563'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/how-to-evaluate-testing-software-and.html' title='How to evaluate testing software and tools'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-1085436143924901243</id><published>2009-01-05T00:45:00.000-08:00</published><updated>2009-01-05T00:46:27.730-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP Testing'/><title type='text'>SAP R/3 Testing</title><content type='html'>Summary: Are you in the midst of an SAP R/3 upgrade or implementing SAP R/3 from scratch? Are you prepared to perform all the activities and tasks that are concomitant with the various SAP testing phases? The author identifies testing risks and shares lessons learned from testing SAP R/3. The author provides insights and recommendations for avoiding these testing risks that could halt SAP testing efforts and consequently delay the expected deployment of SAP into a live production environment. The insights range from documenting test cases to working with testing artifacts from the ASAP methodology. &lt;br /&gt;&lt;br /&gt;Title: Lessons Learned from Testing SAP R/3&lt;br /&gt;&lt;br /&gt;SAP R/3 is the market leader in ERP installations and ERP sales. SAP has thousands of tables, multiple industry specific solutions, thousands of transactions, and connectivity to an unlimited number of legacy systems. Furthermore SAP can be configured differently from one company to another which creates a myriad of permutations for executing an SAP transaction. Installing and customizing SAP is a daunting challenge. Testing SAP R/3 is in and of itself another intractable challenge. &lt;br /&gt;&lt;br /&gt;Many projects fail to test SAP correctly and consequently suffer staggering financial losses after deploying SAP into a live environment. The key to maximizing the value and ROI of SAP is to install and customize SAP correctly based on the documented requirements and to test it extensively based on the documented test cases and end-to-end business scenarios. Below some lessons learned are offered and identified to help organizations test SAP. &lt;br /&gt;&lt;br /&gt;1. Not following methodology or No methodology at all&lt;br /&gt;Some companies implementing SAP adhere to the ASAP methodology. Other companies have ad-hoc or ASAP-like methodologies for implementing SAP.&lt;br /&gt;&lt;br /&gt;Even companies that are supposedly implementing SAP based on the ASAP methodology are not very strict and stringent in adhering to all the activities, deliverables, and tasks associated with ASAP. Consequently, but not surprisingly these companies have much confusion, obfuscation, befuddlement when they attempt to implement SAP. Compounding this problem is the fact that many large companies implementing SAP hire two or more implementation partners and multiple subcontractors that have incompatible approaches, methodologies, and lessons learned for implementing SAP.&lt;br /&gt;&lt;br /&gt;The project manager and the steering committee should specify within the project charter how SAP will be implemented and what deliverables will be produced based on either ASAP or some other proprietary methodology. The objective is to have defined, proven, and repeatable processes for implementing SAP and that the project members have the knowledge or know-how for adhering to the methodology. The creation of an audit team or standards team would be helpful in enforcing compliance with the chosen methodology.&lt;br /&gt;2. Inadequate test tools&lt;br /&gt;&lt;br /&gt;SAP R/3 comes with an internal recording tool known as CATT (eCATT). One of the advantages of CATT (eCATT) is that since it is part of the standard SAP system it’s free of charge. However CATT does have some limitations which impel many companies to procure other test tools. &lt;br /&gt;&lt;br /&gt;There are many vendors offering commercial automated test tools and test management tools for testing SAP. Companies purchasing automated test tools expect and erroneously believe that the test tools will be the panacea to their entire SAP recording and testing needs. Unfortunately, this is not the case, since no two SAP implementations are exactly the same across two or more companies or at times even within different divisions of the same company. Consequently, a company implementing SAP might need to procure test tools from more than one vendor in addition to the CATT (eCATT) tool. &lt;br /&gt;&lt;br /&gt;An SAP implementation could be implementing SAP add-ons such as BW (Business Warehouse), APO (Advanced Planning Optimization), SEM (Strategic Enterprise Management) or even modules such as PS (Project Systems) that generate graphs and charts that a recording tool does not recognize. Furthermore, a company may move its SAP GUI from the desktop (fat client) to running SAP as web-based (thin client) or through an emulated Citrix session which could render the existing test tools useless. &lt;br /&gt;&lt;br /&gt;Companies that wish to move to an automated testing strategy should articulate and document what SAP modules and SAP add-ons they are installing in addition to any legacy applications integrating with SAP. This information should be provided to the vendors of automated test tools in order to determine what can actually be recorded and tested with the test tools. The company should further investigate with the vendor what additional benefits over CATT (eCATT) the automated test tools provide. The objective is to get the test tools that will maximize SAP recording.&lt;br /&gt;3. Decentralized test teams&lt;br /&gt;&lt;br /&gt;Some projects that I have consulted for, have a decentralized testing approach where each individual business process team, technical team (ABAP/4), and Basis (security) team conduct their own testing in the absence of a QA/testing team. &lt;br /&gt;&lt;br /&gt;The decentralized method suffers from various drawbacks including redundancy, inconsistency, lack of standards, missing testing metrics, unreported test results, limited managerial visibility, limited test coverage, chaotic defect resolution, no independent verification of test results, etc. &lt;br /&gt;&lt;br /&gt;Projects with a decentralized test approach perceive control as a significant advantage of decentralized testing. With decentralized testing each team has the independence and control as to how their particular area will be tested based on their own defined test procedures. &lt;br /&gt;&lt;br /&gt;The perceived benefits from decentralized testing do not offset its drawbacks. A more robust approach for testing an ERP system is centralized testing where there is a QA team for defining the standards and procedures for the various testing cycles and documenting the test plan, lessons learned, UAT plan and the test strategy. The test procedures and test strategy include what test case templates will be used, how and what metrics will be reported, how peer reviews will be conducted, ensuring that all test requirements have been met, etc. In addition to the QA team under the centralized model the testing team provides expertise for executing test cases whether manually or with automated test tools. The testing team also provides independent verification for the test results since the testers were not associated with the configuration of the transactions, workflow development, creation of user roles, or the development of the RICE (Reports, Interfaces, Conversions, and Enhancements) objects, etc.&lt;br /&gt;4. Working in Silos: Limited or no access to SMEs, Configuration Team &lt;br /&gt;&lt;br /&gt;Since SAP is integrated and a change in one of its components can have a cascading effect on other aspects of the software it is often the case where the various SAP teams need to collaborate with one another. &lt;br /&gt;&lt;br /&gt;This concept seems mundane and at first hand easy to grasp. But due to internal politics, deadlines, budget constraints, etc this concept is ignored and overlooked. When collaboration falls through the cracks the various SAP teams (configuration, RICE, Basis, testing, infrastructure, data, etc) start working independently in isolation or in a silo. &lt;br /&gt;&lt;br /&gt;I have been in projects where the testing team members who arrived during the middle of the realization phase have been unable to get support from the SAP configuration team members and SMEs for drafting test cases, peer reviews, and sign offs.. In other projects the QA and testing team are almost considered a “bother”, “nuisance” to the other SAP teams. &lt;br /&gt;&lt;br /&gt;The test manager and PM need to foster an environment of cooperation among the testing team and the various other SAP teams for the successful completion of testing artifacts and testing cycles.&lt;br /&gt;5. Missing test bed&lt;br /&gt;&lt;br /&gt;Within the SAP client landscape a dedicated QA environment should be allocated to the testing team for the various testing phases. The environment should be production sized, and contain production like data, have a stable baseline, and frozen configuration by the time the testing cycles commence. &lt;br /&gt;&lt;br /&gt;What I have seen at many projects is a so-called “dedicated testing environment” that many SAP teams have access to for training, last minute configuration, etc during the middle of a testing cycle. This creates conflict among the teams and causes confusion over the ultimate ownership of the testing environment. &lt;br /&gt;&lt;br /&gt;The test manager should insist on a test environment where the testing team has complete control (for instance control over the accounting periods, running payroll, etc) and where the environment is not shared with other entities in particular during the test execution phase.&lt;br /&gt;6. No controls for promoting/transporting objects into production&lt;br /&gt;&lt;br /&gt;In many SAP projects that I have consulted for, there are very little controls for promoting objects into a live production environment. Other projects are very lax with their rules for promoting objects and have no means for auditing the approval process for transporting objects or do not include all the necessary stakeholders in transporting objects. &lt;br /&gt;&lt;br /&gt;ERP systems like SAP R/3 offer benefits such as tight integrations across its modules and sub-modules and access to real-time data, but these benefits can backfire or even become otiose when a poorly tested or not even tested object is transported into a production environment. A faulty transported object such as a configuration change or code for an interface can have a deleterious cascading effect on other SAP functionality in the production environment. For instance a change to the HR module within payroll can affect functionality in the FI-CO module. &lt;br /&gt;&lt;br /&gt;To mitigate the risk of transporting objects it is necessary to include approvals and set up a system of workflow where stakeholders from the testing team, Basis team, and configuration leads have input into objects that will be transported into production. A project should set priorities for transporting objects based on their criticality, document and approve objects that get transported after having been tested, and establish the frequency in which objects will be transported (i.e. every Friday at 4:00 pm) to avoid impacting end users as much as possible. &lt;br /&gt;&lt;br /&gt;The company Mercury Interactive (www.mercuryinteractive.com) offers the tool Kintana which can help companies to move objects into various SAP clients and instances while maintaining a history log for auditing purposes of the objects that were transported and the entities approving the transports. Alternatively, I was a project where the organization created a home grown repository within Lotus Notes that provided managerial visibility for moving and transporting SAP objects which included notifications and approvals. &lt;br /&gt;&lt;br /&gt;Whether a commercial tool is purchased or a home grown application is developed the main objective is to place stringent controls for moving objects into production with the necessary approvals while maintaining a history log.&lt;br /&gt;7. Flaws with BPPs &lt;br /&gt;&lt;br /&gt;For those projects adhering to the ASAP SAP methodology BPPs (Business Process Procedures) are artifacts or outputs from the realization phase. BPPs are documented based on stand alone or for single SAP transactions. The BPP provides detailed information in the form of instructions with screen shot print outs for how to execute a given SAP transaction (i.e. SAP transaction MM01 – Create Material). &lt;br /&gt;&lt;br /&gt;Admittedly, BPPs can assist a tester or end user on how to execute a given SAP transaction based on the project’s specific customizations. However, and this is often the case the SAP configuration team will document BPPs in a given environment such as the configuration environment with configuration data and then the SAP configuration team fails to update the BPPs to reflect the changes of the QA environment. The failure to update the BPPs diminishes their value for the testing team. &lt;br /&gt;&lt;br /&gt;When BPPs are not updated they contain obsolete data, and may lack the necessary information to execute an SAP transaction for an SAP environment that has had customizations since the time the BPPs was initially created. Furthermore, many organizations do not perform any form of version control on BPPs which makes it difficult to discern whether a BPP is finalized, completed, peer-reviewed or still undergoing changes. &lt;br /&gt;&lt;br /&gt;Poorly documented BPPs or outdated BPPs have a propagating effect on the creation of test cases and test scripts. Since BPPs are documented per stand alone SAP transaction, the testing team will need to link multiple BPPs for end to end SAP test cases (i.e. Hire–to–Fire test case) that involve multiple SAP transactions with pre and post conditions. A single poorly written BPP or outdated BPP can inhibit the creation of a test case containing several SAP transactions. &lt;br /&gt;8. Missing peer reviews&lt;br /&gt;&lt;br /&gt;Peer reviews help refine work-products and deliverables. Peer reviews also provide independent verification and give the end customers or SMEs an opportunity to provide feedback during the early stages of the SAP implementation. Peer reviews can occur at many junctures during the implementation of SAP for tasks such as filling out CI (Customer Input) templates, drafting test cases, creating functional design specs, development of business process flow diagrams, documenting BPPs, code walk-through, etc. &lt;br /&gt;&lt;br /&gt;Inexplicably many SAP projects do not engage in the practice of peer reviews or have any templates or forms for documenting peer review feedback. The end result is that often times the end users have complaints about the quality of test cases during the UAT (User’s Acceptance Test) and about how a particular process was customized in SAP versus how the process was previously executed in the end user’s legacy systems. &lt;br /&gt;&lt;br /&gt;Test managers should solicit the feedback, input and even the sign-off from the SMEs for the various testing artifacts as soon as possible or as the testing artifacts are produced. It is in the best interests of the test team to identify problems with the testing artifacts as soon as possible as opposed to weeks before the SAP cut-over or SAP go-live dates. &lt;br /&gt;9. Problems obtaining valid test data &lt;br /&gt;&lt;br /&gt;Arguably, the most prevalent risk to conducting an SAP test whether it is integration, functional, string, volume, smoke, or security test is obtaining valid SAP test data. &lt;br /&gt;&lt;br /&gt;When dealing with SAP data invariable one or more of the questions below will arise before a testing cycle ensues:&lt;br /&gt;&lt;br /&gt;Where will the test data come from? How will one produce new data for transactions that require unique data? How will the data be loaded into a new SAP client and instance? What happens when an interface or conversion needs to send data into core SAP R/3 from a legacy system and the interface or conversion is not executing properly or has yet to be developed? What happens when the transactional data has not been created?&lt;br /&gt;&lt;br /&gt;Assuming that the testing team has a dedicated test bed or QA box the test manager will need to ensure that all the necessary data (master, transactional, test, etc) is properly loaded as part of the assessment for the test readiness review. Ideally an SAP test will be conducted within a test bed containing data that closely mirrors production data and where the testing environment is production-sized. The test manager should prioritize the test cases that will be executed and determine and document any work-around for test cases that cannot be executed due to missing test data.&lt;br /&gt;10. Missing flow processes, diagrams&lt;br /&gt;&lt;br /&gt;Diagramming or modeling how a business scenario will flow within SAP provides invaluable insights to the testing team and the configuration team. Diagrams and flow processes can illustrate the lifecycle, stages, sequences, activities, states and events associated with a particular business process. Unfortunately, many projects undergoing an SAP implementation or SAP upgrade fail to diagram their business processes leaving testers or newly hired resources in a bind to comprehend how legacy processes, or new customizations derived from gap analysis will be executed within SAP. SAP testers and end users participating in the user’s acceptance test should have access to diagrams depicting how business processes flow within SAP. The absence of such diagrams puts undue burden on the testing team and places the end users in a position of disadvantage. &lt;br /&gt;&lt;br /&gt;The SAP business analysts in conjunction with the SAP configuration team, and possibly the SMEs (Subject Matter Experts) can develop diagrams in tools such as Visio, or the ARIS modeling tool that integrates and links with SAP’s Q&amp;adb (Question and answer database) for those SAP implementations following the ASAP methodology. Alternatively, with Rational’s tools one can develop UML (Unified Modeling Language) diagrams to illustrate processes with interaction diagrams (sequence and activity diagrams).&lt;br /&gt;11. No integration testing with external components&lt;br /&gt;&lt;br /&gt;SAP integrates with many legacy systems via interfaces, IDOCs, conversions, BAPIs, connectors, or even middle ware such as Mercator. SAP can even be integrated with other commercial ERP systems, forecasting/planning systems, and CRM applications. &lt;br /&gt;&lt;br /&gt;Although, the integration of SAP with other systems is critical to the successful implementation and deployment of SAP, many companies merely test during the integration test the interaction of SAP among its various modules and add-ons. Although the aforementioned type of integration testing is necessary it is also critically important to test the integration of SAP with non-SAP systems. &lt;br /&gt;&lt;br /&gt;Some examples of integration testing that I have conducted between SAP and non-SAP systems are: SAP integrating via IDOCs to bar coding software, SAP properly sending outbound data to legacy system and the legacy system processing the data correctly, end to end financial reconciliations between SAP and data warehouses, integration between SAP and planning systems for MRP runs, etc.&lt;br /&gt;12. Limited security access &lt;br /&gt;&lt;br /&gt;I have seen SAP testing efforts come to a halt because the testers did not have the necessary privileges and permissions to execute certain SAP transactions or the necessary roles to submit electronic approvals. This problem is exacerbated when testers are executing test cases at odd hours or during weekend hours and there is no Basis support to augment the tester’s security role. &lt;br /&gt;&lt;br /&gt;Successful execution of certain test cases in SAP whether manually or with automated test tools will require the test team members to have super user access. This is of utmost importance when conducting positive and negative testing for security roles. The testing team should coordinate and plan with the Basis team the necessary roles and permissions for developing test cases and for executing test cases in the designated QA environment or test bed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-1085436143924901243?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/1085436143924901243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=1085436143924901243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1085436143924901243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/1085436143924901243'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/sap-r3-testing.html' title='SAP R/3 Testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-100119487322175211</id><published>2009-01-04T22:27:00.000-08:00</published><updated>2009-01-04T22:31:04.089-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Testing'/><title type='text'>Tips to software practitioners</title><content type='html'>1Software Testing Objectives &lt;br /&gt;The Major Objectives of Software Testing:&lt;br /&gt;- Uncover as many as errors (or bugs) as possible in a given timeline.&lt;br /&gt;- Demonstrate a given software product matching its requirement specifications.&lt;br /&gt;- Validate the quality of a software testing using the minimum cost and efforts.&lt;br /&gt;- Generate high quality test cases, perform effective tests, and issue correct and helpful problem reports.&lt;br /&gt;&lt;br /&gt;Major goals of Software Testing:&lt;br /&gt;uncover the errors (defects) in the software, including errors in:&lt;br /&gt;- requirements from requirement analysis&lt;br /&gt;- design documented in design specifications&lt;br /&gt;- coding (implementation)&lt;br /&gt;- system resources and system environment&lt;br /&gt;- hardware problems and their interfaces to software&lt;br /&gt;2Software Quality Factors &lt;br /&gt;Functionality (exterior quality)&lt;br /&gt;&lt;br /&gt;- Correctness, reliability, usability, and integrity&lt;br /&gt;&lt;br /&gt;Engineering (interior quality)&lt;br /&gt;&lt;br /&gt;- Efficiency, testability, documentation, structure&lt;br /&gt;&lt;br /&gt;Adaptability (future qualities)&lt;br /&gt;&lt;br /&gt;- Flexibility, reusability, maintainability&lt;br /&gt;3Software Testing Myths&lt;br /&gt;- We can test a program completely. In other words, we test a program exhaustively.&lt;br /&gt;&lt;br /&gt;- We can find all program errors as long as test engineers do a good job.&lt;br /&gt;&lt;br /&gt;- We can test a program by trying all possible inputs and states of a program.&lt;br /&gt;&lt;br /&gt;- A good test suite must include a great number of test cases.&lt;br /&gt;&lt;br /&gt;- Good test cases always are complicated ones.&lt;br /&gt;&lt;br /&gt;- Software test automation can replace test engineers to perform good software testing.&lt;br /&gt;&lt;br /&gt;- Software testing is simple and easy. Anyone can do it. No training is needed.&lt;br /&gt;4Software Testing Limits &lt;br /&gt;- Due to the testing time limit, it is impossible to achieve total confidence.&lt;br /&gt;&lt;br /&gt;- We can never be sure the specifications are 100% correct.&lt;br /&gt;&lt;br /&gt;- We can never be certain that a testing system (or tool) is correct.&lt;br /&gt;&lt;br /&gt;- No testing tools can copy with every software program.&lt;br /&gt;&lt;br /&gt;- Tester engineers never be sure that they completely understand a software product.&lt;br /&gt;&lt;br /&gt;- We never have enough resources to perform software testing.&lt;br /&gt;&lt;br /&gt;- We can never be certain that we achieve 100% adequate software testing.&lt;br /&gt;5Software Testing Principles&lt;br /&gt;Principle #1: Complete testing is impossible.&lt;br /&gt;&lt;br /&gt;Principle #2: Software testing is not simple.&lt;br /&gt;Reasons:&lt;br /&gt;Quality testing requires testers to understand a system/product completely&lt;br /&gt;Quality testing needs adequate test set, and efficient testing methods&lt;br /&gt;A very tight schedule and lack of test tools.&lt;br /&gt;&lt;br /&gt;Principle #3: Testing is risk-based.&lt;br /&gt;&lt;br /&gt;Principle #4: Testing must be planned.&lt;br /&gt;&lt;br /&gt;Principle #5: Testing requires independence.&lt;br /&gt;&lt;br /&gt;Principle #6: Quality software testing depends on:&lt;br /&gt;Good understanding of software products and related domain application&lt;br /&gt;Cost-effective testing methodology, coverage, test methods, and tools.&lt;br /&gt;Good engineers with creativity, and solid software testing experience&lt;br /&gt;6Software Testing Activities &lt;br /&gt;Test Planning &lt;br /&gt;Define a software test plan by specifying: &lt;br /&gt;- a test schedule for a test process and its activities, as well as assignments &lt;br /&gt;- test requirements and items &lt;br /&gt;- test strategy and supporting tools &lt;br /&gt;&lt;br /&gt;Test Design and Specification &lt;br /&gt;- Conduct software design based well-defined test generation methods. &lt;br /&gt;- Specify test cases to achieve a targeted test coverage. &lt;br /&gt;&lt;br /&gt;Test Set up &lt;br /&gt;- Testing Tools and Environment Set-up &lt;br /&gt;- Test Suite Set-up &lt;br /&gt;&lt;br /&gt;Test Operation and Execution &lt;br /&gt;- Run test cases manually or automatically &lt;br /&gt;&lt;br /&gt;Test Result Analysis and Reporting &lt;br /&gt;- Report software testing results and conduct test result analysis &lt;br /&gt;&lt;br /&gt;Problem Reporting &lt;br /&gt;- Report program errors using a systematic solution. &lt;br /&gt;&lt;br /&gt;Test Management and Measurement &lt;br /&gt;- Manage software testing activities, control testing schedule, measure testing complexity and cost &lt;br /&gt;&lt;br /&gt;Test Automation &lt;br /&gt;- Define and develop software test tools &lt;br /&gt;- Adopt and use software test tools &lt;br /&gt;- Write software test scripts and facility &lt;br /&gt;&lt;br /&gt;Test Configuration Management &lt;br /&gt;- Manage and maintain different versions of software test suites, test environment and tools, and documents for various product versions.&lt;br /&gt;7Bug Writing tips &lt;br /&gt;12 Bug writing tips: &lt;br /&gt;&lt;br /&gt;1.Be very specific when describing the bug. Don’t let there be any room for interpretation. More concise means less ambiguous, so less clarification will be needed later on. &lt;br /&gt;&lt;br /&gt;2.Calling windows by their correct names (by the name displayed on the title bar) will eliminate some ambiguity. &lt;br /&gt;&lt;br /&gt;3.Don’t be repetitive. Don’t repeat yourself. Also, don’t say things twice or three times. &lt;br /&gt;&lt;br /&gt;4.Try to limit the number of steps to recreate the problem. A bug that is written with 7 or more steps can usually become hard to read. It is usually possible to shorten that list. &lt;br /&gt;&lt;br /&gt;5.Start describing with where the bug begins, not before. For example, you don't have to describe how to load and launch the application if the application crashes on exit. &lt;br /&gt;&lt;br /&gt;6.Proofreading the bug report is very important. Send it through a spell checker before submitting it. &lt;br /&gt;7. Make sure that all step numbers are sequenced. (No missing step numbers and no duplicates.) &lt;br /&gt;&lt;br /&gt;8.Please make sure that you use sentences. This is a sentence. This not sentence. &lt;br /&gt;&lt;br /&gt;9.Don’t use a condescending or negative tone in your bug reports. Don’t say things like "It's still broken", or “It is completely wrong”. &lt;br /&gt;&lt;br /&gt;10.Don’t use vague terms like “It doesn’t work” or “not working properly” &lt;br /&gt;&lt;br /&gt;11.If there is an error message involved, be sure to include the exact wording of the text in the bug report. If there is a GPF (General Protection Fault) be sure to include the name of the module and address of the crash. &lt;br /&gt;&lt;br /&gt;12.Once the text of the report is entered, you don’t know whose eyes will see it. You might think that it will go to your manager and the developer and that’s it, but it could show up in other documents that you are not aware of, such as reports to senior management or clients, to the company intranet, to future test scripts or test plans. The point is that the bug report is your work product, and you should take pride in your work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-100119487322175211?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/100119487322175211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=100119487322175211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/100119487322175211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/100119487322175211'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/tips-to-software-practitioners.html' title='Tips to software practitioners'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-3861202274767847516</id><published>2009-01-04T10:33:00.000-08:00</published><updated>2009-01-04T10:34:53.257-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOATESTING'/><title type='text'>Be aware of SOA application security issues</title><content type='html'>&lt;p&gt;Extensible Markup Language (XML), Web services, and service-oriented architecture (SOA) are the latest craze in the software development world. These buzzwords burn particularly bright in large enterprises with hundreds or thousands of systems that were developed independently. If these disparate systems can be made to work together using open standards, a tremendous amount of time, money, and frustration can be saved. Whether or not we are on the verge of a new era in software, the goal alone is enough to make security people cringe. It might be easy to glue System A and System B together, but will the combination be secure?&lt;/p&gt; &lt;p&gt;Today, most discussions about Web services security focus on standards: from WS-Security and SAMLdown to SOAP and even XML. While the standards are important, measuring the security of a Web service requires looking past the standards and considering all of the ways the system might fail. Attackers focus on a system's weak points, and a security assessment should do the same. Consider the following: &lt;/p&gt; &lt;ul type="disc"&gt;&lt;li class="x_MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Complex protocols might seem bloated or redundant. Skipping or changing steps might not create any problems for normal operation, but it could but jeopardize the security guarantees the protocol offers. &lt;/span&gt;&lt;/li&gt;&lt;li class="x_MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Application platforms that support Web services are incredibly flexible. In practice, that means they have incredibly complex configurations. Mistakes in these configuration files become vulnerabilities in the service. &lt;/span&gt;&lt;/li&gt;&lt;li class="x_MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Services are often built on top of legacy software that was not originally designed to operate as a service. Vulnerable code that's never been exposed to the network before offers attackers new opportunities. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Eliminating problems like those is part of any comprehensive approach to SOA security. We'll take a look at an example of each and then talk about the business software assurance techniques you should use to prevent them. &lt;/p&gt; &lt;p style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Most people know better than to make up their own cryptography, but a surprising number of programmers are still willing to try their hand at a home-brewed authentication protocol. Last month Google found out just what a bad idea that is. The single sign-on protocol they used for Google Applications was derived from SAML, but it left out a few seemingly unnecessary pieces of information from two protocol messages. The result was a severe security flaw that allowed a dishonest service provider to impersonate a user at another service provider. The moral to this story is if you adopt a standard, don't stop at "good enough." Subtle vulnerabilities creep in where standards compliance falls off. &lt;/p&gt; &lt;p style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Web service containers such as WebSphere, WebLogic, or .NET WSE are amazingly versatile when it comes to Web services support, but what at first might seem a blessing quickly turns into a nightmare for the people who have to configure these systems. People stitch together configurations from sample projects or flail until somehow their service starts working. The result is service configurations that don't do exactly what the author intended. The example below shows an Apache Axis 2 Rampart client configuration that does not require inbound messages to be encrypted (since the &lt;items&gt; tag does not contain an Encrypt directive). &lt;/p&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;service&gt;&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;...&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;parameter name="InflowSecurity"&gt;&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;action&gt;&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;   &lt;items&gt;Timestamp Signature&lt;/items&gt;&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;   ...&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/action&gt;&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/parameter&gt;&lt;/pre&gt; &lt;pre style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/service&gt;&lt;/pre&gt; &lt;p style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;When this configuration is buried in an enormous configuration file, the mistake is hard to catch. The result is a Web service that doesn't offer all of the security guarantees its author would. &lt;/p&gt; &lt;p&gt;But there are a tremendous constellation of security errors that aren't related to standards or to configuration. In fact, Web services don't introduce new types of security concerns as often as they provide new opportunities to make old mistakes. If a legacy system gets a brand new Web services interface, all sorts of problems that used to be buried deep in the system might now be able to find their way out. By exposing what used to be the internal workings of a program directly to the network, programmers may inadvertently bypass input validation or access control mechanisms, expose too much access to the internal workings of the program, or provide a new forum for making session management mistakes. &lt;/p&gt; &lt;p&gt;The situation is exacerbated by the fact that the security requirements for a Web service are at least somewhat ambiguous. Web services are supposed to be flexible so that they can be used by other programmers to assemble applications that the creator of the Web service may not have envisioned, but this makes it difficult for a Web service to understand the security needs of its callers. What sort of output validation should a Web service perform? If the Web service is intended to be used directly by a Web browser, then it should take precautions to prevent cross-site scripting (XSS). But if the author of a Web service doesn't know how it will be used, then it is hard to make the right security decisions. &lt;/p&gt; &lt;p&gt;Consider the code below. It's a method taken from DionySOA, a project that advertises itself as a Reseller/Broker service platform built using SOA and Web services. The method is exposed through a Web service. (You get a hint that it might be externally accessible when you see that it throws java.rmi.RemoteException. Knowing for sure requires looking at the application's configuration files.) The method contains a blatant SQL injection vulnerability. It takes its attacker-supplied parameter, concatenates it into a SQL query string, and executes the query. Although it is possible to make this kind of mistake without any help from Web services, we can't help but believe that the Web services setup made it easier to forget about input validation. &lt;/p&gt; &lt;pre&gt;public supplier.model.SupplierProduct[ ]&lt;/pre&gt; &lt;pre&gt;searchName(java.lang.String in0) throws &lt;/pre&gt; &lt;pre&gt;      java.rmi.RemoteException {&lt;/pre&gt; &lt;pre&gt; &lt;/pre&gt; &lt;pre&gt;System.out.println("searchName("+in0+")");&lt;/pre&gt; &lt;pre&gt;    String query="SELECT * FROM products " +&lt;/pre&gt; &lt;pre&gt;               " WHERE name like '"+in0+"'  ";&lt;/pre&gt; &lt;pre&gt;  return this.doSQL(query);&lt;/pre&gt; &lt;pre&gt;}&lt;/pre&gt; &lt;p&gt;Similarly, if a newly exposed method used to rely on another part of the application to perform access control checks, the Web services interface might now bypass those checks, making it easy to lose track of the trust boundary. &lt;/p&gt; &lt;p&gt;There's nothing fundamentally wrong with making it easy to create a Web service, but creating a good Web service is really not so easy. The Web services frameworks we are aware of do not give a programmer any guidance about the security implications that might be involved in exposing the insides of a program. &lt;/p&gt; &lt;p&gt;We don't mean for these examples to discourage the use of Web services, XML, and SOA frameworks, but rather to make users aware of the missteps that can occur when deploying these technologies. These examples will hopefully be a catalyst for taking security into account as part of the software development process. Business software assurance requires building security into every step, rather than trying to tack it on at the end. Just as quality assurance is the operational solution for managing product quality, business software assurance is the operational solution for managing software risk. The following activities should be part of any software project: &lt;/p&gt; &lt;ul type="disc"&gt;&lt;li class="x_MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Think like a bad guy. How would you attack this system? What would you hope to gain? &lt;/span&gt;&lt;/li&gt;&lt;li class="x_MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Automated vulnerability detection -– source code analysis and dynamic security testing -– to identify vulnerabilities before the code is deployed. &lt;/span&gt;&lt;/li&gt;&lt;li class="x_MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Real-time monitoring and active protection to defend the code once it's in production.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;As companies become increasingly dependent on software to run the business, and as new technologies enable old applications to find fresh new uses, companies must make security a priority. A more proactive and systematic approach towards software security will be -- in the end -- less costly and more predictable than an ad-hoc security strategy. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-3861202274767847516?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/3861202274767847516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=3861202274767847516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3861202274767847516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/3861202274767847516'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2009/01/be-aware-of-soa-application-security.html' title='Be aware of SOA application security issues'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-5926574374310299311</id><published>2008-08-06T02:17:00.000-07:00</published><updated>2008-08-06T02:23:41.879-07:00</updated><title type='text'>How to specialize in performance testing</title><content type='html'>&lt;div class="Section1"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:24;"  &gt;How to specialize in performance testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b&gt;Q-I have been learning performance testing for the past eight months. However, I was not given any opportunities in performance testing in my present company even though I performed well in the internal interviews. I really want to become  a good performance tester -- it is my dream to become a performance tester. Please guide me as to how I can make this happen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin-bottom: 12pt;"&gt;&lt;b&gt;Expert’s Response:&lt;/b&gt; I think this is a great question. It's specific, which makes it easy to start answering, but it's also general enough that anyone who is interested in specializing in something within software testing  should be able to pull something from the answer. I think there are three overarching dynamics to your question: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Symbol;"&gt;·&lt;/span&gt;  How can you best structure your future learning to support your goals? &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Symbol;"&gt;·&lt;/span&gt;  How can you best market your abilities to get the opportunities you want? &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Symbol;"&gt;·&lt;/span&gt;  How can you best structure the work you're currently doing to support your work and learning objectives? &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Continuing to learning about performance testing&lt;/b&gt;&lt;br /&gt;The activity that you have the most control over is your own learning. I've been studying and doing performance testing for eight years, and I honestly still learn something new about performance testing almost every week. It's a deep and rich specialization  in software testing. There's a lot to performance testing that still needs to be formalized and written down. It's still a growing body of knowledge. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;If your dream is performance testing, then you need to continue to learn. Reading articles, blogs, books and tool documentation is a good place to start. Attending conferences, training, workshops and local groups is a great place to meet others who have  similar passions. If you don't have opportunities like those, then join one of the many online communities where performance testers have a presence. Depending on your learning style, dialog and debate can be as great a teacher as reading, if not greater.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Finally, no learning is complete without practice. I'm so passionate about the topic of practice that I wrote an entire article on it. Many of the materials you read will include exercises. Work through them. Many of the conferences, training, and workshops  you attend will show examples. Repeat them. Going through the work on your own, even if you already know the outcome, provides a different kind of learning. Some people learn best when the experience is hands-on. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;For performance testing, I think a great place to start practicing is in the open source community. Given the nature of performance testing, most tool knowledge is transferable to other performance testing tools. Learning multiple open source tools will  also give you different ideas for how you can solve a performance testing problem. Many times, our available tools anchor our thinking about how to approach the problem. If you've practiced with multiple tools, you're more likely to have variety in your test  approaches and solutions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Once you know how to use a couple of performance testing tools, if you can't seem to get the project work you need at your current employer, and you're unwilling or unable to leave for another opportunity, then I recommend volunteering your time. There are  a lot of online communities that help connect people who want to volunteer their technical talents to nonprofits or other community-minded organizations. Finding project work outside of your day job can be just as valuable as formal project work. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Start marketing your skills and abilities&lt;/b&gt;&lt;br /&gt;If you're serious about performance testing as a career, I recommend you start pulling together some marketing material. A resume is the place most people focus their limited marketing skills. That could be a good place for you to start as well. What story  does your resume tell a potential employer? Is it that you're a performance tester? How has each of your past experiences helped you develop a specific aspect of performance testing? Remember, one of the great challenges performance testing presents to practitioners  is its variety. That makes it easy to relate a variety of experiences to the skills a performance tester needs. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Don't forget to include your training on your resume. I've had to remind several people of classes they've attended, workshops they participated in, or people who have been an active member of an online community for years and have not included that on their  resume. If it helps you tell the story of your expertise, get it on there. Include anything that shows an employer that you're passionate about performance testing and you're continuously learning more about it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Depending on the types of companies you want to work for, or the types of projects you might want, a certification might be appropriate. Certifications relevant to performance testing aren't just performance testing tool certifications. Appropriate certifications  may also come in the form of programming languages (e.g., Java certification), networking (e.g., CCNA), application servers (e.g., WebSphere administrator certification), databases (e.g., Oracle certification), or even a certification in the context you want  to work in (e.g., CPCU certification if you want to work in the Insurance industry). I'm not normally a big fan of certifications, but they are clear marketing products. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Finally, I think the best way to market yourself is to write. Start by being active in an online community. Answer questions on forums or debate ideas on mailing lists. As you learn, catalog your learning in a blog so others can benefit from your hard work.  If you feel you're really starting to understand a specific aspect of performance testing, try writing an article or paper on it (for example, email your idea to an editor at SearchSoftwareQuality.com -- they'll point you in the right direction for help if  you need it). Present your idea at a conference or workshop. The more of a public face you develop by writing, the more you learn. My experience has been that people are very vocal in their feedback on what you write. You should get to learn a lot. Even if  you don't become the next Scott Barber, when a potential employer Googles your name, they'll quickly see that you know something about performance testing and have a passion for it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Align your project work with performance testing activities &lt;/b&gt;&lt;br /&gt;Even if you can't get performance testing projects at your current employer, you can still get project work that relates to performance testing. Does your team test Web services? See if you can get involved; it will get you experience with XML, various protocols  and, often, specialized tools. Does your team test databases? See if you can get involved; it will get you experience with SQL and managing large datasets. Does your team write automated tests? See if you can get involved; it will get you experience programming  and dealing with the problems of scheduled and distributed tests. Does your team do risk-based testing? See if you can get involved; it will get you experience modeling the risk of an application or feature and teach you how to make difficult choices about  which tests to run. I could go on with more examples. Take your current opportunities and make them relevant for learning more about performance testing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;If you can't get your own performance testing project, ask if you can work with someone else. What if you volunteer some of your time? What if you work under someone else's supervision for a while? Work with your current manager to understand what factors  are preventing them from giving you the opportunity. Perhaps they can't give you the opportunity for a number of reasons out of their direct control. Perhaps they can, they just haven't given it enough attention. After a conversation where you try to figure  it out with them, you should have an idea of what opportunities are available at that company. Just recognize that sometimes you have to leave for different opportunities. If you do that, make sure you're clear with your new employer as to what your expectations  are. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;I hope that's helpful. Your question is a great one, and I feel like it covers a general concern software testers have. The general form of the answer is the same for people who might want to specialize in security testing, test automation, Web service testing,  test management, or any other aspect of testing where there can be specialization. Stay focused on your learning and development, actively market your knowledge and abilities, and work to align your work with your goals -- even if that means taking projects  outside of the specialization to help you develop a specific skill. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;&lt;hr /&gt; &lt;span style="font-family:Arial;font-size:85%;color:Navy;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-5926574374310299311?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/5926574374310299311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=5926574374310299311' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5926574374310299311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/5926574374310299311'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2008/08/how-to-specialize-in-performance.html' title='How to specialize in performance testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-100628852235995738</id><published>2008-08-06T02:16:00.000-07:00</published><updated>2008-08-06T02:27:49.363-07:00</updated><title type='text'>How to do integration testing</title><content type='html'>&lt;div class="Section1"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:24;"  &gt;How to do integration testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="a1"&gt;&lt;b&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="a1"&gt;&lt;b&gt;&lt;span style="color: rgb(31, 73, 125);"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="a1"&gt;&lt;b&gt;Q-&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;How do testers do integration testing? What are top-down and bottom-up approaches in integration testing?&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="a1"&gt;&lt;b&gt;Expert’s response:&lt;/b&gt;&lt;/span&gt; Ironically, integration testing means completely different things to completely different companies. At Microsoft, we typically referred to integration testing as the testing that occurs  at the end of a milestone and that "stabilizes" a product. Features from the new milestone are integration-tested with features from previous milestones. At Circuit City, however, we referred to integration testing as the testing done just after a developer  checks in -- it's the stabilization testing that occurs when two developers check in code. I would call this feature testing, frankly… &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;But to answer your question, top-down vs. bottom-up testing is simply the way you look at things. Bottom-up testing is the testing of code that could almost be considered an extension of unit testing. It's very much focused on the feature being implemented  and that feature's outbound dependencies, meaning how that feature impacts other areas of the product/project. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Top-down, on the other hand, is testing from a more systemic point of view. It's testing an overall product after a new feature is introduced and verifying that the features it interacts with are stable and that it "plays well"' with other features.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;The key to testing here is that you are in the process of moving beyond the component level and testing as a system. Frankly, neither approach alone is sufficient. You need to test the parts with the perspective of the whole. One part of this testing is  seeing how the system as a whole responds to the data (or states) generated by the new component. You want to verify that data being pushed out by the component are not only well-formatted (what you tested during component testing) but that other components  are expecting and can handle that well-formatted data. You also need to validate that the data originating within the existing system are handled properly by the new component. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Real-world examples? Well, let's assume you are developing a large retail management system, and an inventory control component is ready for integration. Bottom-up testing would imply that you set up a fair amount of equivalence-classed data in the new component  and introduced that new data into the system as a whole. How does the system respond? Are the inventory amounts updated correctly? If you have inventory-level triggers (e.g., if the total count of pink iPod Nanos falls below a certain threshold, generate an  electronic order for more), does the order management system respond accordingly? This is bottom-up testing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;At the same time, you want to track how well the component consumes data from the rest of the system. Is it handling inventory changes coming in from the Web site? Does it integrate properly with the returns system? When an item's status is updated by the  warehouse system, is it reflected in the new component? &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;We see constant change in the testing profession, with new methodologies being proposed all the time. This is good -- it's all part of moving from art to craft to science. But just as with anything else, we can't turn all of our testing to one methodology  because one size doesn't fit all. Bottom-up and top-down testing are both critical components of an integration testing plan and both need considerable focus if the QA organization wants to maximize software quality. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="a1"&gt;&lt;b&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;&lt;hr /&gt; &lt;span style="font-family:Arial;font-size:85%;color:Navy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-100628852235995738?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/100628852235995738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=100628852235995738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/100628852235995738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/100628852235995738'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2008/08/how-to-do-integration-testing.html' title='How to do integration testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-7831231020632720124</id><published>2008-08-06T01:40:00.000-07:00</published><updated>2008-08-06T02:12:13.465-07:00</updated><title type='text'>Test coverage: Finding all the defects in your application</title><content type='html'>&lt;div class="Section1"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:24;"  &gt;Test coverage: Finding all the defects in your application&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:24;"  &gt;Q-&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;If trace matrix does not  meet the requirement for test coverage, what would you suggest for the same? How can I assure the coverage of all functionalities by a team member as a team leader?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="text6"&gt;&lt;b&gt;Expert Response:&lt;/b&gt;&lt;/span&gt; The trace matrix is a well-established test coverage tool. Let me offer a quick definition -- the purpose of the trace matrix is to map one or more than one test case to each system requirement, the trace  matrix is usually formatted in a table. The fundamental premise is that if one or more than one test case has been mapped to each requirement, then all the requirements of the system &lt;i&gt;must&lt;/i&gt; have been tested and therefore the trace matrix &lt;i&gt;proves&lt;/i&gt; testing is complete. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;I see flaws with this line of reasoning and here are my primary reservations on the over-reliance of the trace  matrix: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;ol start="1" type="1"&gt; &lt;li class="MsoNormal" style="margin-bottom: 12pt;"&gt; &lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;A completed trace matrix is only as valuable as the contents. If the requirements are not complete or clear than the test cases designed and executed might fulfill the requirements but the  testing won't have provided what was needed. Conversely if the requirements are clear but the test cases are insufficient then a completed trace matrix still doesn't indicate the testing coverage and confidence that is being sought by a completed table. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt; &lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;The trace matrix design relies too stringently on system requirements -- that is the primary design of the trace matrix -- to ensure all system requirements have been tested. But all sorts  of defects can be found outside of the system requirements that are still relevant to the application providing a solution for the customer. By looking only at the system requirements and potentially not considering the customers' needs and real life product  usage, essential testing could be overlooked. Testing only according to specified requirements may be too narrowly focused to be effective in real life usage -- unless the requirements are exceptionally robust. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;Overall I feel the trace matrix might provide a clean high level view of testing but a checked-off list doesn't prove an application is ready to ship. The reason some  people value the trace matrix is the matrix attempts to offer an orderly view of testing; but in my experience testing is rarely such a tidy task. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;So how do you call the end of testing? And how can you assure test coverage? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;ol start="1" type="1"&gt; &lt;li class="MsoNormal" style="margin-bottom: 12pt;"&gt; &lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;To be able to assure coverage at the end, I'd start with reviewing the beginning -- look at the test planning. Did your test planning include a risk analysis? A risk analysis at the start  of a project can provide solid information for your test plan. Host a risk analysis either formally or informally, gather ideas by talking with multiple people. Get different points of view -- from your project stakeholders, talk to your DBAs, your developers,  your network staff, and your business analysts. Plan testing based on your risk analysis. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin-bottom: 12pt;"&gt; &lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;As a project continues, shift testing based on the defects found and the product and project as it evolves. Focus on high risk areas. Adapt testing based on you and your testing team's experience  with the product. Be willing to adjust your test plan throughout the project. &lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt; &lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;Throughout testing, watch the defects reported. Keep having conversations and debriefs with hands-on testers to understand not just what they've tested but how they feel about the application.  Do they have defects they've seen but haven't been able to reproduce? What is their perception of the current state of the application? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p class="MsoNormal" style="margin-bottom: 12pt; margin-left: 0.25in;"&gt; &lt;span style=";font-family:&amp;quot;;font-size:12;"  &gt;In my view, there is no one tool including the trace matrix that signals testing is complete but the combination of knowing how testing was planned and adapted throughout the project, a thorough  review of the defects reported and remaining, and the current state of the application according to you and your team's experience should provide you with an objective assessment of the product and the test coverage.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;&lt;hr /&gt; &lt;span style="font-family:Arial;font-size:85%;color:Navy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-7831231020632720124?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/7831231020632720124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=7831231020632720124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/7831231020632720124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/7831231020632720124'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2008/08/test-coverage-finding-all-defects-in.html' title='Test coverage: Finding all the defects in your application'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1578677178561645717.post-8081114195851644595</id><published>2008-07-29T22:54:00.000-07:00</published><updated>2008-07-29T23:04:24.197-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Acceptance test'/><title type='text'>Don't mistake user acceptance testing for acceptance testing</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:'Times New Roman','serif';font-size:24;"&gt;Don't mistake user acceptance testing for acceptance testing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;If you think software testing in general is badly misunderstood, acceptance testing (a subset of software testing) is even more wildly misunderstood. This misunderstanding is most common with commercially driven software as opposed to open source software and software being developed for academic or research and development reasons. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;This misunderstanding baffles me because acceptance testing is one of the most consistently defined testing concepts I've encountered over my career both inside and outside of the software field. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;First, let's look at what Wikipedia has to say about acceptance testing: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;"In engineering and its various subdisciplines, acceptance testing is black-box testing performed on a system (e.g. software, lots of manufactured mechanical parts, or batches of chemical products) prior to its delivery…&lt;br /&gt;&lt;br /&gt;"In most environments, acceptance testing by the system provider is distinguished from acceptance testing by the customer (the user or client) prior to accepting transfer of ownership…&lt;br /&gt;&lt;br /&gt;"A principal purpose of acceptance testing is that, once completed successfully, and provided certain additional (contractually agreed) acceptance criteria are met, the sponsors will then sign off on the system as satisfying the contract (previously agreed between sponsor and manufacturer), and deliver final payment."&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;This is consistent with the definition Cem Kaner uses throughout his books, courses, articles and talks, which collectively are some of the most highly referenced software testing material in the industry. The following definition is from his Black Box Software Testing course: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;"Acceptance testing is done to check whether the customer should pay for the product. Usually acceptance testing is done as black box testing." &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;Another extremely well-referenced source of software testing terms is the International Software Testing Qualifications Board (ISTQB) Standard glossary of terms. Below is the definition from Version 1.3 (dd. May, 31, 2007): &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;"Formal testing with respect to user needs, requirements, and business processes conducted to determine whether or not a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system."&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;I've chosen those three references because I've found that if Wikipedia, Cem Kaner and the ISTQB are on the same page related to a term or the definition of a concept, then the testing community at large will tend to use those terms in a manner that is consistent with these resources. Acceptance testing, however, is an exception. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;There are several key points on which these definitions/descriptions agree: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;ol type="1"&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo3"&gt;In each case, acceptance testing is done to determine whether the application or product is acceptable to someone or some organization and/or if the person or organization should pay for the application or product AS IS. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo3"&gt;"Finding defects" is not so much as mentioned in any of those definitions/descriptions, but each implies that defects jeopardize whether the application or product becomes "accepted." &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l2 level1 lfo3"&gt;Pre-determined, explicitly stated, mutually agreed-upon criteria (between the creator of the application or product and the person or group that is paying for or otherwise commissioned the software) are the basis for non-acceptance.&lt;br /&gt;&lt;br /&gt;Wikipedia refers to this agreement as a contract, and identifies that non-compliance with the terms of the contract as a reason for non-payment. And Kaner references the contract through the question of whether the customer should pay for the product.&lt;br /&gt;&lt;br /&gt;The ISTQB does not directly refer to either contract or payment but certainly implies the existence of a contract (an agreement between two or more parties for the doing or not doing of something specified).&lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;With that kind of consistency, you'd think there wouldn't be any confusion. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;The only explanation I can come up with is that it is related to the fact that many people involved with software development only have experience with "user acceptance testing," and as a result they develop the mistaken impression that "user acceptance testing" is synonymous with "acceptance testing." &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;If my experiences with software user acceptance testing are common, I can understand where the confusion comes from. All of the software user acceptance testing that I have firsthand experience with involves representative users being given a script to follow and then being asked if they were able to successfully complete the task they were assigned by the person who wrote, or at least tested, the script. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;Since the software had always been rather strenuously tested against the script, the virtually inevitable feedback that all of the "users" found the software "acceptable" is given to the person or group paying for the software. The person or group then accepts the software -- and pays for it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;table class="MsoNormalTable" style="WIDTH: 110.25pt" cellspacing="0" cellpadding="0" width="147" align="right" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; WIDTH: 100%; PADDING-TOP: 0in" width="100%"&gt;&lt;table class="MsoNormalTable" style="WIDTH: 100%" cellspacing="0" cellpadding="0" width="100%" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_1" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image008.png@01C8F092.FF417330" width="26" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_2" height="1" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image009.png@01C8F092.FF417330" width="8" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_3" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image010.png@01C8F092.FF417330" width="66" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_4" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image011.png@01C8F092.FF417330" width="8" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_5" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image008.png@01C8F092.FF417330" width="26" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in" colspan="5"&gt;&lt;div align="center"&gt;&lt;table class="MsoNormalTable" style="WIDTH: 100%" cellspacing="0" cellpadding="0" width="100%" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 6pt; PADDING-LEFT: 6pt; PADDING-BOTTOM: 6pt; PADDING-TOP: 6pt"&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: center; mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly" align="center"&gt;&lt;b&gt;I have no idea how many dissatisfied end users, unhappy commissioners of software and unacceptable software products this flawed process is responsible for, but I suspect that it is no small number.&lt;/b&gt; &lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_6" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image008.png@01C8F092.FF417330" width="26" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_7" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image011.png@01C8F092.FF417330" width="8" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_8" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image010.png@01C8F092.FF417330" width="66" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_9" height="1" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image009.png@01C8F092.FF417330" width="8" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_10" height="20" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image008.png@01C8F092.FF417330" width="26" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_11" height="1" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image012.png@01C8F092.FF417330" width="7" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="PADDING-RIGHT: 0in; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; PADDING-TOP: 0in" colspan="2"&gt;&lt;p class="MsoNormal" style="mso-element: frame; mso-element-frame-hspace: 2.25pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: column; mso-element-left: right; mso-element-top: middle; mso-height-rule: exactly"&gt;&lt;img id="Picture_x0020_12" height="5" alt="http://media.techtarget.com/searchSoftwareQuality/images/spacer.gif" src="cid:image013.png@01C8F092.FF417330" width="1" /&gt;&lt;span style="font-size:12;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;There are several flaws with that practice, at least as it relates to the definitions above. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;ol type="1"&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo6"&gt;The "users" doing the acceptance testing are not the people who are paying for the development of the software. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo6"&gt;The person or group paying for the development of the software is not present during the user acceptance testing. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo6"&gt;The "users" are provided with all of the information, support, instructions, guidance and assistance they need to ultimately provide the desired "yes" response. Frequently this assistance is provided by a senior tester who has been charged with the task of coordinating and conducting user acceptance testing and believes he is doing the right thing by going out of his way to provide a positive experience for the "users." &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo6"&gt;By the time user acceptance testing is conducted, the developers of the software are ready to be done with the project and the person or group paying for the development of the software is anxious to ship the software.&lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If that is the only experience a person has with acceptance testing, I can see why one may not realize that the goal of user acceptance testing is to answer whether the end users will be satisfied enough with the software -- which obviously ships without the scripts and the well-meaning senior tester to help out -- to want to use and/or purchase it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;I have no idea how many dissatisfied end users, unhappy commissioners of software and unacceptable software products this flawed process is responsible for, but I suspect that it is no small number. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;In an attempt to avoid dissatisfied end users, unhappy commissioners of software and unacceptable software products, whenever someone asks me to be a part of any kind of acceptance testing -- whether qualified by additional terms like "user," "build," "system," "automated," "agile," "security," "continuous," "package," "customer," "business process," "market," or something else -- I pause to ask the following: &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;"For what purpose is who supposed to be deciding whether or not to accept what, on behalf of whom?"&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;My question often confuses people at first, but so far it has always lead to some kind of acceptance testing that enables decisions about the software and its related contracts. And that is what acceptance testing is all about. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-family:Arial;font-size:85%;color:navy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1578677178561645717-8081114195851644595?l=swaretesting.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swaretesting.blogspot.com/feeds/8081114195851644595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1578677178561645717&amp;postID=8081114195851644595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/8081114195851644595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1578677178561645717/posts/default/8081114195851644595'/><link rel='alternate' type='text/html' href='http://swaretesting.blogspot.com/2008/07/dont-mistake-user-acceptance-testing.html' title='Don&apos;t mistake user acceptance testing for acceptance testing'/><author><name>Software Testing</name><uri>http://www.blogger.com/profile/03753363363746376712</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07641691349272739960'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>