{"id":86747,"date":"2018-06-29T20:39:34","date_gmt":"2018-06-30T00:39:34","guid":{"rendered":"http:\/\/rbach.net\/blog\/index.php\/"},"modified":"2021-07-24T13:41:34","modified_gmt":"2021-07-24T17:41:34","slug":"software-testing-and-the-project-manager","status":"publish","type":"post","link":"https:\/\/rbach.net\/index.php\/software-testing-and-the-project-manager\/","title":{"rendered":"Software Testing and the Project Manager"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/IMG_00143-e1588465528596.jpg?ssl=1\" target=\"_blank\" rel=\"noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-114075\" title=\"Software Testing and the Project Manager\" src=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/IMG_00143-e1588465528596-59x75.jpg?resize=87%2C110&#038;ssl=1\" alt=\"Software Testing and the Project Manager\" width=\"87\" height=\"110\" srcset=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/IMG_00143-e1588465528596.jpg?resize=59%2C75&amp;ssl=1 59w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/IMG_00143-e1588465528596.jpg?resize=118%2C150&amp;ssl=1 118w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/IMG_00143-e1588465528596.jpg?w=311&amp;ssl=1 311w\" sizes=\"auto, (max-width: 87px) 100vw, 87px\" \/><\/a>Shh- don\u2019t tell <a href=\"https:\/\/www.pmi.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">PMI<\/a>, but as practicing <strong>Project Manager&#8217;s<\/strong> we all know that resources are limited. Sometimes the <a href=\"https:\/\/web.archive.org\/web\/20210722052630\/https:\/\/www.pmi.org\/pmbok-guide-standards\" target=\"_blank\" rel=\"noopener noreferrer\">PMBOK<\/a> process just won\u2019t work. <strong>Resources are limited<\/strong>. One of the most limited resources I see is testers. After all, nobody wants to pay for someone to try to break things all day long \u2013 That\u2019s what users are for. That is why a Project Manager can find themselves <strong>taking on the additional task<\/strong> of validating and testing software.<\/p>\n<p>For the uninitiated, there is a difference in mindset between <strong>validating and testing<\/strong>. When you are <strong>checking <\/strong>that the finished product meets your project <strong>requirements<\/strong>, you are <strong>validating<\/strong>.<\/p>\n<ul>\n<li>Add a new customer? Check!<\/li>\n<li>Edit a customer? Check!<\/li>\n<li>Don\u2019t permit deleting customers who have transactions associated with them?<\/li>\n<\/ul>\n<p><strong>Testing,<\/strong> however, shouldn\u2019t be so structured. And there are some good tricks from <a href=\"https:\/\/web.archive.org\/web\/20150831080731\/http:\/\/www.stoutsystems.com:80\/articles\/software-testing-for-the-uninitiated\/\" target=\"_blank\" rel=\"noopener noreferrer\">Stout Systems<\/a> that a project manager can rely on to find some bugs.<\/p>\n<h3 data-wp-editing=\"1\"><strong><a href=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/software_testing-e1728320703351.png?ssl=1\" target=\"_blank\" rel=\"noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-132551\" title=\"Software testing\" src=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/software_testing-e1728320703351-150x140.png?resize=125%2C117&#038;ssl=1\" alt=\"Software testing\" width=\"125\" height=\"117\" srcset=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/software_testing-e1728320703351.png?resize=150%2C140&amp;ssl=1 150w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/software_testing-e1728320703351.png?resize=75%2C70&amp;ssl=1 75w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/software_testing-e1728320703351.png?resize=768%2C716&amp;ssl=1 768w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/software_testing-e1728320703351.png?w=961&amp;ssl=1 961w\" sizes=\"auto, (max-width: 125px) 100vw, 125px\" \/><\/a><\/strong>Do stupid stuff<\/h3>\n<p data-wp-editing=\"1\">When writing code, developers know what kind of data is supposed to go into a field. Good developers will error-check to make sure that stupid data isn\u2019t being entered. But that doesn\u2019t always happen. So when testing, try to <strong>enter numbers where letters go<\/strong> or letters where numbers go. Try to <strong>enter symbols<\/strong>\u2014especially symbols that are used in programming like the various kinds of brackets &lt;&gt; or {} or () and the various punctuation marks like ! or @ or # or &amp;. (<em><strong>rb<\/strong>&#8211; Make your CISO happy and read up on <strong><a href=\"https:\/\/www.netsparker.com\/blog\/web-security\/sql-injection-cheat-sheet\/\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Injection attacks<\/a><\/strong> and try a few of them.<\/em>)<\/p>\n<p>Another stupid thing to do is to be <strong>click-happy<\/strong>. Click on one control and then another control before the application has a chance to execute the first action. Impatient users do this all the time, as do users who have mistakenly clicked the wrong place.<\/p>\n<p>Get two copies of the same web page open, <strong>delete something<\/strong> from one place, and then try to edit it in the other place. You\u2019ll blow it up most of the time, and get an unintelligible error message.<\/p>\n<p>Open a page up, <strong>do nothing<\/strong>, click the SUBMIT button. You should get validation errors that tell you that you didn\u2019t fill in the required fields. But an amazing number of times the application will just blow up on you with another unintelligible error message.<\/p>\n<h3>Regression test<\/h3>\n<p>One of the most common problems in software development is that <strong>adding a new feature causes something else to break<\/strong>. Regression testing is testing what was there before to make sure that it still works\u2014just as it did before. If you were previously able to add, edit, and delete customers\u2014but only if no transactions were associated with them\u2014then by George you should start your testing by making sure that you can still do this.<\/p>\n<p><a href=\"https:\/\/www.psychologytoday.com\/us\/blog\/headshrinkers-guide-the-galaxy\/201404\/whats-the-couch-got-do-it\" target=\"_blank\" rel=\"regression noopener test noreferrer\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Regression test\" src=\"https:\/\/i0.wp.com\/cdn.psychologytoday.com\/sites\/default\/files\/styles\/article-inline-half\/public\/blogs\/68127\/2014\/04\/147583-150190.jpg?resize=119%2C93&#038;ssl=1\" alt=\"Regression test\" width=\"119\" height=\"93\" \/><\/a>This should include using test records that you created before, too. So you add a new customer, edit the newly added customer\u2026 good, still works. Now open up a test customer you created previously. Can you still edit it? Maybe not! The new feature may have added fields to the database. The old records don\u2019t have any information in those fields\u2014but the information is marked as required\u2014and the application cannot handle it.<\/p>\n<p>The author points out that one of the biggest shortcomings she has witnessed in developer testing is that they test the new feature, sometimes with many use cases, but they don\u2019t go back to <strong>validate that everything from before still works<\/strong>. It is lazy, lazy, lazy not to have someone on the team regression test the full application unless you are certain that the new features couldn\u2019t have touched the old ones. But\u2026hmm\u2026are you really certain?<\/p>\n<h3><strong><a href=\"https:\/\/web.archive.org\/web\/20181130132332\/https:\/\/www.pcworld.com\/article\/2974053\/windows\/your-pc-boots-gets-to-the-windows-desktop-then-freezes-now-what.html\" target=\"_blank\" rel=\"before everything from noopener still that validate works noreferrer\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"validate that everything from before still works\" src=\"https:\/\/i0.wp.com\/images.techhive.com\/images\/article\/2015\/05\/thinkstockphotos-462323487-100584410-large.jpg?resize=119%2C78&#038;ssl=1\" alt=\"validate that everything from before still works\" width=\"119\" height=\"78\" \/><\/a><\/strong>Look at things like a user<\/h3>\n<p>Developers are notoriously bad at certain niceties. Deliberately produce error cases and then <strong>read the error message<\/strong> that you receive. Is the message in techno-speak or is it easy to understand? Does it have typos? Grammatical errors?<\/p>\n<p>Are the labels for the controls <strong>properly spelled<\/strong>? Is the <strong>capitalization consistent<\/strong>? The author says she often sees a mix of title case (where nearly every word is capitalized) and sentence case (where only the first word is capitalized). Some developers capitalize every word they think is important. Let\u2019s face it: <strong>they didn\u2019t major in English<\/strong>, so they shouldn\u2019t be expected to get these things right. But there is no reason the application should be released widely with such simple-to-fix mistakes.<\/p>\n<p>Look at the user interface itself. Are <strong>columns aligned<\/strong> in the layout? Are the margins uniform? If there is a style guide, is it being followed (the right colors, the right fonts, the right point sizes, the right button types, etc.).<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Look at things like a user\" src=\"https:\/\/i0.wp.com\/static.wixstatic.com\/media\/7242c8_355740a8732244018c35531bd8988ddd.jpg?resize=135%2C90&#038;ssl=1\" alt=\"Look at things like a user\" width=\"135\" height=\"90\" \/>Can you understand what you\u2019re supposed to be doing? Sometimes a simple thing like changing the text used for a label on a control makes a big difference. And sometimes adding a tool-tip with an explanation that\u2019s too long for a label makes a big difference.<\/p>\n<h3>Then check out the workflow<\/h3>\n<p>Can you actually get around in the application? Or do you need more navigational controls to take you where you want to go? If it\u2019s frustrating to you, then count on it being frustrating to an end-user.<\/p>\n<p><strong>Use IE.<\/strong> The article says most developers prefer Google Chrome, so that\u2019s the browser where all of their testing is done. He makes it a habit to do all of his testing in Internet Explorer. Each browser has peculiarities, so this exposes a number of bugs that developers never encounter. (<em><strong>rb-<\/strong> Will you have control of what browser the users will access your site from? Don&#8217;t forget about older versions, Firefox, Safari, IE 9 anybody?)<\/em><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-114289\" src=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/Rocket_trike.gif?resize=1%2C1&#038;ssl=1\" alt=\"\" width=\"1\" height=\"1\" \/><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-114291\" title=\"Its not rocket science\" src=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/roecket_trike-e1590174462611-150x140.png?resize=110%2C103&#038;ssl=1\" alt=\"Its not rocket science\" width=\"110\" height=\"103\" srcset=\"https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/roecket_trike-e1590174462611.png?resize=150%2C140&amp;ssl=1 150w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/roecket_trike-e1590174462611.png?resize=75%2C70&amp;ssl=1 75w, https:\/\/i0.wp.com\/rbach.net\/wp-content\/uploads\/roecket_trike-e1590174462611.png?w=363&amp;ssl=1 363w\" sizes=\"auto, (max-width: 110px) 100vw, 110px\" \/>None of the things that are described above are rocket science. A good tester is going to do things substantially more like a rocket scientist than a Business Analyst or Technical Writer will ever achieve\u2014test automation, database comparisons, validating data outputs, calculations, etc. But all the areas above, when tested and fixed, go a long way to <strong>improving the end user\u2019s experience and acceptance of the released product<\/strong>.<\/p>\n<p><strong><em>Rb-<\/em><\/strong><\/p>\n<p><em>This kind of software testing will help the team develop much less fragile or brittle code. That saves a lot of heartache in the long run.<\/em><\/p>\n<p><em>Happy bug hunting!<\/em><\/p>\n<p><strong>Related article<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/web.archive.org\/web\/20180202031835\/https:\/\/www.cio.com\/article\/3215283\/project-management\/how-to-manage-the-fear-of-change-in-it-projects.html\" target=\"_blank\" rel=\"noopener noreferrer\">How to manage the fear of change in IT projects<\/a>\u00a0(<a href=\"https:\/\/www.cio.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CIO.com)<\/a><\/li>\n<\/ul>\n<p><em><a title=\"Ralph Bach\" href=\"https:\/\/wp.me\/P2wgaW-3H\" target=\"_blank\" rel=\"noopener noreferrer\">Ralph Bach<\/a>\u00a0has been in IT long enough to know better and has blogged from his\u00a0<a title=\"Bach Seat\" href=\"https:\/\/rbach.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bach Seat<\/a> about IT, careers, and anything else that catches his attention since 2005. You can follow him on LinkedIn,\u00a0<a href=\"https:\/\/www.facebook.com\/ralph.bach.14\" target=\"_blank\" rel=\"noopener noreferrer\">Facebook<\/a>,\u00a0and\u00a0<a href=\"https:\/\/twitter.com\/rbach48334\" target=\"_blank\" rel=\"noopener noreferrer\">Twitter<\/a>. Email the Bach Seat\u00a0<a href=\"mailto:\/\/bach.seat@gmail.com\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tips for the Project Manager who has to take on the additional tasks of validating and testing software.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1926],"tags":[3046,2212,2013,3060,316],"class_list":["post-86747","post","type-post","status-publish","format-standard","hentry","category-project-management","tag-3046","tag-pmbok","tag-pmi","tag-quality-control-process","tag-testing"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/posts\/86747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/comments?post=86747"}],"version-history":[{"count":14,"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/posts\/86747\/revisions"}],"predecessor-version":[{"id":114288,"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/posts\/86747\/revisions\/114288"}],"wp:attachment":[{"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/media?parent=86747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/categories?post=86747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rbach.net\/index.php\/wp-json\/wp\/v2\/tags?post=86747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}