<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sobac.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NicholasCollins</id>
	<title>SOBAC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sobac.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NicholasCollins"/>
	<link rel="alternate" type="text/html" href="https://sobac.com/wiki/Special:Contributions/NicholasCollins"/>
	<updated>2026-04-21T22:50:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2356</id>
		<title>Software Testing Additional Notes</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2356"/>
		<updated>2019-05-03T02:29:00Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== A lot of people end up in software testing via an oblique path. ==&lt;br /&gt;
*Possibly from a technical background, working as developers&lt;br /&gt;
*Possibly a business background, get to know a company&amp;#039;s products&lt;br /&gt;
*You can take courses on it, but often as part of a larger program, rather than the main major&lt;br /&gt;
*Will that change in the future?&lt;br /&gt;
*Result could be why there is variety in terminology&lt;br /&gt;
&lt;br /&gt;
== Different project managers take different approaches. ==&lt;br /&gt;
*Some sit in on code reviews, test plan reviews, dig in to details&lt;br /&gt;
*Others get their team to report to them at a summary level&lt;br /&gt;
*Project manager will more directly intervene when a high priority situation arises, i.e. testing falling behind schedule, often a good project manager is someone who can keep an eye on testing at a high level and quickly assess an important situation in detail when necessary&lt;br /&gt;
&lt;br /&gt;
== Developers are often expected to do at least some testing of their own ==&lt;br /&gt;
&lt;br /&gt;
*For some technical projects like software upgrades, developers might be recruited to work as testers&lt;br /&gt;
*Developers often do unit testing, sometimes document test plans ahead of time&lt;br /&gt;
*That unit test plan and results are given to testers when they do additional testing - integration testing, regression testing, load testing&lt;br /&gt;
&lt;br /&gt;
== For testers, one challenge is the need to be thorough and deliver on time ==&lt;br /&gt;
*Sometimes, the first, fairly simple tests reveal a number of bugs; this creates concern about staying on schedule&lt;br /&gt;
*Advantage is that at least those bugs were found early&lt;br /&gt;
*It can be good to push hard, maybe put in overtime to get through the first pass of testing, get an idea of where bugs are, start fixing them early.  This can avoid worse time crunch near the end of a project.  Sometimes that can still happen anyway!&lt;br /&gt;
&lt;br /&gt;
== Writing test plans can take a significant amount of time ==&lt;br /&gt;
*Does the project schedule allow for that?&lt;br /&gt;
*How much time will it save alter, if there is a test plan that is thorough and has been peer reviewed and edited?  Often this makes it worth the effort&lt;br /&gt;
*In some situations, time constraints don&amp;#039;t allow it, have to jump in to testing with minimal planning or documenting&lt;br /&gt;
*Some projects end up as a mixture.  A detailed test plan is written and carefully peer reviewed early in the project&lt;br /&gt;
*During the project, unexpected problems and changes in requirements lead to many changes to the code and test plan&lt;br /&gt;
*At that point, there is limited time left in the project schedule, test plans are rough, possibly not peer reviewed&lt;br /&gt;
*It then helps if you have experience, when you&amp;#039;re new to the position it&amp;#039;s harder to &amp;quot;improvise&amp;quot; testing&lt;br /&gt;
&lt;br /&gt;
== Reporting bugs to developers requires tact ==&lt;br /&gt;
*People have worked very hard on the code; you are finding problems with it&lt;br /&gt;
*You are all on the same team with the goal of delivering a good quality product&lt;br /&gt;
*Keep e-mails and bug reports in business style; just describe what happens, provide the steps to re-create the error&lt;br /&gt;
*When reporting bugs, avoid the use of pronouns.  Say, &amp;quot;When I do x, the system does y&amp;quot;, never say &amp;quot;Your code has a problem&amp;quot;&lt;br /&gt;
*But, do use pronouns when giving thanks for good work, acknowledge others in meetings, &amp;quot;Yes, this was a tough bug, thankfully Jon got it fixed yesterday.&amp;quot;&lt;br /&gt;
*Einstein is believed to have said, &amp;quot;Make everything as simple as possible but no simpler&amp;quot;.  May not have been the exact words&lt;br /&gt;
*When doing bug reports, get to the main point quickly, but include the technical details necessary.  Make sure YOU can reliably recreate the error following the same steps &lt;br /&gt;
 &lt;br /&gt;
Calculator&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
Basic format:&lt;br /&gt;
Steps to Re-create:&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;pi&amp;quot; &lt;br /&gt;
&lt;br /&gt;
	Press Clear&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;=&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Expected Results:&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Actual Results&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2.00000001&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
System should be declaring input and response as integers, possibly using float or another type and not doing garbage collection from previous operation?&lt;br /&gt;
 &lt;br /&gt;
*Being very explicit about what was pressed, in what order, matters sometimes - people have habits.  On a keyboard, some use the number pad, others the main keyboard.  If someone turns num lock on or off during bootup as a habit and someone else was on the computer, you could get different results.  &lt;br /&gt;
*When describing a sequence of menu choices, the &amp;quot;-&amp;gt;&amp;quot; characters are helpful, i.e. select Main Menu-&amp;gt;Submenu1-&amp;gt;SubSubmenu1&lt;br /&gt;
*Making  comments, suggestions does not hurt if it only takes a short time.  If it&amp;#039;s similar to another known bug, point that out, too.   &lt;br /&gt;
*Does the system have different states?  What state was it in when the test was done?  &lt;br /&gt;
* Sounds simple but can be tricky, can be easy to forget an important detail - in a web-based system, which browser were you using?  Sometimes you switch between Edge, FireFox and Chrome throughout the day, remember which one you found a bug in, check and see if it happens in other browsers.&lt;br /&gt;
* https://obsproject.com/ - software that can be used to capture videos, including drop menus.  Windows 10&amp;#039;s Game Capture does not include drop menus.&lt;br /&gt;
&lt;br /&gt;
== Other tasks follow testing ==&lt;br /&gt;
*Technical writers have to produce documentation like manuals.  They may want to look at some of the existing documentation.  That may not be the test plan, it could be developer notes or requirements.  Sometimes the tester has worked with those documents a lot, and is asked to assemble them into one place for the technical writer, or directing those people where to find things.&lt;br /&gt;
*The technical writer might want to also be a tester.  In order to write documentation that explains things to the user, the writer has to understand it well, getting their hands on a test system and trying some things helps them do this.&lt;br /&gt;
*The technical writer will have questions for the tester, may want assistance in configuring a system &lt;br /&gt;
*Sometimes testing was done to cover many situations, but the first sales are to customers with specific needs, the technical writer will be focused on that, configuring a system that way&lt;br /&gt;
*It helps to label things, the tester might know about the system configuration but the technical writer doesn&amp;#039;t.  &lt;br /&gt;
*Sometimes the technical writer has industry experience, ends up trying some additional tests and finds bugs.  Then the tester follows up to write up the bug and get it fixed.&lt;br /&gt;
&lt;br /&gt;
== Some professionals actively dislike textbooks ==&lt;br /&gt;
*Some textbooks for software testing, as is the case for books in other technical fields, have a tendency towards &amp;quot;perfect worldism&amp;quot;&lt;br /&gt;
*They will describe techniques and show examples of using those techniques that are very time consuming to do.&lt;br /&gt;
*They might be good techniques that will capture lots of bugs if you apply them&lt;br /&gt;
*On a real project, time is limited, you have to make judgment calls about prioritizing things to meet deadlines&lt;br /&gt;
*Don&amp;#039;t want to tell your manager you spent hours on this marvellous documentation and planning technique but got no actual tests done&lt;br /&gt;
*So why pay attention to text books?&lt;br /&gt;
*Even if you can&amp;#039;t completely apply the techniques they describe exactly as outlined, you might get ideas you can partially apply that do help raise the quality of what you deliver&lt;br /&gt;
*Such as - Different types of program maps - even a partial one might get you thinking about test cases you want to do, maybe apply these techniques in depth for especially important or complex parts of a system if not everything&lt;br /&gt;
*You may adapt/adjust these techniques to suit your situation&lt;br /&gt;
*Can also give you the idea of the number of test there are in theory, including paths&lt;br /&gt;
&lt;br /&gt;
== On YouTube, James Bach has some interesting talks ==&lt;br /&gt;
*https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
*Asks people how they would test things, pushes hard for people to explain why&lt;br /&gt;
*Sometimes testers have ideas/intuitions that are on the right track, can you explain why?&lt;br /&gt;
*He talks about a system that will work 100 - 250 VAC&lt;br /&gt;
*So why test, say, 90 V?  It&amp;#039;s not in the specs, we know it won&amp;#039;t work&lt;br /&gt;
*But will it &amp;quot;fail gracefully&amp;quot;?  &lt;br /&gt;
*(There is not always time for that in the workplace, but if you just follow your intuition you might find important bugs)&lt;br /&gt;
&lt;br /&gt;
== Bach also goes through an example and asks how many test cases would you do? ==&lt;br /&gt;
*Raises questions about what the project does&lt;br /&gt;
*Decision testing, boundary testing, predicate testing&lt;br /&gt;
*With more experience, you can often think of more tests right off, i.e. &amp;quot;improvise&amp;quot;&lt;br /&gt;
*Emphasizes the fact that a flowchart, document, etc. is a representation, not the actual system&lt;br /&gt;
&lt;br /&gt;
== When do you feel pride/satisfaction in your work? ==&lt;br /&gt;
*Some testers say they &amp;quot;high-five&amp;quot; each other when they find a really nasty, obscure, or complicated bug&lt;br /&gt;
*That is when they feel they are adding a lot of value&lt;br /&gt;
*Not all testers agree&lt;br /&gt;
*For some, the time for &amp;quot;high-fives&amp;quot; are after the bug has been found, reported, fixed, and the system successfully retested, and the &amp;quot;high-five&amp;quot; is shared with the developers&lt;br /&gt;
*Everyone on the team wants the project to be a success!&lt;br /&gt;
*Also fits in with having tact and consideration for others&lt;br /&gt;
&lt;br /&gt;
== Load testing ==&lt;br /&gt;
*After testing different parts of a system and making sure they work together well, you may want to do load testing&lt;br /&gt;
*Maximize the amount of transactions occurring&lt;br /&gt;
*Planning can be very helpful here, keep track of the order you did things, test systematically, expected results, otherwise it&amp;#039;s too easy to get lost in a big pile of data&lt;br /&gt;
*This means making sure no transactions are dropped&lt;br /&gt;
*Or, in financial systems, totals add up, reports balance&lt;br /&gt;
*Testing Tools can be used for this&lt;br /&gt;
*Ironically, Testing Tools are not always very well tested&lt;br /&gt;
*They might be &amp;quot;quick and dirty&amp;quot;, but as long as the tester who made them can use them to serve a main purpose well enough, then the real, main tests get done&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Monkey Testing&amp;quot; ==&lt;br /&gt;
*Can be important&lt;br /&gt;
*Bach talks about examples, able to break right into a computer, produce error boxes with no text&lt;br /&gt;
*Using Ctrl-A Ctrl-C Ctrl-V, put a massive amount of text into an input field, see what happens&lt;br /&gt;
*Try moving really fast pressing buttons&lt;br /&gt;
*There is one big catch to this kind of testing&lt;br /&gt;
*Can you reliably recreate the error?  If you were frantically pressing buttons fast, and timing is part of the issue, that can be very hard&lt;br /&gt;
[[File:3 - EmptyErrorResized.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:4 - SystemEntryExampleResized.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing similar things at once ==&lt;br /&gt;
*Suppose you have a system that allows you to set countdown alarms, like scheduling employees&amp;#039; breaks&lt;br /&gt;
*Each employee has a timer object&lt;br /&gt;
*Each object is therefore distinct&lt;br /&gt;
*But suppose management has a screen they use to see all employee schedules and minutes left until their breaks&lt;br /&gt;
*Executive can shorten or lengthen that time, they have a screen Management has access to&lt;br /&gt;
*That screen loads an employee day schedule object&lt;br /&gt;
*Copy that data into a report for that manager&amp;#039;s daily activity, i.e.&lt;br /&gt;
 &lt;br /&gt;
Schedule Adjustments:&lt;br /&gt;
PayRoll Clerk - 10 minute delay&lt;br /&gt;
Production manager - 15 minute delay&lt;br /&gt;
 &lt;br /&gt;
Local variables cleared in between these two transactions&lt;br /&gt;
What if there&amp;#039;s just one break room, an alert is sounded when your break is over.&lt;br /&gt;
If you have a flag that says &amp;quot;BreakTimeOver = true&amp;quot;, it has to be reset&lt;br /&gt;
&lt;br /&gt;
== What if functions DON&amp;#039;T appear to have much in common? ==&lt;br /&gt;
*Some functions, like above, are about tracking time&lt;br /&gt;
*Others keep track of that day&amp;#039;s production, how many units produced&lt;br /&gt;
*Very separate things, but all part of the same system&lt;br /&gt;
*Run them all with a heavy load for a while, see if the system responds well, there is enough memory&lt;br /&gt;
*Different developers may have worked on these parts, may not have tested all together&lt;br /&gt;
&lt;br /&gt;
== Button availability ==&lt;br /&gt;
*Many companies will use this, document it as part of a project plan&lt;br /&gt;
*Is important to test&lt;br /&gt;
*Even a small number of buttons can create many paths&lt;br /&gt;
*Especially important for security, don&amp;#039;t allow login attempts without credentials being entered&lt;br /&gt;
*You don&amp;#039;t have to have lots of buttons in a window for this to become time consuming and a lot of hard work&lt;br /&gt;
&lt;br /&gt;
== Consistent look and feel ==&lt;br /&gt;
*Sometimes errors occur that are hard to spot - fonts might be very similar, but slightly different, just one size larger or smaller, shadow effects&lt;br /&gt;
&lt;br /&gt;
== Resizing windows ==&lt;br /&gt;
*This can cause data to become lost, off screen, is a good idea to stretch windows, maximize, minimize, resize&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
*What information is supposed to be in them?  What is definitely NOT supposed to be there?  Certain security things should NOT be there, check and make sure.  Sometimes developers log things for debug purposes but this should be cleaned up, can be very important!&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
*Do you leave a system running overnight?  Over a weekend?  Over a holiday weekend?  For weeks?&lt;br /&gt;
*Some systems do have to be running around the clock.  &lt;br /&gt;
*Do you leave it running with a lot of activity for a long time?  Is that realistic?  &lt;br /&gt;
*If something goes wrong in the night, how hard is it to track down the cause of a problem hours later, when you get to work in the morning?&lt;br /&gt;
&lt;br /&gt;
== Updating during a project ==&lt;br /&gt;
*Testers might be given whatever&amp;#039;s available to start testing.  This might be prototypes, partly developed items&lt;br /&gt;
*Updates are provided during a project&lt;br /&gt;
*Installing updates can take significant amounts of time&lt;br /&gt;
*It is important to work with developers to manage time.  If several updates are coming soon, maybe wait until several are ready, install them, then resume testing rather than have multiple interruptions to install several updates&lt;br /&gt;
*If an update has to be applied to many components, try a few first, do at least some basic testing before investing time in updating whole system&lt;br /&gt;
&lt;br /&gt;
== Graceful failures ==&lt;br /&gt;
*What if a component breaks, does the rest of the system respond gracefully?&lt;br /&gt;
*If a load test does cause errors, how well is it handled?  Load tests can make systems slow, resulting in a system appearing to &amp;quot;hang&amp;quot; rather than fail gracefully&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NPSA]]&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=File:4_-_SystemEntryExampleResized.png&amp;diff=2355</id>
		<title>File:4 - SystemEntryExampleResized.png</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=File:4_-_SystemEntryExampleResized.png&amp;diff=2355"/>
		<updated>2019-05-03T02:27:31Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=File:3_-_EmptyErrorResized.png&amp;diff=2354</id>
		<title>File:3 - EmptyErrorResized.png</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=File:3_-_EmptyErrorResized.png&amp;diff=2354"/>
		<updated>2019-05-03T02:26:23Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing/Meeting_Notes_2019-04-08&amp;diff=2353</id>
		<title>Software Testing/Meeting Notes 2019-04-08</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing/Meeting_Notes_2019-04-08&amp;diff=2353"/>
		<updated>2019-05-03T02:25:38Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Software Testing}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Resources ====&lt;br /&gt;
&lt;br /&gt;
* [https://www.techsoupcanada.ca/en/directory/334 TechSoup Canada catalogue: Developer Software]&lt;br /&gt;
* [https://obsproject.com/ OBS Project] - software that is good for capturing videos of tests including drop menus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of James Bach&amp;#039;s [https://www.youtube.com/watch?v=ILkT_HV9DVU talks on YouTube]&lt;br /&gt;
{{#evu:https://www.youtube.com/watch?v=ILkT_HV9DVU  | dimensions=640 | alignment=center}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Software Testing Additional Notes]] - Nicholas Collins&amp;#039; presentation notes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meeting Notes ====&lt;br /&gt;
* Introductions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nicholas Collins&lt;br /&gt;
** Software tester for a few years, knowledge of how &amp;#039;&amp;#039;his&amp;#039;&amp;#039; company works&lt;br /&gt;
** But two years isn&amp;#039;t a long time compared to some software testers&lt;br /&gt;
** Nick has prepared notes, will be presenting slightly differently from other KWNPSA sessions&lt;br /&gt;
** SysAdmin in insurance industry; laid off (as are many of us); back to school to upgrade IT skills&lt;br /&gt;
** Uses Visual Studio, C#, other languages&lt;br /&gt;
** People he&amp;#039;s met were developers, or business-specific skills; when software testers are needed these people are thrust into the role&lt;br /&gt;
** This might change as more universities offer software testing as a major&lt;br /&gt;
** There are very few courses or certificates in software testing, more prevalent in the US&lt;br /&gt;
*** but Fanshawe college in London has a certificate program&lt;br /&gt;
** Some institutions have a couple of courses in tech writing, project management, quality management; maybe a night course in software quality testing&lt;br /&gt;
** Without academic rigour, different people use different terminology, nomenclature&lt;br /&gt;
*** &amp;quot;Should I know what all these different terms mean?&amp;quot; But it&amp;#039;s fairly common with other software testers Nick has spoken to&lt;br /&gt;
** At Microsoft, developers use their development skills to write tests.  Needs more skills than just coding&lt;br /&gt;
*** Microsoft has internal courses to train testers how to test software&lt;br /&gt;
*** Get promoted to full developer once you&amp;#039;ve proven you can write tests&lt;br /&gt;
** people use Terminology like &amp;quot;Post-mortem&amp;quot; (although nobody dies), mix up &amp;quot;Milestone&amp;quot; and &amp;quot;Benchmark&amp;quot;, &amp;amp;c.&lt;br /&gt;
** Software testing is the start for a developer&amp;#039;s career, then to DevOps&lt;br /&gt;
*** Does this mean the most junior, inexperienced programmers are responsible for testing software?&lt;br /&gt;
** Nick: large companies use junior testers to run tests, senior testers to supervise&lt;br /&gt;
** During an upgrade Nick (a programmer at the time) did testing for the Database Analyst&lt;br /&gt;
*** But a junior intern was assigned to that role as well, just to gain experience.&lt;br /&gt;
*** Worked out details at a high level, then applied tests to get results&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Project Managers take different approaches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You can always think of more tests&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** It&amp;#039;s a fine balance between staying on schedule and being thorough&lt;br /&gt;
** Walkthroughs and working in a team can be helpful&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Some testing instructors do not like teaching from texts&lt;br /&gt;
** eg. &amp;quot;Software Testing&amp;quot; by Yogesh Singh&lt;br /&gt;
** But Nicholas gets good ideas from texts, doesn&amp;#039;t agree with those testing instructors&lt;br /&gt;
** THe problem is that the authors suffer from &amp;quot;Perfect Worldism&amp;quot;&lt;br /&gt;
*** A world where there is unlimited time and money, and the perfect tests can be developed&lt;br /&gt;
** Nicholas has experience with sticky problems, gets ideas from texts to adapt to his problem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Party talk: Software tester does not lead to stimulating conversation&lt;br /&gt;
** YouTube presenter on software testing is not dull! https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Even the simplest test &amp;quot;is A &amp;lt; 70 ?&amp;quot; can have seven or eight tests&lt;br /&gt;
[[File:FlowchartExampleResized.png]]&lt;br /&gt;
** Test results, but also overflows, boundaries, different data types&lt;br /&gt;
** Input validation can require many tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Working with other people, eg. technical writers&lt;br /&gt;
** For them to understand the software they&amp;#039;ll play with the software, and may create unanticipated conditions&lt;br /&gt;
** Everyone can be a software tester to some degree: Project manager, developer, writer. Even sales?&lt;br /&gt;
** Sometimes testers find problems with usability as they&amp;#039;re running tests; not part of the test suite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How effective are some of these ad-hoc testers?&lt;br /&gt;
** Is there a bias? Do they have some incentive to pass tests even when there are problems?&lt;br /&gt;
*** Sometimes a QA will hold back tests that would have been better to give to the developer in the first place&lt;br /&gt;
** Accessibility testing is a new skill for QA, may become a testing requirement&lt;br /&gt;
** Business Analyst (BA), developer and tester make a good team&lt;br /&gt;
*** Sometimes the process of testing will identify the need for more testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Reporting bugs&lt;br /&gt;
** Requires consideration, tact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Test plans may need to be developed quickly&lt;br /&gt;
** But near the end of a project when time is tight there may not be time to develop tests&lt;br /&gt;
** So quality of code may suffer near the end of the project&lt;br /&gt;
*** Breaking things during testing that no-one has time to fix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Automated testing?&lt;br /&gt;
** Nick has experience with automated regression testing&lt;br /&gt;
** Automated regression testing reduces the introduction of new bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open Broadcaster Software&lt;br /&gt;
** Used to catch all activity during user testing&lt;br /&gt;
** Also use Virtual Box recorder uses host to capture all the output on the VM screen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Monkey Testing&amp;quot;&lt;br /&gt;
** Also &amp;quot;fuzz testing&amp;quot; or &amp;quot;fuzzing&amp;quot;&lt;br /&gt;
** Fill all fields, try to overflow, pound on the keyboard, click as fast as possible&lt;br /&gt;
*** But this this does not lead to reproducible errors (fine timing errors)&lt;br /&gt;
*** Although some testers claim they can reproduce&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pride in finding bugs?&lt;br /&gt;
** Nick finds that the &amp;quot;high five&amp;quot; time should occur only after the entire team has identified, reported, documented, and fixed the error, and re-tested&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Load testing&lt;br /&gt;
** Hitting a system with a large number of transactions, &amp;amp;c.&lt;br /&gt;
** But a bogged down system may not be writing to logs, making analysis difficult&lt;br /&gt;
** A benefit in load testing is adding assertions, find issues with threads&lt;br /&gt;
*** Assertions and Singletons...&lt;br /&gt;
** Be sure to validate the output even when just testing for capacity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick has written a test for XML testing&lt;br /&gt;
** But the code Nick wrote was not well tested at all! Oh, the irony!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Q: Do you use debugger software like GDB to examine the flow of code?&lt;br /&gt;
* A: Not common, but becoming more prevalent.&lt;br /&gt;
** Certainly having a debugger to throw at the code is nice to have&lt;br /&gt;
** But much testing is done with the software under test as a black box, just examine the input and the expected output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick speaks of the complexity of software testing.&lt;br /&gt;
** One thing works fine by itself, and other thing does too, but do they work together?&lt;br /&gt;
** Different software on different platform needs to interoperate, but sometimes differences in date formats causes problems&lt;br /&gt;
*** although each platform by itself passed all tests&lt;br /&gt;
** Dealing with currencies, eg. USD and CAD, and GBP&lt;br /&gt;
** Dealing with leap years and 29 February&lt;br /&gt;
** General rule: Anything date sensitive needs to test for leap years&lt;br /&gt;
*** and time zones! Anything dealing with calendars needs to worry about time zones&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* What happens internationally when different countries need to interoperate?&lt;br /&gt;
** Companies have service contracts that define how the service is implemented&lt;br /&gt;
*** If the system is changed, the contract defines who is responsible for continued interoperation&lt;br /&gt;
*** If I make a change and it breaks your system, it&amp;#039;s your fault for not defining the contract accurately&lt;br /&gt;
*** called &amp;quot;spring contracts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick gives an example from James ---- YouTube video (&amp;quot;nominal input voltage is 100VAC to 250VAC&amp;quot;)&lt;br /&gt;
[[File:VoltageExampleResized.png]]&lt;br /&gt;
** &amp;quot;Test the nominal range&amp;quot; is an incomplete answer&lt;br /&gt;
** Also need to test outside the range&lt;br /&gt;
** The user manual may give advice not to go outside the nominal range, but users don&amp;#039;t necessarily read the manual&lt;br /&gt;
** So, does the system fail gracefully outside the nominal range?&lt;br /&gt;
** This is the function of the software tester, to design the test to ensure that software or equipment is failsafe&lt;br /&gt;
*** eg. for medical equipment&lt;br /&gt;
*** How much money is available to fry the device under test?  Some prototypes may be &amp;#039;&amp;#039;&amp;#039;really&amp;#039;&amp;#039;&amp;#039; expensive&lt;br /&gt;
*** Many examples of people damaging electronics with incorrect application of voltage!&lt;br /&gt;
** It&amp;#039;s good for testers to think outside the parameters of the system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Testing to ensure system has a consistent look and feel&lt;br /&gt;
** eg. fonts on some menus were different&lt;br /&gt;
*** Is that a software testers responsibility? Sometimes as an additional task&lt;br /&gt;
*** There are tools (overlays, templates) to find these issues&lt;br /&gt;
** Window resizing can make the application fail, but there need to be limits for those tests&lt;br /&gt;
** Testing for &amp;quot;greyed out&amp;quot; functions can be time consuming&lt;br /&gt;
*** When a function is available when it shouldn&amp;#039;t be can result in errors&lt;br /&gt;
** These are general things for a tester to keep in mind&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Systems that have features which have little to do with each other&lt;br /&gt;
** Easy to test they&amp;#039;re not contending for resources, &amp;amp;c.&lt;br /&gt;
** But still important to run these features simultaneous to shake loose bugs, eg. memory allocation, concurrent DB access&lt;br /&gt;
** Perhaps a simple monitor with limited functions: But what if something goes wrong, does the device report an error?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Client-side data validation: All testing needs to be duplicated at the server to ensure malusers don&amp;#039;t bypass client-side validation&lt;br /&gt;
** But that increases load on the server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** Logs may indicate problems with the way the code executes, eg. repeated log entries indicate an invalid loop&lt;br /&gt;
** Circular reasoning: How can the logs from software under test be considered &lt;br /&gt;
*** Logs are only one step, begin the process of analysis&lt;br /&gt;
*** NewRelic will test user experience (surveillance software)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick has found bugs because the test suites are well designed&lt;br /&gt;
** But at least half the time the bugs discovered were found in spite of the test, which was not designed to find that kind of bug&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Q&amp;amp;A&lt;br /&gt;
** Is the developer + tester model usable?&lt;br /&gt;
*** May be a bit scary for shops not set up for that collaborative arrangement&lt;br /&gt;
** Nick says to just forge ahead.&lt;br /&gt;
*** Having experience is good, but can also develop that experience in-house&lt;br /&gt;
** Worries about the coming requirements for accessibility for software&lt;br /&gt;
*** May take changes in coding practices (use POSH: Plain Ol&amp;#039; Semantic HTML instead of Javascripted forms)&lt;br /&gt;
*** Jurisdictional differences may be difficult to deal with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to: [[Software Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Category:KWNPSA Meeting Notes]]&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=File:FlowchartExampleResized.png&amp;diff=2352</id>
		<title>File:FlowchartExampleResized.png</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=File:FlowchartExampleResized.png&amp;diff=2352"/>
		<updated>2019-05-03T02:24:40Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing/Meeting_Notes_2019-04-08&amp;diff=2351</id>
		<title>Software Testing/Meeting Notes 2019-04-08</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing/Meeting_Notes_2019-04-08&amp;diff=2351"/>
		<updated>2019-05-03T02:23:51Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Software Testing}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Resources ====&lt;br /&gt;
&lt;br /&gt;
* [https://www.techsoupcanada.ca/en/directory/334 TechSoup Canada catalogue: Developer Software]&lt;br /&gt;
* [https://obsproject.com/ OBS Project] - software that is good for capturing videos of tests including drop menus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of James Bach&amp;#039;s [https://www.youtube.com/watch?v=ILkT_HV9DVU talks on YouTube]&lt;br /&gt;
{{#evu:https://www.youtube.com/watch?v=ILkT_HV9DVU  | dimensions=640 | alignment=center}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Software Testing Additional Notes]] - Nicholas Collins&amp;#039; presentation notes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Meeting Notes ====&lt;br /&gt;
* Introductions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nicholas Collins&lt;br /&gt;
** Software tester for a few years, knowledge of how &amp;#039;&amp;#039;his&amp;#039;&amp;#039; company works&lt;br /&gt;
** But two years isn&amp;#039;t a long time compared to some software testers&lt;br /&gt;
** Nick has prepared notes, will be presenting slightly differently from other KWNPSA sessions&lt;br /&gt;
** SysAdmin in insurance industry; laid off (as are many of us); back to school to upgrade IT skills&lt;br /&gt;
** Uses Visual Studio, C#, other languages&lt;br /&gt;
** People he&amp;#039;s met were developers, or business-specific skills; when software testers are needed these people are thrust into the role&lt;br /&gt;
** This might change as more universities offer software testing as a major&lt;br /&gt;
** There are very few courses or certificates in software testing, more prevalent in the US&lt;br /&gt;
*** but Fanshawe college in London has a certificate program&lt;br /&gt;
** Some institutions have a couple of courses in tech writing, project management, quality management; maybe a night course in software quality testing&lt;br /&gt;
** Without academic rigour, different people use different terminology, nomenclature&lt;br /&gt;
*** &amp;quot;Should I know what all these different terms mean?&amp;quot; But it&amp;#039;s fairly common with other software testers Nick has spoken to&lt;br /&gt;
** At Microsoft, developers use their development skills to write tests.  Needs more skills than just coding&lt;br /&gt;
*** Microsoft has internal courses to train testers how to test software&lt;br /&gt;
*** Get promoted to full developer once you&amp;#039;ve proven you can write tests&lt;br /&gt;
** people use Terminology like &amp;quot;Post-mortem&amp;quot; (although nobody dies), mix up &amp;quot;Milestone&amp;quot; and &amp;quot;Benchmark&amp;quot;, &amp;amp;c.&lt;br /&gt;
** Software testing is the start for a developer&amp;#039;s career, then to DevOps&lt;br /&gt;
*** Does this mean the most junior, inexperienced programmers are responsible for testing software?&lt;br /&gt;
** Nick: large companies use junior testers to run tests, senior testers to supervise&lt;br /&gt;
** During an upgrade Nick (a programmer at the time) did testing for the Database Analyst&lt;br /&gt;
*** But a junior intern was assigned to that role as well, just to gain experience.&lt;br /&gt;
*** Worked out details at a high level, then applied tests to get results&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Project Managers take different approaches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You can always think of more tests&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** It&amp;#039;s a fine balance between staying on schedule and being thorough&lt;br /&gt;
** Walkthroughs and working in a team can be helpful&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Some testing instructors do not like teaching from texts&lt;br /&gt;
** eg. &amp;quot;Software Testing&amp;quot; by Yogesh Singh&lt;br /&gt;
** But Nicholas gets good ideas from texts, doesn&amp;#039;t agree with those testing instructors&lt;br /&gt;
** THe problem is that the authors suffer from &amp;quot;Perfect Worldism&amp;quot;&lt;br /&gt;
*** A world where there is unlimited time and money, and the perfect tests can be developed&lt;br /&gt;
** Nicholas has experience with sticky problems, gets ideas from texts to adapt to his problem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Party talk: Software tester does not lead to stimulating conversation&lt;br /&gt;
** YouTube presenter on software testing is not dull! https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Even the simplest test &amp;quot;is A &amp;lt; 70 ?&amp;quot; can have seven or eight tests&lt;br /&gt;
** Test results, but also overflows, boundaries, different data types&lt;br /&gt;
** Input validation can require many tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Working with other people, eg. technical writers&lt;br /&gt;
** For them to understand the software they&amp;#039;ll play with the software, and may create unanticipated conditions&lt;br /&gt;
** Everyone can be a software tester to some degree: Project manager, developer, writer. Even sales?&lt;br /&gt;
** Sometimes testers find problems with usability as they&amp;#039;re running tests; not part of the test suite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How effective are some of these ad-hoc testers?&lt;br /&gt;
** Is there a bias? Do they have some incentive to pass tests even when there are problems?&lt;br /&gt;
*** Sometimes a QA will hold back tests that would have been better to give to the developer in the first place&lt;br /&gt;
** Accessibility testing is a new skill for QA, may become a testing requirement&lt;br /&gt;
** Business Analyst (BA), developer and tester make a good team&lt;br /&gt;
*** Sometimes the process of testing will identify the need for more testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Reporting bugs&lt;br /&gt;
** Requires consideration, tact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Test plans may need to be developed quickly&lt;br /&gt;
** But near the end of a project when time is tight there may not be time to develop tests&lt;br /&gt;
** So quality of code may suffer near the end of the project&lt;br /&gt;
*** Breaking things during testing that no-one has time to fix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Automated testing?&lt;br /&gt;
** Nick has experience with automated regression testing&lt;br /&gt;
** Automated regression testing reduces the introduction of new bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open Broadcaster Software&lt;br /&gt;
** Used to catch all activity during user testing&lt;br /&gt;
** Also use Virtual Box recorder uses host to capture all the output on the VM screen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Monkey Testing&amp;quot;&lt;br /&gt;
** Also &amp;quot;fuzz testing&amp;quot; or &amp;quot;fuzzing&amp;quot;&lt;br /&gt;
** Fill all fields, try to overflow, pound on the keyboard, click as fast as possible&lt;br /&gt;
*** But this this does not lead to reproducible errors (fine timing errors)&lt;br /&gt;
*** Although some testers claim they can reproduce&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pride in finding bugs?&lt;br /&gt;
** Nick finds that the &amp;quot;high five&amp;quot; time should occur only after the entire team has identified, reported, documented, and fixed the error, and re-tested&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Load testing&lt;br /&gt;
** Hitting a system with a large number of transactions, &amp;amp;c.&lt;br /&gt;
** But a bogged down system may not be writing to logs, making analysis difficult&lt;br /&gt;
** A benefit in load testing is adding assertions, find issues with threads&lt;br /&gt;
*** Assertions and Singletons...&lt;br /&gt;
** Be sure to validate the output even when just testing for capacity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick has written a test for XML testing&lt;br /&gt;
** But the code Nick wrote was not well tested at all! Oh, the irony!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Q: Do you use debugger software like GDB to examine the flow of code?&lt;br /&gt;
* A: Not common, but becoming more prevalent.&lt;br /&gt;
** Certainly having a debugger to throw at the code is nice to have&lt;br /&gt;
** But much testing is done with the software under test as a black box, just examine the input and the expected output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick speaks of the complexity of software testing.&lt;br /&gt;
** One thing works fine by itself, and other thing does too, but do they work together?&lt;br /&gt;
** Different software on different platform needs to interoperate, but sometimes differences in date formats causes problems&lt;br /&gt;
*** although each platform by itself passed all tests&lt;br /&gt;
** Dealing with currencies, eg. USD and CAD, and GBP&lt;br /&gt;
** Dealing with leap years and 29 February&lt;br /&gt;
** General rule: Anything date sensitive needs to test for leap years&lt;br /&gt;
*** and time zones! Anything dealing with calendars needs to worry about time zones&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* What happens internationally when different countries need to interoperate?&lt;br /&gt;
** Companies have service contracts that define how the service is implemented&lt;br /&gt;
*** If the system is changed, the contract defines who is responsible for continued interoperation&lt;br /&gt;
*** If I make a change and it breaks your system, it&amp;#039;s your fault for not defining the contract accurately&lt;br /&gt;
*** called &amp;quot;spring contracts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick gives an example from James ---- YouTube video (&amp;quot;nominal input voltage is 100VAC to 250VAC&amp;quot;)&lt;br /&gt;
[[File:VoltageExampleResized.png]]&lt;br /&gt;
** &amp;quot;Test the nominal range&amp;quot; is an incomplete answer&lt;br /&gt;
** Also need to test outside the range&lt;br /&gt;
** The user manual may give advice not to go outside the nominal range, but users don&amp;#039;t necessarily read the manual&lt;br /&gt;
** So, does the system fail gracefully outside the nominal range?&lt;br /&gt;
** This is the function of the software tester, to design the test to ensure that software or equipment is failsafe&lt;br /&gt;
*** eg. for medical equipment&lt;br /&gt;
*** How much money is available to fry the device under test?  Some prototypes may be &amp;#039;&amp;#039;&amp;#039;really&amp;#039;&amp;#039;&amp;#039; expensive&lt;br /&gt;
*** Many examples of people damaging electronics with incorrect application of voltage!&lt;br /&gt;
** It&amp;#039;s good for testers to think outside the parameters of the system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Testing to ensure system has a consistent look and feel&lt;br /&gt;
** eg. fonts on some menus were different&lt;br /&gt;
*** Is that a software testers responsibility? Sometimes as an additional task&lt;br /&gt;
*** There are tools (overlays, templates) to find these issues&lt;br /&gt;
** Window resizing can make the application fail, but there need to be limits for those tests&lt;br /&gt;
** Testing for &amp;quot;greyed out&amp;quot; functions can be time consuming&lt;br /&gt;
*** When a function is available when it shouldn&amp;#039;t be can result in errors&lt;br /&gt;
** These are general things for a tester to keep in mind&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Systems that have features which have little to do with each other&lt;br /&gt;
** Easy to test they&amp;#039;re not contending for resources, &amp;amp;c.&lt;br /&gt;
** But still important to run these features simultaneous to shake loose bugs, eg. memory allocation, concurrent DB access&lt;br /&gt;
** Perhaps a simple monitor with limited functions: But what if something goes wrong, does the device report an error?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Client-side data validation: All testing needs to be duplicated at the server to ensure malusers don&amp;#039;t bypass client-side validation&lt;br /&gt;
** But that increases load on the server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** Logs may indicate problems with the way the code executes, eg. repeated log entries indicate an invalid loop&lt;br /&gt;
** Circular reasoning: How can the logs from software under test be considered &lt;br /&gt;
*** Logs are only one step, begin the process of analysis&lt;br /&gt;
*** NewRelic will test user experience (surveillance software)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick has found bugs because the test suites are well designed&lt;br /&gt;
** But at least half the time the bugs discovered were found in spite of the test, which was not designed to find that kind of bug&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Q&amp;amp;A&lt;br /&gt;
** Is the developer + tester model usable?&lt;br /&gt;
*** May be a bit scary for shops not set up for that collaborative arrangement&lt;br /&gt;
** Nick says to just forge ahead.&lt;br /&gt;
*** Having experience is good, but can also develop that experience in-house&lt;br /&gt;
** Worries about the coming requirements for accessibility for software&lt;br /&gt;
*** May take changes in coding practices (use POSH: Plain Ol&amp;#039; Semantic HTML instead of Javascripted forms)&lt;br /&gt;
*** Jurisdictional differences may be difficult to deal with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to: [[Software Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Category:KWNPSA Meeting Notes]]&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=File:VoltageExampleResized.png&amp;diff=2350</id>
		<title>File:VoltageExampleResized.png</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=File:VoltageExampleResized.png&amp;diff=2350"/>
		<updated>2019-05-03T02:20:57Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2349</id>
		<title>Software Testing Additional Notes</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2349"/>
		<updated>2019-05-03T02:04:52Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== A lot of people end up in software testing via an oblique path. ==&lt;br /&gt;
*Possibly from a technical background, working as developers&lt;br /&gt;
*Possibly a business background, get to know a company&amp;#039;s products&lt;br /&gt;
*You can take courses on it, but often as part of a larger program, rather than the main major&lt;br /&gt;
*Will that change in the future?&lt;br /&gt;
*Result could be why there is variety in terminology&lt;br /&gt;
&lt;br /&gt;
== Different project managers take different approaches. ==&lt;br /&gt;
*Some sit in on code reviews, test plan reviews, dig in to details&lt;br /&gt;
*Others get their team to report to them at a summary level&lt;br /&gt;
*Project manager will more directly intervene when a high priority situation arises, i.e. testing falling behind schedule, often a good project manager is someone who can keep an eye on testing at a high level and quickly assess an important situation in detail when necessary&lt;br /&gt;
&lt;br /&gt;
== Developers are often expected to do at least some testing of their own ==&lt;br /&gt;
&lt;br /&gt;
*For some technical projects like software upgrades, developers might be recruited to work as testers&lt;br /&gt;
*Developers often do unit testing, sometimes document test plans ahead of time&lt;br /&gt;
*That unit test plan and results are given to testers when they do additional testing - integration testing, regression testing, load testing&lt;br /&gt;
&lt;br /&gt;
== For testers, one challenge is the need to be thorough and deliver on time ==&lt;br /&gt;
*Sometimes, the first, fairly simple tests reveal a number of bugs; this creates concern about staying on schedule&lt;br /&gt;
*Advantage is that at least those bugs were found early&lt;br /&gt;
*It can be good to push hard, maybe put in overtime to get through the first pass of testing, get an idea of where bugs are, start fixing them early.  This can avoid worse time crunch near the end of a project.  Sometimes that can still happen anyway!&lt;br /&gt;
&lt;br /&gt;
== Writing test plans can take a significant amount of time ==&lt;br /&gt;
*Does the project schedule allow for that?&lt;br /&gt;
*How much time will it save alter, if there is a test plan that is thorough and has been peer reviewed and edited?  Often this makes it worth the effort&lt;br /&gt;
*In some situations, time constraints don&amp;#039;t allow it, have to jump in to testing with minimal planning or documenting&lt;br /&gt;
*Some projects end up as a mixture.  A detailed test plan is written and carefully peer reviewed early in the project&lt;br /&gt;
*During the project, unexpected problems and changes in requirements lead to many changes to the code and test plan&lt;br /&gt;
*At that point, there is limited time left in the project schedule, test plans are rough, possibly not peer reviewed&lt;br /&gt;
*It then helps if you have experience, when you&amp;#039;re new to the position it&amp;#039;s harder to &amp;quot;improvise&amp;quot; testing&lt;br /&gt;
&lt;br /&gt;
== Reporting bugs to developers requires tact ==&lt;br /&gt;
*People have worked very hard on the code; you are finding problems with it&lt;br /&gt;
*You are all on the same team with the goal of delivering a good quality product&lt;br /&gt;
*Keep e-mails and bug reports in business style; just describe what happens, provide the steps to re-create the error&lt;br /&gt;
*When reporting bugs, avoid the use of pronouns.  Say, &amp;quot;When I do x, the system does y&amp;quot;, never say &amp;quot;Your code has a problem&amp;quot;&lt;br /&gt;
*But, do use pronouns when giving thanks for good work, acknowledge others in meetings, &amp;quot;Yes, this was a tough bug, thankfully Jon got it fixed yesterday.&amp;quot;&lt;br /&gt;
*Einstein is believed to have said, &amp;quot;Make everything as simple as possible but no simpler&amp;quot;.  May not have been the exact words&lt;br /&gt;
*When doing bug reports, get to the main point quickly, but include the technical details necessary.  Make sure YOU can reliably recreate the error following the same steps &lt;br /&gt;
 &lt;br /&gt;
Calculator&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
Basic format:&lt;br /&gt;
Steps to Re-create:&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;pi&amp;quot; &lt;br /&gt;
&lt;br /&gt;
	Press Clear&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;=&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Expected Results:&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Actual Results&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2.00000001&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
System should be declaring input and response as integers, possibly using float or another type and not doing garbage collection from previous operation?&lt;br /&gt;
 &lt;br /&gt;
*Being very explicit about what was pressed, in what order, matters sometimes - people have habits.  On a keyboard, some use the number pad, others the main keyboard.  If someone turns num lock on or off during bootup as a habit and someone else was on the computer, you could get different results.  &lt;br /&gt;
*When describing a sequence of menu choices, the &amp;quot;-&amp;gt;&amp;quot; characters are helpful, i.e. select Main Menu-&amp;gt;Submenu1-&amp;gt;SubSubmenu1&lt;br /&gt;
*Making  comments, suggestions does not hurt if it only takes a short time.  If it&amp;#039;s similar to another known bug, point that out, too.   &lt;br /&gt;
*Does the system have different states?  What state was it in when the test was done?  &lt;br /&gt;
* Sounds simple but can be tricky, can be easy to forget an important detail - in a web-based system, which browser were you using?  Sometimes you switch between Edge, FireFox and Chrome throughout the day, remember which one you found a bug in, check and see if it happens in other browsers.&lt;br /&gt;
* https://obsproject.com/ - software that can be used to capture videos, including drop menus.  Windows 10&amp;#039;s Game Capture does not include drop menus.&lt;br /&gt;
&lt;br /&gt;
== Other tasks follow testing ==&lt;br /&gt;
*Technical writers have to produce documentation like manuals.  They may want to look at some of the existing documentation.  That may not be the test plan, it could be developer notes or requirements.  Sometimes the tester has worked with those documents a lot, and is asked to assemble them into one place for the technical writer, or directing those people where to find things.&lt;br /&gt;
*The technical writer might want to also be a tester.  In order to write documentation that explains things to the user, the writer has to understand it well, getting their hands on a test system and trying some things helps them do this.&lt;br /&gt;
*The technical writer will have questions for the tester, may want assistance in configuring a system &lt;br /&gt;
*Sometimes testing was done to cover many situations, but the first sales are to customers with specific needs, the technical writer will be focused on that, configuring a system that way&lt;br /&gt;
*It helps to label things, the tester might know about the system configuration but the technical writer doesn&amp;#039;t.  &lt;br /&gt;
*Sometimes the technical writer has industry experience, ends up trying some additional tests and finds bugs.  Then the tester follows up to write up the bug and get it fixed.&lt;br /&gt;
&lt;br /&gt;
== Some professionals actively dislike textbooks ==&lt;br /&gt;
*Some textbooks for software testing, as is the case for books in other technical fields, have a tendency towards &amp;quot;perfect worldism&amp;quot;&lt;br /&gt;
*They will describe techniques and show examples of using those techniques that are very time consuming to do.&lt;br /&gt;
*They might be good techniques that will capture lots of bugs if you apply them&lt;br /&gt;
*On a real project, time is limited, you have to make judgment calls about prioritizing things to meet deadlines&lt;br /&gt;
*Don&amp;#039;t want to tell your manager you spent hours on this marvellous documentation and planning technique but got no actual tests done&lt;br /&gt;
*So why pay attention to text books?&lt;br /&gt;
*Even if you can&amp;#039;t completely apply the techniques they describe exactly as outlined, you might get ideas you can partially apply that do help raise the quality of what you deliver&lt;br /&gt;
*Such as - Different types of program maps - even a partial one might get you thinking about test cases you want to do, maybe apply these techniques in depth for especially important or complex parts of a system if not everything&lt;br /&gt;
*You may adapt/adjust these techniques to suit your situation&lt;br /&gt;
*Can also give you the idea of the number of test there are in theory, including paths&lt;br /&gt;
&lt;br /&gt;
== On YouTube, James Bach has some interesting talks ==&lt;br /&gt;
*https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
*Asks people how they would test things, pushes hard for people to explain why&lt;br /&gt;
*Sometimes testers have ideas/intuitions that are on the right track, can you explain why?&lt;br /&gt;
*He talks about a system that will work 100 - 250 VAC&lt;br /&gt;
*So why test, say, 90 V?  It&amp;#039;s not in the specs, we know it won&amp;#039;t work&lt;br /&gt;
*But will it &amp;quot;fail gracefully&amp;quot;?  &lt;br /&gt;
*(There is not always time for that in the workplace, but if you just follow your intuition you might find important bugs)&lt;br /&gt;
&lt;br /&gt;
== Bach also goes through an example and asks how many test cases would you do? ==&lt;br /&gt;
*Raises questions about what the project does&lt;br /&gt;
*Decision testing, boundary testing, predicate testing&lt;br /&gt;
*With more experience, you can often think of more tests right off, i.e. &amp;quot;improvise&amp;quot;&lt;br /&gt;
*Emphasizes the fact that a flowchart, document, etc. is a representation, not the actual system&lt;br /&gt;
&lt;br /&gt;
== When do you feel pride/satisfaction in your work? ==&lt;br /&gt;
*Some testers say they &amp;quot;high-five&amp;quot; each other when they find a really nasty, obscure, or complicated bug&lt;br /&gt;
*That is when they feel they are adding a lot of value&lt;br /&gt;
*Not all testers agree&lt;br /&gt;
*For some, the time for &amp;quot;high-fives&amp;quot; are after the bug has been found, reported, fixed, and the system successfully retested, and the &amp;quot;high-five&amp;quot; is shared with the developers&lt;br /&gt;
*Everyone on the team wants the project to be a success!&lt;br /&gt;
*Also fits in with having tact and consideration for others&lt;br /&gt;
&lt;br /&gt;
== Load testing ==&lt;br /&gt;
*After testing different parts of a system and making sure they work together well, you may want to do load testing&lt;br /&gt;
*Maximize the amount of transactions occurring&lt;br /&gt;
*Planning can be very helpful here, keep track of the order you did things, test systematically, expected results, otherwise it&amp;#039;s too easy to get lost in a big pile of data&lt;br /&gt;
*This means making sure no transactions are dropped&lt;br /&gt;
*Or, in financial systems, totals add up, reports balance&lt;br /&gt;
*Testing Tools can be used for this&lt;br /&gt;
*Ironically, Testing Tools are not always very well tested&lt;br /&gt;
*They might be &amp;quot;quick and dirty&amp;quot;, but as long as the tester who made them can use them to serve a main purpose well enough, then the real, main tests get done&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Monkey Testing&amp;quot; ==&lt;br /&gt;
*Can be important&lt;br /&gt;
*Bach talks about examples, able to break right into a computer, produce error boxes with no text&lt;br /&gt;
*Using Ctrl-A Ctrl-C Ctrl-V, put a massive amount of text into an input field, see what happens&lt;br /&gt;
*Try moving really fast pressing buttons&lt;br /&gt;
*There is one big catch to this kind of testing&lt;br /&gt;
*Can you reliably recreate the error?  If you were frantically pressing buttons fast, and timing is part of the issue, that can be very hard&lt;br /&gt;
&lt;br /&gt;
== Testing similar things at once ==&lt;br /&gt;
*Suppose you have a system that allows you to set countdown alarms, like scheduling employees&amp;#039; breaks&lt;br /&gt;
*Each employee has a timer object&lt;br /&gt;
*Each object is therefore distinct&lt;br /&gt;
*But suppose management has a screen they use to see all employee schedules and minutes left until their breaks&lt;br /&gt;
*Executive can shorten or lengthen that time, they have a screen Management has access to&lt;br /&gt;
*That screen loads an employee day schedule object&lt;br /&gt;
*Copy that data into a report for that manager&amp;#039;s daily activity, i.e.&lt;br /&gt;
 &lt;br /&gt;
Schedule Adjustments:&lt;br /&gt;
PayRoll Clerk - 10 minute delay&lt;br /&gt;
Production manager - 15 minute delay&lt;br /&gt;
 &lt;br /&gt;
Local variables cleared in between these two transactions&lt;br /&gt;
What if there&amp;#039;s just one break room, an alert is sounded when your break is over.&lt;br /&gt;
If you have a flag that says &amp;quot;BreakTimeOver = true&amp;quot;, it has to be reset&lt;br /&gt;
&lt;br /&gt;
== What if functions DON&amp;#039;T appear to have much in common? ==&lt;br /&gt;
*Some functions, like above, are about tracking time&lt;br /&gt;
*Others keep track of that day&amp;#039;s production, how many units produced&lt;br /&gt;
*Very separate things, but all part of the same system&lt;br /&gt;
*Run them all with a heavy load for a while, see if the system responds well, there is enough memory&lt;br /&gt;
*Different developers may have worked on these parts, may not have tested all together&lt;br /&gt;
&lt;br /&gt;
== Button availability ==&lt;br /&gt;
*Many companies will use this, document it as part of a project plan&lt;br /&gt;
*Is important to test&lt;br /&gt;
*Even a small number of buttons can create many paths&lt;br /&gt;
*Especially important for security, don&amp;#039;t allow login attempts without credentials being entered&lt;br /&gt;
*You don&amp;#039;t have to have lots of buttons in a window for this to become time consuming and a lot of hard work&lt;br /&gt;
&lt;br /&gt;
== Consistent look and feel ==&lt;br /&gt;
*Sometimes errors occur that are hard to spot - fonts might be very similar, but slightly different, just one size larger or smaller, shadow effects&lt;br /&gt;
&lt;br /&gt;
== Resizing windows ==&lt;br /&gt;
*This can cause data to become lost, off screen, is a good idea to stretch windows, maximize, minimize, resize&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
*What information is supposed to be in them?  What is definitely NOT supposed to be there?  Certain security things should NOT be there, check and make sure.  Sometimes developers log things for debug purposes but this should be cleaned up, can be very important!&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
*Do you leave a system running overnight?  Over a weekend?  Over a holiday weekend?  For weeks?&lt;br /&gt;
*Some systems do have to be running around the clock.  &lt;br /&gt;
*Do you leave it running with a lot of activity for a long time?  Is that realistic?  &lt;br /&gt;
*If something goes wrong in the night, how hard is it to track down the cause of a problem hours later, when you get to work in the morning?&lt;br /&gt;
&lt;br /&gt;
== Updating during a project ==&lt;br /&gt;
*Testers might be given whatever&amp;#039;s available to start testing.  This might be prototypes, partly developed items&lt;br /&gt;
*Updates are provided during a project&lt;br /&gt;
*Installing updates can take significant amounts of time&lt;br /&gt;
*It is important to work with developers to manage time.  If several updates are coming soon, maybe wait until several are ready, install them, then resume testing rather than have multiple interruptions to install several updates&lt;br /&gt;
*If an update has to be applied to many components, try a few first, do at least some basic testing before investing time in updating whole system&lt;br /&gt;
&lt;br /&gt;
== Graceful failures ==&lt;br /&gt;
*What if a component breaks, does the rest of the system respond gracefully?&lt;br /&gt;
*If a load test does cause errors, how well is it handled?  Load tests can make systems slow, resulting in a system appearing to &amp;quot;hang&amp;quot; rather than fail gracefully&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NPSA]]&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2348</id>
		<title>Software Testing Additional Notes</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2348"/>
		<updated>2019-05-03T02:03:55Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== A lot of people end up in software testing via an oblique path. ==&lt;br /&gt;
*Possibly from a technical background, working as developers&lt;br /&gt;
*Possibly a business background, get to know a company&amp;#039;s products&lt;br /&gt;
*You can take courses on it, but often as part of a larger program, rather than the main major&lt;br /&gt;
*Will that change in the future?&lt;br /&gt;
*Result could be why there is variety in terminology&lt;br /&gt;
&lt;br /&gt;
== Different project managers take different approaches. ==&lt;br /&gt;
*Some sit in on code reviews, test plan reviews, dig in to details&lt;br /&gt;
*Others get their team to report to them at a summary level&lt;br /&gt;
*Project manager will more directly intervene when a high priority situation arises, i.e. testing falling behind schedule, often a good project manager is someone who can keep an eye on testing at a high level and quickly assess an important situation in detail when necessary&lt;br /&gt;
&lt;br /&gt;
== Developers are often expected to do at least some testing of their own ==&lt;br /&gt;
&lt;br /&gt;
*For some technical projects like software upgrades, developers might be recruited to work as testers&lt;br /&gt;
*Developers often do unit testing, sometimes document test plans ahead of time&lt;br /&gt;
*That unit test plan and results are given to testers when they do additional testing - integration testing, regression testing, load testing&lt;br /&gt;
&lt;br /&gt;
== For testers, one challenge is the need to be thorough and deliver on time ==&lt;br /&gt;
*Sometimes, the first, fairly simple tests reveal a number of bugs; this creates concern about staying on schedule&lt;br /&gt;
*Advantage is that at least those bugs were found early&lt;br /&gt;
*It can be good to push hard, maybe put in overtime to get through the first pass of testing, get an idea of where bugs are, start fixing them early.  This can avoid worse time crunch near the end of a project.  Sometimes that can still happen anyway!&lt;br /&gt;
&lt;br /&gt;
== Writing test plans can take a significant amount of time ==&lt;br /&gt;
*Does the project schedule allow for that?&lt;br /&gt;
*How much time will it save alter, if there is a test plan that is thorough and has been peer reviewed and edited?  Often this makes it worth the effort&lt;br /&gt;
*In some situations, time constraints don&amp;#039;t allow it, have to jump in to testing with minimal planning or documenting&lt;br /&gt;
*Some projects end up as a mixture.  A detailed test plan is written and carefully peer reviewed early in the project&lt;br /&gt;
*During the project, unexpected problems and changes in requirements lead to many changes to the code and test plan&lt;br /&gt;
*At that point, there is limited time left in the project schedule, test plans are rough, possibly not peer reviewed&lt;br /&gt;
*It then helps if you have experience, when you&amp;#039;re new to the position it&amp;#039;s harder to &amp;quot;improvise&amp;quot; testing&lt;br /&gt;
&lt;br /&gt;
== Reporting bugs to developers requires tact ==&lt;br /&gt;
*People have worked very hard on the code; you are finding problems with it&lt;br /&gt;
*You are all on the same team with the goal of delivering a good quality product&lt;br /&gt;
*Keep e-mails and bug reports in business style; just describe what happens, provide the steps to re-create the error&lt;br /&gt;
*When reporting bugs, avoid the use of pronouns.  Say, &amp;quot;When I do x, the system does y&amp;quot;, never say &amp;quot;Your code has a problem&amp;quot;&lt;br /&gt;
*But, do use pronouns when giving thanks for good work, acknowledge others in meetings, &amp;quot;Yes, this was a tough bug, thankfully Jon got it fixed yesterday.&amp;quot;&lt;br /&gt;
*Einstein is believed to have said, &amp;quot;Make everything as simple as possible but no simpler&amp;quot;.  May not have been the exact words&lt;br /&gt;
*When doing bug reports, get to the main point quickly, but include the technical details necessary.  Make sure YOU can reliably recreate the error following the same steps &lt;br /&gt;
 &lt;br /&gt;
Calculator&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
Basic format:&lt;br /&gt;
Steps to Re-create:&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;pi&amp;quot; &lt;br /&gt;
&lt;br /&gt;
	Press Clear&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;=&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Expected Results:&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Actual Results&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2.00000001&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
System should be declaring input and response as integers, possibly using float or another type and not doing garbage collection from previous operation?&lt;br /&gt;
 &lt;br /&gt;
*Being very explicit about what was pressed, in what order, matters sometimes - people have habits.  On a keyboard, some use the number pad, others the main keyboard.  If someone turns num lock on or off during bootup as a habit and someone else was on the computer, you could get different results.  &lt;br /&gt;
*When describing a sequence of menu choices, the &amp;quot;-&amp;gt;&amp;quot; characters are helpful, i.e. select Main Menu-&amp;gt;Submenu1-&amp;gt;SubSubmenu1&lt;br /&gt;
*Making  comments, suggestions does not hurt if it only takes a short time.  If it&amp;#039;s similar to another known bug, point that out, too.   &lt;br /&gt;
*Does the system have different states?  What state was it in when the test was done?  &lt;br /&gt;
* Sounds simple but can be tricky, can be easy to forget an important detail - in a web-based system, which browser were you using?  Sometimes you switch between Edge, FireFox and Chrome throughout the day, remember which one you found a bug in, check and see if it happens in other browsers.&lt;br /&gt;
* https://obsproject.com/ - software that can be used to capture videos, including drop menus.  Windows 10&amp;#039;s Game Capture does not include drop menus.&lt;br /&gt;
&lt;br /&gt;
== Other tasks follow testing ==&lt;br /&gt;
*Technical writers have to produce documentation like manuals.  They may want to look at some of the existing documentation.  That may not be the test plan, it could be developer notes or requirements.  Sometimes the tester has worked with those documents a lot, and is asked to assemble them into one place for the technical writer, or directing those people where to find things.&lt;br /&gt;
*The technical writer might want to also be a tester.  In order to write documentation that explains things to the user, the writer has to understand it well, getting their hands on a test system and trying some things helps them do this.&lt;br /&gt;
*The technical writer will have questions for the tester, may want assistance in configuring a system &lt;br /&gt;
*Sometimes testing was done to cover many situations, but the first sales are to customers with specific needs, the technical writer will be focused on that, configuring a system that way&lt;br /&gt;
*It helps to label things, the tester might know about the system configuration but the technical writer doesn&amp;#039;t.  &lt;br /&gt;
*Sometimes the technical writer has industry experience, ends up trying some additional tests and finds bugs.  Then the tester follows up to write up the bug and get it fixed.&lt;br /&gt;
&lt;br /&gt;
== Some professionals actively dislike textbooks ==&lt;br /&gt;
*Some textbooks for software testing, as is the case for books in other technical fields, have a tendency towards &amp;quot;perfect worldism&amp;quot;&lt;br /&gt;
*They will describe techniques and show examples of using those techniques that are very time consuming to do.&lt;br /&gt;
*They might be good techniques that will capture lots of bugs if you apply them&lt;br /&gt;
*On a real project, time is limited, you have to make judgment calls about prioritizing things to meet deadlines&lt;br /&gt;
*Don&amp;#039;t want to tell your manager you spent hours on this marvellous documentation and planning technique but got no actual tests done&lt;br /&gt;
*So why pay attention to text books?&lt;br /&gt;
*Even if you can&amp;#039;t completely apply the techniques they describe exactly as outlined, you might get ideas you can partially apply that do help raise the quality of what you deliver&lt;br /&gt;
*Such as - Different types of program maps - even a partial one might get you thinking about test cases you want to do, maybe apply these techniques in depth for especially important or complex parts of a system if not everything&lt;br /&gt;
*You may adapt/adjust these techniques to suit your situation&lt;br /&gt;
*Can also give you the idea of the number of test there are in theory, including paths&lt;br /&gt;
&lt;br /&gt;
== On YouTube, James Bach has some interesting talks ==&lt;br /&gt;
*https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
*Asks people how they would test things, pushes hard for people to explain why&lt;br /&gt;
*Sometimes testers have ideas/intuitions that are on the right track, can you explain why?&lt;br /&gt;
*He talks about a system that will work 100 - 250 VAC&lt;br /&gt;
*So why test, say, 90 V?  It&amp;#039;s not in the specs, we know it won&amp;#039;t work&lt;br /&gt;
*But will it &amp;quot;fail gracefully&amp;quot;?  &lt;br /&gt;
*(There is not always time for that in the workplace, but if you just follow your intuition you might find important bugs)&lt;br /&gt;
&lt;br /&gt;
== Bach also goes through an example and asks how many test cases would you do? ==&lt;br /&gt;
*Raises questions about what the project does&lt;br /&gt;
*Decision testing, boundary testing, predicate testing&lt;br /&gt;
*With more experience, you can often think of more tests right off, i.e. &amp;quot;improvise&amp;quot;&lt;br /&gt;
*Emphasizes the fact that a flowchart, document, etc. is a representation, not the actual system&lt;br /&gt;
&lt;br /&gt;
== When do you feel pride/satisfaction in your work? ==&lt;br /&gt;
*Some testers say they &amp;quot;high-five&amp;quot; each other when they find a really nasty, obscure, or complicated bug&lt;br /&gt;
*That is when they feel they are adding a lot of value&lt;br /&gt;
*Not all testers agree&lt;br /&gt;
*For some, the time for &amp;quot;high-fives&amp;quot; are after the bug has been found, reported, fixed, and the system successfully retested, and the &amp;quot;high-five&amp;quot; is shared with the developers&lt;br /&gt;
*Everyone on the team wants the project to be a success!&lt;br /&gt;
*Also fits in with having tact and consideration for others&lt;br /&gt;
&lt;br /&gt;
== Load testing ==&lt;br /&gt;
*After testing different parts of a system and making sure they work together well, you may want to do load testing&lt;br /&gt;
*Maximize the amount of transactions occurring&lt;br /&gt;
*Planning can be very helpful here, keep track of the order you did things, test systematically, expected results, otherwise it&amp;#039;s too easy to get lost in a big pile of data&lt;br /&gt;
*This means making sure no transactions are dropped&lt;br /&gt;
*Or, in financial systems, totals add up, reports balance&lt;br /&gt;
*Testing Tools can be used for this&lt;br /&gt;
*Ironically, Testing Tools are not always very well tested&lt;br /&gt;
*They might be &amp;quot;quick and dirty&amp;quot;, but as long as the tester who made them can use them to serve a main purpose well enough, then the real, main tests get done&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Monkey Testing&amp;quot; ==&lt;br /&gt;
*Can be important&lt;br /&gt;
*Bach talks about examples, able to break right into a computer, produce error boxes with no text&lt;br /&gt;
*Using Ctrl-A Ctrl-C Ctrl-V, put a massive amount of text into an input field, see what happens&lt;br /&gt;
*Try moving really fast pressing buttons&lt;br /&gt;
*There is one big catch to this kind of testing&lt;br /&gt;
*Can you reliably recreate the error?  If you were frantically pressing buttons fast, and timing is part of the issue, that can be very hard&lt;br /&gt;
&lt;br /&gt;
== Testing similar things at once ==&lt;br /&gt;
*Suppose you have a system that allows you to set countdown alarms, like scheduling employees&amp;#039; breaks&lt;br /&gt;
*Each employee has a timer object&lt;br /&gt;
*Each object is therefore distinct&lt;br /&gt;
*But suppose management has a screen they use to see all employee schedules and minutes left until their breaks&lt;br /&gt;
*Executive can shorten or lengthen that time, they have a screen Management has access to&lt;br /&gt;
*That screen loads an employee day schedule object&lt;br /&gt;
*Copy that data into a report for that manager&amp;#039;s daily activity, i.e.&lt;br /&gt;
 &lt;br /&gt;
Schedule Adjustments:&lt;br /&gt;
PayRoll Clerk - 10 minute delay&lt;br /&gt;
Production manager - 15 minute delay&lt;br /&gt;
 &lt;br /&gt;
Local variables cleared in between these two transactions&lt;br /&gt;
What if there&amp;#039;s just one break room, an alert is sounded when your break is over.&lt;br /&gt;
If you have a flag that says &amp;quot;BreakTimeOver = true&amp;quot;, it has to be reset&lt;br /&gt;
&lt;br /&gt;
== What if functions DON&amp;#039;T appear to have much in common? ==&lt;br /&gt;
*Some functions, like above, are about tracking time&lt;br /&gt;
*Others keep track of that day&amp;#039;s production, how many units produced&lt;br /&gt;
*Very separate things, but all part of the same system&lt;br /&gt;
*Run them all with a heavy load for a while, see if the system responds well, there is enough memory&lt;br /&gt;
*Different developers may have worked on these parts, may not have tested all together&lt;br /&gt;
&lt;br /&gt;
== Button availability ==&lt;br /&gt;
*Many companies will use this, document it as part of a project plan&lt;br /&gt;
*Is important to test&lt;br /&gt;
*Even a small number of buttons can create many paths&lt;br /&gt;
*Especially important for security, don&amp;#039;t allow login attempts without credentials being entered&lt;br /&gt;
*You don&amp;#039;t have to have lots of buttons in a window for this to become time consuming and a lot of hard work&lt;br /&gt;
&lt;br /&gt;
== Consistent look and feel ==&lt;br /&gt;
*Sometimes errors occur that are hard to spot - fonts might be very similar, but slightly different, just one size larger or smaller, shadow effects&lt;br /&gt;
&lt;br /&gt;
== Resizing windows ==&lt;br /&gt;
*This can cause data to become lost, off screen, is a good idea to stretch windows, maximize, minimize, resize&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
*What information is supposed to be in them?  What is definitely NOT supposed to be there?  Certain security things should NOT be there, check and make sure.  Sometimes developers log things for debug purposes but this should be cleaned up, can be very important!&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
*Do you leave a system running overnight?  Over a weekend?  Over a holiday weekend?  For weeks?&lt;br /&gt;
*Some systems do have to be running around the clock.  &lt;br /&gt;
*Do you leave it running with a lot of activity for a long time?  Is that realistic?  &lt;br /&gt;
*If something goes wrong in the night, how hard is it to track down the cause of a problem hours later, when you get to work in the morning?&lt;br /&gt;
&lt;br /&gt;
== Updating during a project ==&lt;br /&gt;
*Testers might be given whatever&amp;#039;s available to start testing.  This might be prototypes, partly developed items&lt;br /&gt;
*Updates are provided during a project&lt;br /&gt;
*Installing updates can take significant amounts of time&lt;br /&gt;
*It is important to work with developers to manage time.  If several updates are coming soon, maybe wait until several are ready, install them, then resume testing rather than have multiple interruptions to install several updates&lt;br /&gt;
*If an update has to be applied to many components, try a few first, do at least some basic testing before investing time in updating whole system&lt;br /&gt;
&lt;br /&gt;
== Graceful failures ==&lt;br /&gt;
*What if a component breaks, does the rest of the system respond gracefully?&lt;br /&gt;
*If a load test does cause errors, how well is it handled?  Load tests can make systems slow, resulting in a system appearing to &amp;quot;hang&amp;quot; rather than fail gracefully&lt;br /&gt;
&lt;br /&gt;
[[File:1 - VoltageExample.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:NPSA]]&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=File:1_-_VoltageExample.png&amp;diff=2347</id>
		<title>File:1 - VoltageExample.png</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=File:1_-_VoltageExample.png&amp;diff=2347"/>
		<updated>2019-05-03T02:02:30Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2332</id>
		<title>Software Testing Additional Notes</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2332"/>
		<updated>2019-04-16T02:01:32Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== A lot of people end up in software testing via an oblique path. ==&lt;br /&gt;
*Possibly from a technical background, working as developers&lt;br /&gt;
*Possibly a business background, get to know a company&amp;#039;s products&lt;br /&gt;
*You can take courses on it, but often as part of a larger program, rather than the main major&lt;br /&gt;
*Will that change in the future?&lt;br /&gt;
*Result could be why there is variety in terminology&lt;br /&gt;
&lt;br /&gt;
== Different project managers take different approaches. ==&lt;br /&gt;
*Some sit in on code reviews, test plan reviews, dig in to details&lt;br /&gt;
*Others get their team to report to them at a summary level&lt;br /&gt;
*Project manager will more directly intervene when a high priority situation arises, i.e. testing falling behind schedule, often a good project manager is someone who can keep an eye on testing at a high level and quickly assess an important situation in detail when necessary&lt;br /&gt;
&lt;br /&gt;
== Developers are often expected to do at least some testing of their own ==&lt;br /&gt;
&lt;br /&gt;
*For some technical projects like software upgrades, developers might be recruited to work as testers&lt;br /&gt;
*Developers often do unit testing, sometimes document test plans ahead of time&lt;br /&gt;
*That unit test plan and results are given to testers when they do additional testing - integration testing, regression testing, load testing&lt;br /&gt;
&lt;br /&gt;
== For testers, one challenge is the need to be thorough and deliver on time ==&lt;br /&gt;
*Sometimes, the first, fairly simple tests reveal a number of bugs; this creates concern about staying on schedule&lt;br /&gt;
*Advantage is that at least those bugs were found early&lt;br /&gt;
*It can be good to push hard, maybe put in overtime to get through the first pass of testing, get an idea of where bugs are, start fixing them early.  This can avoid worse time crunch near the end of a project.  Sometimes that can still happen anyway!&lt;br /&gt;
&lt;br /&gt;
== Writing test plans can take a significant amount of time ==&lt;br /&gt;
*Does the project schedule allow for that?&lt;br /&gt;
*How much time will it save alter, if there is a test plan that is thorough and has been peer reviewed and edited?  Often this makes it worth the effort&lt;br /&gt;
*In some situations, time constraints don&amp;#039;t allow it, have to jump in to testing with minimal planning or documenting&lt;br /&gt;
*Some projects end up as a mixture.  A detailed test plan is written and carefully peer reviewed early in the project&lt;br /&gt;
*During the project, unexpected problems and changes in requirements lead to many changes to the code and test plan&lt;br /&gt;
*At that point, there is limited time left in the project schedule, test plans are rough, possibly not peer reviewed&lt;br /&gt;
*It then helps if you have experience, when you&amp;#039;re new to the position it&amp;#039;s harder to &amp;quot;improvise&amp;quot; testing&lt;br /&gt;
&lt;br /&gt;
== Reporting bugs to developers requires tact ==&lt;br /&gt;
*People have worked very hard on the code; you are finding problems with it&lt;br /&gt;
*You are all on the same team with the goal of delivering a good quality product&lt;br /&gt;
*Keep e-mails and bug reports in business style; just describe what happens, provide the steps to re-create the error&lt;br /&gt;
*When reporting bugs, avoid the use of pronouns.  Say, &amp;quot;When I do x, the system does y&amp;quot;, never say &amp;quot;Your code has a problem&amp;quot;&lt;br /&gt;
*But, do use pronouns when giving thanks for good work, acknowledge others in meetings, &amp;quot;Yes, this was a tough bug, thankfully Jon got it fixed yesterday.&amp;quot;&lt;br /&gt;
*Einstein is believed to have said, &amp;quot;Make everything as simple as possible but no simpler&amp;quot;.  May not have been the exact words&lt;br /&gt;
*When doing bug reports, get to the main point quickly, but include the technical details necessary.  Make sure YOU can reliably recreate the error following the same steps &lt;br /&gt;
 &lt;br /&gt;
Calculator&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
Basic format:&lt;br /&gt;
Steps to Re-create:&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;pi&amp;quot; &lt;br /&gt;
&lt;br /&gt;
	Press Clear&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;=&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Expected Results:&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Actual Results&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2.00000001&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
System should be declaring input and response as integers, possibly using float or another type and not doing garbage collection from previous operation?&lt;br /&gt;
 &lt;br /&gt;
*Being very explicit about what was pressed, in what order, matters sometimes - people have habits.  On a keyboard, some use the number pad, others the main keyboard.  If someone turns num lock on or off during bootup as a habit and someone else was on the computer, you could get different results.  &lt;br /&gt;
*When describing a sequence of menu choices, the &amp;quot;-&amp;gt;&amp;quot; characters are helpful, i.e. select Main Menu-&amp;gt;Submenu1-&amp;gt;SubSubmenu1&lt;br /&gt;
*Making  comments, suggestions does not hurt if it only takes a short time.  If it&amp;#039;s similar to another known bug, point that out, too.   &lt;br /&gt;
*Does the system have different states?  What state was it in when the test was done?  &lt;br /&gt;
* Sounds simple but can be tricky, can be easy to forget an important detail - in a web-based system, which browser were you using?  Sometimes you switch between Edge, FireFox and Chrome throughout the day, remember which one you found a bug in, check and see if it happens in other browsers.&lt;br /&gt;
* https://obsproject.com/ - software that can be used to capture videos, including drop menus.  Windows 10&amp;#039;s Game Capture does not include drop menus.&lt;br /&gt;
&lt;br /&gt;
== Other tasks follow testing ==&lt;br /&gt;
*Technical writers have to produce documentation like manuals.  They may want to look at some of the existing documentation.  That may not be the test plan, it could be developer notes or requirements.  Sometimes the tester has worked with those documents a lot, and is asked to assemble them into one place for the technical writer, or directing those people where to find things.&lt;br /&gt;
*The technical writer might want to also be a tester.  In order to write documentation that explains things to the user, the writer has to understand it well, getting their hands on a test system and trying some things helps them do this.&lt;br /&gt;
*The technical writer will have questions for the tester, may want assistance in configuring a system &lt;br /&gt;
*Sometimes testing was done to cover many situations, but the first sales are to customers with specific needs, the technical writer will be focused on that, configuring a system that way&lt;br /&gt;
*It helps to label things, the tester might know about the system configuration but the technical writer doesn&amp;#039;t.  &lt;br /&gt;
*Sometimes the technical writer has industry experience, ends up trying some additional tests and finds bugs.  Then the tester follows up to write up the bug and get it fixed.&lt;br /&gt;
&lt;br /&gt;
== Some professionals actively dislike textbooks ==&lt;br /&gt;
*Some textbooks for software testing, as is the case for books in other technical fields, have a tendency towards &amp;quot;perfect worldism&amp;quot;&lt;br /&gt;
*They will describe techniques and show examples of using those techniques that are very time consuming to do.&lt;br /&gt;
*They might be good techniques that will capture lots of bugs if you apply them&lt;br /&gt;
*On a real project, time is limited, you have to make judgment calls about prioritizing things to meet deadlines&lt;br /&gt;
*Don&amp;#039;t want to tell your manager you spent hours on this marvellous documentation and planning technique but got no actual tests done&lt;br /&gt;
*So why pay attention to text books?&lt;br /&gt;
*Even if you can&amp;#039;t completely apply the techniques they describe exactly as outlined, you might get ideas you can partially apply that do help raise the quality of what you deliver&lt;br /&gt;
*Such as - Different types of program maps - even a partial one might get you thinking about test cases you want to do, maybe apply these techniques in depth for especially important or complex parts of a system if not everything&lt;br /&gt;
*You may adapt/adjust these techniques to suit your situation&lt;br /&gt;
*Can also give you the idea of the number of test there are in theory, including paths&lt;br /&gt;
&lt;br /&gt;
== On YouTube, James Bach has some interesting talks ==&lt;br /&gt;
*https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
*Asks people how they would test things, pushes hard for people to explain why&lt;br /&gt;
*Sometimes testers have ideas/intuitions that are on the right track, can you explain why?&lt;br /&gt;
*He talks about a system that will work 100 - 250 VAC&lt;br /&gt;
*So why test, say, 90 V?  It&amp;#039;s not in the specs, we know it won&amp;#039;t work&lt;br /&gt;
*But will it &amp;quot;fail gracefully&amp;quot;?  &lt;br /&gt;
*(There is not always time for that in the workplace, but if you just follow your intuition you might find important bugs)&lt;br /&gt;
&lt;br /&gt;
== Bach also goes through an example and asks how many test cases would you do? ==&lt;br /&gt;
*Raises questions about what the project does&lt;br /&gt;
*Decision testing, boundary testing, predicate testing&lt;br /&gt;
*With more experience, you can often think of more tests right off, i.e. &amp;quot;improvise&amp;quot;&lt;br /&gt;
*Emphasizes the fact that a flowchart, document, etc. is a representation, not the actual system&lt;br /&gt;
&lt;br /&gt;
== When do you feel pride/satisfaction in your work? ==&lt;br /&gt;
*Some testers say they &amp;quot;high-five&amp;quot; each other when they find a really nasty, obscure, or complicated bug&lt;br /&gt;
*That is when they feel they are adding a lot of value&lt;br /&gt;
*Not all testers agree&lt;br /&gt;
*For some, the time for &amp;quot;high-fives&amp;quot; are after the bug has been found, reported, fixed, and the system successfully retested, and the &amp;quot;high-five&amp;quot; is shared with the developers&lt;br /&gt;
*Everyone on the team wants the project to be a success!&lt;br /&gt;
*Also fits in with having tact and consideration for others&lt;br /&gt;
&lt;br /&gt;
== Load testing ==&lt;br /&gt;
*After testing different parts of a system and making sure they work together well, you may want to do load testing&lt;br /&gt;
*Maximize the amount of transactions occurring&lt;br /&gt;
*Planning can be very helpful here, keep track of the order you did things, test systematically, expected results, otherwise it&amp;#039;s too easy to get lost in a big pile of data&lt;br /&gt;
*This means making sure no transactions are dropped&lt;br /&gt;
*Or, in financial systems, totals add up, reports balance&lt;br /&gt;
*Testing Tools can be used for this&lt;br /&gt;
*Ironically, Testing Tools are not always very well tested&lt;br /&gt;
*They might be &amp;quot;quick and dirty&amp;quot;, but as long as the tester who made them can use them to serve a main purpose well enough, then the real, main tests get done&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Monkey Testing&amp;quot; ==&lt;br /&gt;
*Can be important&lt;br /&gt;
*Bach talks about examples, able to break right into a computer, produce error boxes with no text&lt;br /&gt;
*Using Ctrl-A Ctrl-C Ctrl-V, put a massive amount of text into an input field, see what happens&lt;br /&gt;
*Try moving really fast pressing buttons&lt;br /&gt;
*There is one big catch to this kind of testing&lt;br /&gt;
*Can you reliably recreate the error?  If you were frantically pressing buttons fast, and timing is part of the issue, that can be very hard&lt;br /&gt;
&lt;br /&gt;
== Testing similar things at once ==&lt;br /&gt;
*Suppose you have a system that allows you to set countdown alarms, like scheduling employees&amp;#039; breaks&lt;br /&gt;
*Each employee has a timer object&lt;br /&gt;
*Each object is therefore distinct&lt;br /&gt;
*But suppose management has a screen they use to see all employee schedules and minutes left until their breaks&lt;br /&gt;
*Executive can shorten or lengthen that time, they have a screen Management has access to&lt;br /&gt;
*That screen loads an employee day schedule object&lt;br /&gt;
*Copy that data into a report for that manager&amp;#039;s daily activity, i.e.&lt;br /&gt;
 &lt;br /&gt;
Schedule Adjustments:&lt;br /&gt;
PayRoll Clerk - 10 minute delay&lt;br /&gt;
Production manager - 15 minute delay&lt;br /&gt;
 &lt;br /&gt;
Local variables cleared in between these two transactions&lt;br /&gt;
What if there&amp;#039;s just one break room, an alert is sounded when your break is over.&lt;br /&gt;
If you have a flag that says &amp;quot;BreakTimeOver = true&amp;quot;, it has to be reset&lt;br /&gt;
&lt;br /&gt;
== What if functions DON&amp;#039;T appear to have much in common? ==&lt;br /&gt;
*Some functions, like above, are about tracking time&lt;br /&gt;
*Others keep track of that day&amp;#039;s production, how many units produced&lt;br /&gt;
*Very separate things, but all part of the same system&lt;br /&gt;
*Run them all with a heavy load for a while, see if the system responds well, there is enough memory&lt;br /&gt;
*Different developers may have worked on these parts, may not have tested all together&lt;br /&gt;
&lt;br /&gt;
== Button availability ==&lt;br /&gt;
*Many companies will use this, document it as part of a project plan&lt;br /&gt;
*Is important to test&lt;br /&gt;
*Even a small number of buttons can create many paths&lt;br /&gt;
*Especially important for security, don&amp;#039;t allow login attempts without credentials being entered&lt;br /&gt;
*You don&amp;#039;t have to have lots of buttons in a window for this to become time consuming and a lot of hard work&lt;br /&gt;
&lt;br /&gt;
== Consistent look and feel ==&lt;br /&gt;
*Sometimes errors occur that are hard to spot - fonts might be very similar, but slightly different, just one size larger or smaller, shadow effects&lt;br /&gt;
&lt;br /&gt;
== Resizing windows ==&lt;br /&gt;
*This can cause data to become lost, off screen, is a good idea to stretch windows, maximize, minimize, resize&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
*What information is supposed to be in them?  What is definitely NOT supposed to be there?  Certain security things should NOT be there, check and make sure.  Sometimes developers log things for debug purposes but this should be cleaned up, can be very important!&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
*Do you leave a system running overnight?  Over a weekend?  Over a holiday weekend?  For weeks?&lt;br /&gt;
*Some systems do have to be running around the clock.  &lt;br /&gt;
*Do you leave it running with a lot of activity for a long time?  Is that realistic?  &lt;br /&gt;
*If something goes wrong in the night, how hard is it to track down the cause of a problem hours later, when you get to work in the morning?&lt;br /&gt;
&lt;br /&gt;
== Updating during a project ==&lt;br /&gt;
*Testers might be given whatever&amp;#039;s available to start testing.  This might be prototypes, partly developed items&lt;br /&gt;
*Updates are provided during a project&lt;br /&gt;
*Installing updates can take significant amounts of time&lt;br /&gt;
*It is important to work with developers to manage time.  If several updates are coming soon, maybe wait until several are ready, install them, then resume testing rather than have multiple interruptions to install several updates&lt;br /&gt;
*If an update has to be applied to many components, try a few first, do at least some basic testing before investing time in updating whole system&lt;br /&gt;
&lt;br /&gt;
== Graceful failures ==&lt;br /&gt;
*What if a component breaks, does the rest of the system respond gracefully?&lt;br /&gt;
*If a load test does cause errors, how well is it handled?  Load tests can make systems slow, resulting in a system appearing to &amp;quot;hang&amp;quot; rather than fail gracefully&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2331</id>
		<title>Software Testing Additional Notes</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing_Additional_Notes&amp;diff=2331"/>
		<updated>2019-04-16T01:37:57Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: Created page with &amp;quot;  == A lot of people end up in software testing via an oblique path. == *Possibly from a technical background, working as developers *Possibly a business background, get to kn...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== A lot of people end up in software testing via an oblique path. ==&lt;br /&gt;
*Possibly from a technical background, working as developers&lt;br /&gt;
*Possibly a business background, get to know a company&amp;#039;s products&lt;br /&gt;
*You can take courses on it, but often as part of a larger program, rather than the main major&lt;br /&gt;
*Will that change in the future?&lt;br /&gt;
*Result could be why there is variety in terminology&lt;br /&gt;
&lt;br /&gt;
== Different project managers take different approaches. ==&lt;br /&gt;
*Some sit in on code reviews, test plan reviews, dig in to details&lt;br /&gt;
*Others get their team to report to them at a summary level&lt;br /&gt;
*Project manager will more directly intervene when a high priority situation arises, i.e. testing falling behind schedule, often a good project manager is someone who can keep an eye on testing at a high level and quickly assess an important situation in detail when necessary&lt;br /&gt;
&lt;br /&gt;
== Developers are often expected to do at least some testing of their own ==&lt;br /&gt;
&lt;br /&gt;
*For some technical projects like software upgrades, developers might be recruited to work as testers&lt;br /&gt;
*Developers often do unit testing, sometimes document test plans ahead of time&lt;br /&gt;
*That unit test plan and results are given to testers when they do additional testing - integration testing, regression testing, load testing&lt;br /&gt;
&lt;br /&gt;
== For testers, one challenge is the need to be thorough and deliver on time ==&lt;br /&gt;
*Sometimes, the first, fairly simple tests reveal a number of bugs; this creates concern about staying on schedule&lt;br /&gt;
*Advantage is that at least those bugs were found early&lt;br /&gt;
*It can be good to push hard, maybe put in overtime to get through the first pass of testing, get an idea of where bugs are, start fixing them early.  This can avoid worse time crunch near the end of a project.  Sometimes that can still happen anyway!&lt;br /&gt;
&lt;br /&gt;
== Writing test plans can take a significant amount of time ==&lt;br /&gt;
*Does the project schedule allow for that?&lt;br /&gt;
*How much time will it save alter, if there is a test plan that is thorough and has been peer reviewed and edited?  Often this makes it worth the effort&lt;br /&gt;
*In some situations, time constraints don&amp;#039;t allow it, have to jump in to testing with minimal planning or documenting&lt;br /&gt;
*Some projects end up as a mixture.  A detailed test plan is written and carefully peer reviewed early in the project&lt;br /&gt;
*During the project, unexpected problems and changes in requirements lead to many changes to the code and test plan&lt;br /&gt;
*At that point, there is limited time left in the project schedule, test plans are rough, possibly not peer reviewed&lt;br /&gt;
*It then helps if you have experience, when you&amp;#039;re new to the position it&amp;#039;s harder to &amp;quot;improvise&amp;quot; testing&lt;br /&gt;
&lt;br /&gt;
== Reporting bugs to developers requires tact ==&lt;br /&gt;
*People have worked very hard on the code; you are finding problems with it&lt;br /&gt;
*You are all on the same team with the goal of delivering a good quality product&lt;br /&gt;
*Keep e-mails and bug reports in business style; just describe what happens, provide the steps to re-create the error&lt;br /&gt;
*When reporting bugs, avoid the use of pronouns.  Say, &amp;quot;When I do x, the system does y&amp;quot;, never say &amp;quot;Your code has a problem&amp;quot;&lt;br /&gt;
*But, do use pronouns when giving thanks for good work, acknowledge others in meetings, &amp;quot;Yes, this was a tough bug, thankfully Jon got it fixed yesterday.&amp;quot;&lt;br /&gt;
*Einstein is believed to have said, &amp;quot;Make everything as simple as possible but no simpler&amp;quot;.  May not have been the exact words&lt;br /&gt;
*When doing bug reports, get to the main point quickly, but include the technical details necessary.  Make sure YOU can reliably recreate the error following the same steps &lt;br /&gt;
 &lt;br /&gt;
Calculator&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
Basic format:&lt;br /&gt;
Steps to Re-create:&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;pi&amp;quot; &lt;br /&gt;
&lt;br /&gt;
	Press Clear&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;+&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Press &amp;quot;=&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Expected Results:&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Actual Results&lt;br /&gt;
&lt;br /&gt;
Display shows &amp;quot;2.00000001&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
System should be declaring input and response as integers, possibly using float or another type and not doing garbage collection from previous operation?&lt;br /&gt;
 &lt;br /&gt;
*Being very explicit about what was pressed, in what order, matters sometimes - people have habits.  On a keyboard, some use the number pad, others the main keyboard.  If someone turns num lock on or off during bootup as a habit and someone else was on the computer, you could get different results.  &lt;br /&gt;
*When describing a sequence of menu choices, the &amp;quot;-&amp;gt;&amp;quot; characters are helpful, i.e. select Main Menu-&amp;gt;Submenu1-&amp;gt;SubSubmenu1&lt;br /&gt;
*Making  comments, suggestions does not hurt if it only takes a short time.  If it&amp;#039;s similar to another known bug, point that out, too.   &lt;br /&gt;
*Does the system have different states?  What state was it in when the test was done?  &lt;br /&gt;
* Sounds simple but can be tricky, can be easy to forget an important detail - in a web-based system, which browser were you using?  Sometimes you switch between Edge, FireFox and Chrome throughout the day, remember which one you found a bug in, check and see if it happens in other browsers.&lt;br /&gt;
* https://obsproject.com/ - software that can be used to capture videos, including drop menus.  Windows 10&amp;#039;s Game Capture does not include drop menus.&lt;br /&gt;
&lt;br /&gt;
== Other tasks follow testing ==&lt;br /&gt;
*Technical writers have to produce documentation like manuals.  They may want to look at some of the existing documentation.  That may not be the test plan, it could be developer notes or requirements.  Sometimes the tester has worked with those documents a lot, and is asked to assemble them into one place for the technical writer, or directing those people where to find things.&lt;br /&gt;
*The technical writer might want to also be a tester.  In order to write documentation that explains things to the user, the writer has to understand it well, getting their hands on a test system and trying some things helps them do this.&lt;br /&gt;
*The technical writer will have questions for the tester, may want assistance in configuring a system &lt;br /&gt;
*Sometimes testing was done to cover many situations, but the first sales are to customers with specific needs, the technical writer will be focused on that, configuring a system that way&lt;br /&gt;
*It helps to label things, the tester might know about the system configuration but the technical writer doesn&amp;#039;t.  &lt;br /&gt;
*Sometimes the technical writer has industry experience, ends up trying some additional tests and finds bugs.  Then the tester follows up to write up the bug and get it fixed.&lt;br /&gt;
&lt;br /&gt;
== Some professionals actively dislike textbooks ==&lt;br /&gt;
*Some textbooks for software testing, as is the case for books in other technical fields, have a tendency towards &amp;quot;perfect worldism&amp;quot;&lt;br /&gt;
*They will describe techniques and show examples of using those techniques that are very time consuming to do.&lt;br /&gt;
*They might be good techniques that will capture lots of bugs if you apply them&lt;br /&gt;
*On a real project, time is limited, you have to make judgment calls about prioritizing things to meet deadlines&lt;br /&gt;
*Don&amp;#039;t want to tell your manager you spent hours on this marvellous documentation and planning technique but got no actual tests done&lt;br /&gt;
*So why pay attention to text books?&lt;br /&gt;
*Even if you can&amp;#039;t completely apply the techniques they describe exactly as outlined, you might get ideas you can partially apply that do help raise the quality of what you deliver&lt;br /&gt;
*Such as - Different types of program maps - even a partial one might get you thinking about test cases you want to do, maybe apply these techniques in depth for especially important or complex parts of a system if not everything&lt;br /&gt;
*You may adapt/adjust these techniques to suit your situation&lt;br /&gt;
*Can also give you the idea of the number of test there are in theory, including paths&lt;br /&gt;
&lt;br /&gt;
== On YouTube, James Bach has some interesting talks ==&lt;br /&gt;
*https://www.youtube.com/watch?v=ILkT_HV9DVU&lt;br /&gt;
*Asks people how they would test things, pushes hard for people to explain why&lt;br /&gt;
*Sometimes testers have ideas/intuitions that are on the right track, can you explain why?&lt;br /&gt;
*He talks about a system that will work 100 - 250 VAC&lt;br /&gt;
*So why test, say, 90 V?  It&amp;#039;s not in the specs, we know it won&amp;#039;t work&lt;br /&gt;
*But will it &amp;quot;fail gracefully&amp;quot;?  &lt;br /&gt;
*(There is not always time for that in the workplace, but if you just follow your intuition you might find important bugs)&lt;br /&gt;
&lt;br /&gt;
== Bach also goes through an example and asks how many test cases would you do? ==&lt;br /&gt;
*Raises questions about what the project does&lt;br /&gt;
*Decision testing, boundary testing, predicate testing&lt;br /&gt;
*With more experience, you can often think of more tests right off, i.e. &amp;quot;improvise&amp;quot;&lt;br /&gt;
*Emphasizes the fact that a flowchart, document, etc. is a representation, not the actual system&lt;br /&gt;
&lt;br /&gt;
== When do you feel pride/satisfaction in your work? ==&lt;br /&gt;
*Some testers say they &amp;quot;high-five&amp;quot; each other when they find a really nasty, obscure, or complicated bug&lt;br /&gt;
*That is when they feel they are adding a lot of value&lt;br /&gt;
*Not all testers agree&lt;br /&gt;
*For some, the time for &amp;quot;high-fives&amp;quot; are after the bug has been found, reported, fixed, and the system successfully retested, and the &amp;quot;high-five&amp;quot; is shared with the developers&lt;br /&gt;
*Everyone on the team wants the project to be a success!&lt;br /&gt;
*Also fits in with having tact and consideration for others&lt;br /&gt;
&lt;br /&gt;
== Load testing ==&lt;br /&gt;
 *After testing different parts of a system and making sure they work together well, you may want to do load testing&lt;br /&gt;
*Maximize the amount of transactions occurring&lt;br /&gt;
*Planning can be very helpful here, keep track of the order you did things, test systematically, expected results, otherwise it&amp;#039;s too easy to get lost in a big pile of data&lt;br /&gt;
*This means making sure no transactions are dropped&lt;br /&gt;
*Or, in financial systems, totals add up, reports balance&lt;br /&gt;
*Testing Tools can be used for this&lt;br /&gt;
*Ironically, Testing Tools are not always very well tested&lt;br /&gt;
*They might be &amp;quot;quick and dirty&amp;quot;, but as long as the tester who made them can use them to serve a main purpose well enough, then the real, main tests get done&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Monkey Testing&amp;quot; ==&lt;br /&gt;
 *Can be important&lt;br /&gt;
*Bach talks about examples, able to break right into a computer, produce error boxes with no text&lt;br /&gt;
*Using Ctrl-A Ctrl-C Ctrl-V, put a massive amount of text into an input field, see what happens&lt;br /&gt;
*Try moving really fast pressing buttons&lt;br /&gt;
*There is one big catch to this kind of testing&lt;br /&gt;
*Can you reliably recreate the error?  If you were frantically pressing buttons fast, and timing is part of the issue, that can be very hard&lt;br /&gt;
&lt;br /&gt;
== Testing similar things at once ==&lt;br /&gt;
*Suppose you have a system that allows you to set countdown alarms, like scheduling employees&amp;#039; breaks&lt;br /&gt;
*Each employee has a timer object&lt;br /&gt;
*Each object is therefore distinct&lt;br /&gt;
*But suppose management has a screen they use to see all employee schedules and minutes left until their breaks&lt;br /&gt;
*Executive can shorten or lengthen that time, they have a screen Management has access to&lt;br /&gt;
*That screen loads an employee day schedule object&lt;br /&gt;
*Copy that data into a report for that manager&amp;#039;s daily activity, i.e.&lt;br /&gt;
 &lt;br /&gt;
Schedule Adjustments:&lt;br /&gt;
PayRoll Clerk - 10 minute delay&lt;br /&gt;
Production manager - 15 minute delay&lt;br /&gt;
 &lt;br /&gt;
Local variables cleared in between these two transactions&lt;br /&gt;
What if there&amp;#039;s just one break room, an alert is sounded when your break is over.&lt;br /&gt;
If you have a flag that says &amp;quot;BreakTimeOver = true&amp;quot;, it has to be reset&lt;br /&gt;
&lt;br /&gt;
== What if functions DON&amp;#039;T appear to have much in common? ==&lt;br /&gt;
*Some functions, like above, are about tracking time&lt;br /&gt;
*Others keep track of that day&amp;#039;s production, how many units produced&lt;br /&gt;
*Very separate things, but all part of the same system&lt;br /&gt;
*Run them all with a heavy load for a while, see if the system responds well, there is enough memory&lt;br /&gt;
*Different developers may have worked on these parts, may not have tested all together&lt;br /&gt;
&lt;br /&gt;
== Button availability ==&lt;br /&gt;
*Many companies will use this, document it as part of a project plan&lt;br /&gt;
*Is important to test&lt;br /&gt;
*Even a small number of buttons can create many paths&lt;br /&gt;
*Especially important for security, don&amp;#039;t allow login attempts without credentials being entered&lt;br /&gt;
*You don&amp;#039;t have to have lots of buttons in a window for this to become time consuming and a lot of hard work&lt;br /&gt;
&lt;br /&gt;
== Consistent look and feel ==&lt;br /&gt;
*Sometimes errors occur that are hard to spot - fonts might be very similar, but slightly different, just one size larger or smaller, shadow effects&lt;br /&gt;
&lt;br /&gt;
== Resizing windows ==&lt;br /&gt;
*This can cause data to become lost, off screen, is a good idea to stretch windows, maximize, minimize, resize&lt;br /&gt;
&lt;br /&gt;
== Logs ==&lt;br /&gt;
*What information is supposed to be in them?  What is definitely NOT supposed to be there?  Certain security things should NOT be there, check and make sure.  Sometimes developers log things for debug purposes but this should be cleaned up, can be very important!&lt;br /&gt;
&lt;br /&gt;
== Time ==&lt;br /&gt;
*Do you leave a system running overnight?  Over a weekend?  Over a holiday weekend?  For weeks?&lt;br /&gt;
*Some systems do have to be running around the clock.  &lt;br /&gt;
*Do you leave it running with a lot of activity for a long time?  Is that realistic?  &lt;br /&gt;
*If something goes wrong in the night, how hard is it to track down the cause of a problem hours later, when you get to work in the morning?&lt;br /&gt;
&lt;br /&gt;
== Updating during a project ==&lt;br /&gt;
*Testers might be given whatever&amp;#039;s available to start testing.  This might be prototypes, partly developed items&lt;br /&gt;
*Updates are provided during a project&lt;br /&gt;
*Installing updates can take significant amounts of time&lt;br /&gt;
*It is important to work with developers to manage time.  If several updates are coming soon, maybe wait until several are ready, install them, then resume testing rather than have multiple interruptions to install several updates&lt;br /&gt;
*If an update has to be applied to many components, try a few first, do at least some basic testing before investing time in updating whole system&lt;br /&gt;
&lt;br /&gt;
== Graceful failures ==&lt;br /&gt;
*What if a component breaks, does the rest of the system respond gracefully?&lt;br /&gt;
*If a load test does cause errors, how well is it handled?  Load tests can make systems slow, resulting in a system appearing to &amp;quot;hang&amp;quot; rather than fail gracefully&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
	<entry>
		<id>https://sobac.com/mediawiki/index.php?title=Software_Testing&amp;diff=2330</id>
		<title>Software Testing</title>
		<link rel="alternate" type="text/html" href="https://sobac.com/mediawiki/index.php?title=Software_Testing&amp;diff=2330"/>
		<updated>2019-04-11T01:35:35Z</updated>

		<summary type="html">&lt;p&gt;NicholasCollins: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== [[Software Testing]] === &amp;lt;!-- Can&amp;#039;t use variables, don&amp;#039;t work in transclusions --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Entity for colon needed so it&amp;#039;s not interpreted as &amp;lt;dt&amp;gt; by wiki --&amp;gt;&lt;br /&gt;
; Date: Monday, 8 April 2019 Year from 7&amp;amp;#x3A;00pm to 9&amp;amp;#x3A;00pm &amp;lt;!-- {{ical|url= xxxxx-Meetup-iCAL-URL /ical/topic.ics }} --&amp;gt; &lt;br /&gt;
; Meetup Event: https://www.meetup.com/NetSquared-Kitchener-Waterloo/events/260073069/&lt;br /&gt;
; Location: Room 1300 -- Conrad Grebel University College, 140 Westmount Rd. N., Waterloo, Ontario {{map|url=https://osm.org/go/ZXnbg2DSE--?m=}} &lt;br /&gt;
&amp;lt;!-- ; Event Announcement: [[xxxxx Page Name/Announcement xxxxx YYYY-MM-DD]] --&amp;gt; &amp;lt;!-- URL for the announcement message sent a few days before the meeting --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you work in software development, how much of your job involves testing? If you&amp;#039;re a project manager, do you work closely with the testers to keep an eye on their results and bug reports as a project progresses? If you are a developer, do you do your own unit testing and work with testers on test plan reviews and fix the bugs they find when they do integration and regression testing? If you are a software tester, how do you balance the need to be thorough with the need to deliver on time? How does that affect writing test plans? When a project team has to deal with a lot of changes in the middle of development and testing, how do you cope with updating test plans with limited time? Since you should be considerate when reporting bugs in software, especially when people have worked hard on it, how can you do this tactfully? How do testers work with people like technical writers who use test plans as a reference when writing documentation like user manuals?&lt;br /&gt;
&lt;br /&gt;
Nicholas Collins, a long-time member of KWNSPA and a professional software tester will give us an overview of the deep art of testing software.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--Bob Jonkman &amp;amp; Marc Paré&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Software Testing/Meeting Notes 2019-04-08]]&lt;br /&gt;
&lt;br /&gt;
==== Resources ==== &amp;lt;!-- move to Meeting Notes after the session is held --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.techsoupcanada.ca/en/directory/334 TechSoup Canada catalogue: Developer Software]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://obsproject.com/ OBS Project] - software that is good for capturing videos of tests including drop menus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of James Bach&amp;#039;s [https://www.youtube.com/watch?v=ILkT_HV9DVU talks on YouTube]&lt;br /&gt;
&lt;br /&gt;
==== Meeting Notes ====&lt;br /&gt;
* Introductions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nicholas Collins&lt;br /&gt;
** Software tester for a few years, knowledge of how &amp;#039;&amp;#039;his&amp;#039;&amp;#039; company works&lt;br /&gt;
** But two years isn&amp;#039;t a long time compared to some software testers&lt;br /&gt;
** Nick has prepared notes, will be presenting slightly differently from other KWNPSA sessions&lt;br /&gt;
** SysAdmin in insurance industry; laid off (as are many of us); back to school to upgrade IT skills&lt;br /&gt;
** Uses Visual Studio, C#, other languages&lt;br /&gt;
** People he&amp;#039;s met were developers, or business-specific skills; when software testers are needed these people are thrust into the role&lt;br /&gt;
** This might change as more universities offer software testing as a major&lt;br /&gt;
** There are very few courses or certificates in software testing, more prevalent in the US&lt;br /&gt;
*** but Fanshawe college in London has a certificate program&lt;br /&gt;
** Some institutions have a couple of courses in tech writing, project management, quality management; maybe a night course in software quality testing&lt;br /&gt;
** Without academic rigour, different people use different terminology, nomenclature&lt;br /&gt;
*** &amp;quot;Should I know what all these different terms mean?&amp;quot; But it&amp;#039;s fairly common with other software testers Nick has spoken to&lt;br /&gt;
** At Microsoft, developers use their development skills to write tests.  Needs more skills than just coding&lt;br /&gt;
*** Microsoft has internal courses to train testers how to test software&lt;br /&gt;
*** Get promoted to full developer once you&amp;#039;ve proven you can write tests&lt;br /&gt;
** people use Terminology like &amp;quot;Post-mortem&amp;quot; (although nobody dies), mix up &amp;quot;Milestone&amp;quot; and &amp;quot;Benchmark&amp;quot;, &amp;amp;c.&lt;br /&gt;
** Software testing is the start for a developer&amp;#039;s career, then to DevOps&lt;br /&gt;
*** Does this mean the most junior, inexperienced programmers are responsible for testing software?&lt;br /&gt;
** Nick: large companies use junior testers to run tests, senior testers to supervise&lt;br /&gt;
** During an upgrade Nick (a programmer at the time) did testing for the Database Analyst&lt;br /&gt;
*** But a junior intern was assigned to that role as well, just to gain experience.&lt;br /&gt;
*** Worked out details at a high level, then applied tests to get results&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Project Managers take different approaches&lt;br /&gt;
** &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;You can always think of more tests&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** It&amp;#039;s a fine balance between staying on schedule and being thorough&lt;br /&gt;
** Walkthroughs and working in a team can be helpful&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Some testing instructors do not like teaching from texts&lt;br /&gt;
** eg. &amp;quot;Software Testing&amp;quot; by Yogesh Singh&lt;br /&gt;
** But Nicholas gets good ideas from texts, doesn&amp;#039;t agree with those testing instructors&lt;br /&gt;
** THe problem is that the authors suffer from &amp;quot;Perfect Worldism&amp;quot;&lt;br /&gt;
*** A world where there is unlimited time and money, and the perfect tests can be developed&lt;br /&gt;
** Nicholas has experience with sticky problems, gets ideas from texts to adapt to his problem&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Party talk: Software tester does not lead to stimulating conversation&lt;br /&gt;
** YouTube presenter on software testing is not dull!  (**********Need link!***********)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Even the simplest test &amp;quot;is A &amp;lt; 70 ?&amp;quot; can have seven or eight tests&lt;br /&gt;
** Test results, but also overflows, boundaries, different data types&lt;br /&gt;
** Input validation can require many tests&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Working with other people, eg. technical writers&lt;br /&gt;
** For them to understand the software they&amp;#039;ll play with the software, and may create unanticipated conditions&lt;br /&gt;
** Everyone can be a software tester to some degree: Project manager, developer, writer. Even sales?&lt;br /&gt;
** Sometimes testers find problems with usability as they&amp;#039;re running tests; not part of the test suite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* How effective are some of these ad-hoc testers?&lt;br /&gt;
** Is there a bias? Do they have some incentive to pass tests even when there are problems?&lt;br /&gt;
*** Sometimes a QA will hold back tests that would have been better to give to the developer in the first place&lt;br /&gt;
** Accessibility testing is a new skill for QA, may become a testing requirement&lt;br /&gt;
** Business Analyst (BA), developer and tester make a good team&lt;br /&gt;
*** Sometimes the process of testing will identify the need for more testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Reporting bugs&lt;br /&gt;
** Requires consideration, tact&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Test plans may need to be developed quickly&lt;br /&gt;
** But near the end of a project when time is tight there may not be time to develop tests&lt;br /&gt;
** So quality of code may suffer near the end of the project&lt;br /&gt;
*** Breaking things during testing that no-one has time to fix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Automated testing?&lt;br /&gt;
** Nick has experience with automated regression testing&lt;br /&gt;
** Automated regression testing reduces the introduction of new bugs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Open Broadcaster Software&lt;br /&gt;
** Used to catch all activity during user testing&lt;br /&gt;
** Also use Virtual Box recorder uses host to capture all the output on the VM screen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Monkey Testing&amp;quot;&lt;br /&gt;
** Also &amp;quot;fuzz testing&amp;quot; or &amp;quot;fuzzing&amp;quot;&lt;br /&gt;
** Fill all fields, try to overflow, pound on the keyboard, click as fast as possible&lt;br /&gt;
*** But this this does not lead to reproducible errors (fine timing errors)&lt;br /&gt;
*** Although some testers claim they can reproduce&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Pride in finding bugs?&lt;br /&gt;
** Nick finds that the &amp;quot;high five&amp;quot; time should occur only after the entire team has identified, reported, documented, and fixed the error, and re-tested&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Load testing&lt;br /&gt;
** Hitting a system with a large number of transactions, &amp;amp;c.&lt;br /&gt;
** But a bogged down system may not be writing to logs, making analysis difficult&lt;br /&gt;
** A benefit in load testing is adding assertions, find issues with threads&lt;br /&gt;
*** Assertions and Singletons...&lt;br /&gt;
** Be sure to validate the output even when just testing for capacity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick has written a test for XML testing&lt;br /&gt;
** But the code Nick wrote was not well tested at all! Oh, the irony!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Q: Do you use debugger software like GDB to examine the flow of code?&lt;br /&gt;
* A: Not common, but becoming more prevalent.&lt;br /&gt;
** Certainly having a debugger to throw at the code is nice to have&lt;br /&gt;
** But much testing is done with the software under test as a black box, just examine the input and the expected output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick speaks of the complexity of software testing.&lt;br /&gt;
** One thing works fine by itself, and other thing does too, but do they work together?&lt;br /&gt;
** Different software on different platform needs to interoperate, but sometimes differences in date formats causes problems&lt;br /&gt;
*** although each platform by itself passed all tests&lt;br /&gt;
** Dealing with currencies, eg. USD and CAD, and GBP&lt;br /&gt;
** Dealing with leap years and 29 February&lt;br /&gt;
** General rule: Anything date sensitive needs to test for leap years&lt;br /&gt;
*** and time zones! Anything dealing with calendars needs to worry about time zones&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* What happens internationally when different countries need to interoperate?&lt;br /&gt;
** Companies have service contracts that define how the service is implemented&lt;br /&gt;
*** If the system is changed, the contract defines who is responsible for continued interoperation&lt;br /&gt;
*** If I make a change and it breaks your system, it&amp;#039;s your fault for not defining the contract accurately&lt;br /&gt;
*** called &amp;quot;spring contracts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick gives an example from James ---- YouTube video (&amp;quot;nominal input voltage is 100VAC to 250VAC&amp;quot;)&lt;br /&gt;
** &amp;quot;Test the nominal range&amp;quot; is an incomplete answer&lt;br /&gt;
** Also need to test outside the range&lt;br /&gt;
** The user manual may give advice not to go outside the nominal range, but users don&amp;#039;t necessarily read the manual&lt;br /&gt;
** So, does the system fail gracefully outside the nominal range?&lt;br /&gt;
** This is the function of the software tester, to design the test to ensure that software or equipment is failsafe&lt;br /&gt;
*** eg. for medical equipment&lt;br /&gt;
*** How much money is available to fry the device under test?  Some prototypes may be &amp;#039;&amp;#039;&amp;#039;really&amp;#039;&amp;#039;&amp;#039; expensive&lt;br /&gt;
*** Many examples of people damaging electronics with incorrect application of voltage!&lt;br /&gt;
** It&amp;#039;s good for testers to think outside the parameters of the system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Testing to ensure system has a consistent look and feel&lt;br /&gt;
** eg. fonts on some menus were different&lt;br /&gt;
*** Is that a software testers responsibility? Sometimes as an additional task&lt;br /&gt;
*** There are tools (overlays, templates) to find these issues&lt;br /&gt;
** Window resizing can make the application fail, but there need to be limits for those tests&lt;br /&gt;
** Testing for &amp;quot;greyed out&amp;quot; functions can be time consuming&lt;br /&gt;
*** When a function is available when it shouldn&amp;#039;t be can result in errors&lt;br /&gt;
** These are general things for a tester to keep in mind&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Systems that have features which have little to do with each other&lt;br /&gt;
** Easy to test they&amp;#039;re not contending for resources, &amp;amp;c.&lt;br /&gt;
** But still important to run these features simultaneous to shake loose bugs, eg. memory allocation, concurrent DB access&lt;br /&gt;
** Perhaps a simple monitor with limited functions: But what if something goes wrong, does the device report an error?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Client-side data validation: All testing needs to be duplicated at the server to ensure malusers don&amp;#039;t bypass client-side validation&lt;br /&gt;
** But that increases load on the server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Logging&lt;br /&gt;
** Logs may indicate problems with the way the code executes, eg. repeated log entries indicate an invalid loop&lt;br /&gt;
** Circular reasoning: How can the logs from software under test be considered &lt;br /&gt;
*** Logs are only one step, begin the process of analysis&lt;br /&gt;
*** NewRelic will test user experience (surveillance software)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Nick has found bugs because the test suites are well designed&lt;br /&gt;
** But at least half the time the bugs discovered were found in spite of the test, which was not designed to find that kind of bug&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Q&amp;amp;A&lt;br /&gt;
** Is the developer + tester model usable?&lt;br /&gt;
*** May be a bit scary for shops not set up for that collaborative arrangement&lt;br /&gt;
** Nick says to just forge ahead.&lt;br /&gt;
*** Having experience is good, but can also develop that experience in-house&lt;br /&gt;
** Worries about the coming requirements for accessibility for software&lt;br /&gt;
*** May take changes in coding practices (use POSH: Plain Ol&amp;#039; Semantic HTML instead of Javascripted forms)&lt;br /&gt;
*** Jurisdictional differences may be difficult to deal with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NPSA]]&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>NicholasCollins</name></author>
		
	</entry>
</feed>