Over at the Microsoft Edge blog, Nolan Lawson has an in-depth look of the simple scroll:
Scrolling is one of the oldest interactions on the web. Long before we had pull-to-refresh or infinite-loading lists, the humble scrollbar solved the web’s original scaling problem: how can we interact with content that’s stretched beyond the available viewport?
Today, scrolling is still the most fundamental interaction on the web, and perhaps the most misunderstood. For instance, do you know the difference between the following scenarios?
User scrolls with two fingers on a touch pad
User scrolls with one finger on a touch screen
User scrolls with a mouse wheel on a physical mouse
User clicks the sidebar and drags it up and down
User presses up, down, PageUp, PageDown, or spacebar keys on a keyboard
If you have ever doubted the importance of the humble Oxford comma, let this supremely persnickety Maine labor dispute set you straight.
. . . .
This is what the law says about activities that do NOT merit overtime pay. Pay attention to the first sentence:
The canning, processing, preserving, freezing, drying, marketing, storing, packing for shipment or distribution of:
(1) Agricultural produce;
(2) Meat and fish products; and
(3) Perishable foods.
Of course, the Oxford comma gets all the credit, but note the parallel construction also makes it clear which verbs apply: Canning, processing, preserving, freezing, drying, marketing, storing, packing are gerunds. Shipment and distribution are not. If they were to be included as equivalent, they would be shipping and distributing.
So take the advice of your humble Director: Use the serial comma and parallel construction–verbs ending in -ing, infinitives, gerunds (which are verbs ending in -ing that act as nouns as in the above example), and so on–to clearly express items that are the same in the purpose of the sentence.
Writing and to express oneself clearly are incorrect and confusing.
In my back pocket, where normal people carry pictures of their families, I have a list of common things I test every time I encounter a new application. It includes old favorites like the Hamlet test and new favorites like assorted comment strings, but nestled amongst the almost indistinguishable lines of random text, I have a set of SQL keywords:
SELECT FROM WHERE GROUP BY HAVING ORDER BY INSERT UPDATE WHERE MERGE DELETE BEGIN WORK START TRANSACTION COMMIT ROLLBACK CREATE DROP TRUNCATE ALTER
I added this back when I was doing a lot of testing for a company that used an offshore development team for much of its development work, and the offshore team was prone to making the same coding mistakes from project to project. I discovered at one point that they were preventing SQL injection attacks by barring users from entering SQL keywords in edit boxes. So I added the line to the list of tests lo, those many years ago, and I’ve included it in my basic test checklist ever since.
It’s taken me thirty seconds or a minute to run the test every time I’ve encountered a new form in many, many different projects for many, many different clients.
But I found another issue that the string triggered in a recent project, which validated my running the test perpetually, kind of like keeping every little gimcrack and doodad I’ve ever encountered in my closet or garage is validated whenever I need something like it and I don’t have to run to the hardware store to spend a buck to buy a new one.
So what’s the craziest test you always run, and why do you run it?
His name was Adolph Blaine Charles David Earl Frederick Gerald Hubert Irvin John Kenneth Lloyd Martin Nero Oliver Paul Quincy Randolph Sherman Thomas Uncas Victor William Xerxes Yancy Zeus Wolfeschlegelsteinhausenbergerdorffwelchevoralternwarengewissenhaftschaferswessenschafewarenwohlgepflegeundsorgfaltigkeitbeschutzenvorangreifendurchihrraubgierigfeindewelchevoralternzwolfhunderttausendjahresvorandieerscheinenvonderersteerdemenschderraumschiffgenachtmittungsteinundsiebeniridiumelektrischmotorsgebrauchlichtalsseinursprungvonkraftgestartseinlangefahrthinzwischensternartigraumaufdersuchennachbarschaftdersternwelchegehabtbewohnbarplanetenkreisedrehensichundwohinderneuerassevonverstandigmenschlichkeitkonntefortpflanzenundsicherfreuenanlebenslanglichfreudeundruhemitnichteinfurchtvorangreifenvorandererintelligentgeschopfsvonhinzwischensternartigraum, Senior.
Which is shorter than many names in my address book of test data.
Bonus good points for the long unbroken last name which is good for testing wrapping and truncation.
Posted in Miscellany | Comments Off on And He Wants To Sign Up For Your Web Site
This week, I’m starting all user stories the proper Existentialist way: “Remember, we die, but….”
Remember, we die, but during the course of his meaningless existence, the store clerk wants to scan or type the SKU to find out if other stores in the local area have the same item in different sizes in stock.
Posted in Miscellany | Comments Off on QA Music: Every Good Existentialist Story
I’ve gotten a link to the Big List of Nasty Strings several times in the last couple of days, so it must be going around the social media again. I’ve already used it for a number of years as a second set of strings to test after my first line of strings (including Hamlet) if I have time.
But you know what the BLNS lacks? Code comment markers and other code keywords. Oh, yeah. I like to use these:
""" Python Comment
comment that spans multiple lines"""
''' Python Comment
comment that spans multiple lines'''
""" Python Multiline comment end
''' Python Multiline comment end
/* Comment */
*/ Comment ended
?> end PHP Script
REM batch and Oracle comment
-- SQL Line comment
GO //start SQL Script
/// C# XML Tag Comments
' Visual Basic comments
<!--- Cold Fusion Comments
<% ASP Comment
<% Response.End %>
Try those bad Oscars out in your edit boxes. Keep in mind, they might well go into the database without a problem, but as with any other string test, half of the test (and quite often much of the fun) comes when your Web or other application is called upon to display these values again.
For example, WordPress itself cannot handle HTML comments and the end PHP script line above; when I first reviewed this post, the complete text of the post did not display and much of the blog itself did not display (as PHP after the end PHP line did not work).
Whenever I have to take a video call, I spend a couple minutes testing out the angle of the Web cam (and the sound quality of the microphone).
Not only does it ensure that your video call is professional-looking and impressive, but in my case, it can be the difference between frightening someone who doesn’t know me well and impressing them with my well read nature.
That is, I lower the Web cam to hide the bladed weapon collection and focus on the bookshelves below it.
I also remove the room’s second chair and make sure there are no comic book boxes, vacuum cleaners, or piles of rubbish within view.
But, to be honest, I’m still making a fictitious shot, though, because the books behind me are the books I have yet to read.
Posted in Best practices | Comments Off on A Hint For Video Interviews and Sales Calls
Did you know if you select multiple items in Mozilla Thunderbird and press Delete followed quickly by enter, Thunderbird deletes the messages and then opens multiple empty message windows?
You can often find unexpected behavior when you trigger two actions at once that the user would never do, such as this particular thing I always do.
In Web testing, you can do this using the Enter key to trigger one button while clicking another or by clicking multiple buttons in quick succession.
In mobile testing, you can do this by tapping two things at once or making two gestures at once. Or by Doing something and pressing the Home button or the Power button.
In desktop application testing, this can be by clicking a button while pressing a hot key or pressing multiple hot keys at once or in rapid succession.
Regardless, the application should always pause other input while taking an action and should always check to see if it has everything it needs to act on when starting an action. In this case, it would be an active, not deleted message.
Posted in Dirty Tricks | Comments Off on Fun Test: Hot Key Race Conditions
There’s a right way and a wrong way to keep test data out of production. Citigroup chose the wrong way:
It turned out that the error was a result of how the company introduced new alphanumeric branch codes.
When the system was introduced in the mid-1990s, the program code filtered out any transactions that were given three-digit branch codes from 089 to 100 and used those prefixes for testing purposes.
But in 1998, the company started using alphanumeric branch codes as it expanded its business. Among them were the codes 10B, 10C and so on, which the system treated as being within the excluded range, and so their transactions were removed from any reports sent to the SEC.
The SEC routinely sends requests to financial institutions asking them to send all details on transactions between specific dates as a way of checking that nothing untoward is going on. The coding error had resulted in Citigroup failing to send information on 26,810 transactions in over 2,300 such requests.
Citigroup was fined $7,000,000 for the problem which probably stemmed from a lack of communication.
Posted in Failed applications | Comments Off on Keeping Your Test Data Out Of Production. Also, Your Production Data.