Quite a thought provoking speech. I was fortunate to see this in person! Take an hour and check it out--it's totally worth it.
19 May 2009
23 February 2009
Hitler's nightly build fails
Oh man this is good. We should hire (no, not "heil") Hitler.... I love the part where the lady consoles the other lady saying, "Don't worry, he didn't mean that about Scrum." Genius.
26 September 2008
Politics should be like Software Development
I'm watching the presidential debates. Each candidate makes claims that the other said "this", then the other retorts with, "No, I said 'that'." Back and forth. So how do you know who's telling the truth, who's lying, who's twisting the truth, and who's misunderstood who?
How great would it be to have a list of things that each candidate stated at any given time, then when whoever gets elected, we can all see if they've actually done what they said they'd do. It'd be kinda like SW requirements for some project--you define them, your teams implement them in the software, then other teams make sure they were implemented as stated, then you all get together and talk about (and tell the rest of the company) the good things you did and the bad things you did.
Who in the public actually keeps our president accountable? I sure couldn't tell you what Dubbya claimed he did and if he did it. It just doesn't seem like there's much accountability for the things these guys say they're going to do.
Also, it seems like these guys don't know if the other is talking about strategy, tactics, or post-mortem topics. One attacks the other's strategies, then the first justifies with their tactics, then the first attacks back talking about the results of everything. Is it that unclear? It just seems like candidates thrive (or are told they'll thrive) on attacking the other, and in order to retort "politically", they work around the issues and talk about something else.
It's just annoying at how much of a TV show these campaigns have become--candidates can say whatever they want to say as long as it entertains the public. They work on our emotions, using planned out catch phrases and directed topics. But once the winner gets in office, who's there to keep them accountable?
25 July 2008
Vista auto-reboot-for-updates #4
*sigh* I guess I'm used to this now, so it's not so surprising, although just as annoying. I was just setting up a meeting in Outlook when all of the sudden Outlook just started going in and out of focus, then *poof* everything closed and it was rebooting. Once again, thanks POS Vista for not considering that I was actually working on something before you decided to reboot--reboot without ever having asked me if that's what I wanted. I actually like how OS X assumes a lot for me, but never does it assume that I want to throw my work to the wind.
I really just don't get how this is good behavior. Judging by the frequency of my blogs on the topic, this happens about once every 3 - 6 weeks since April. Amazing. My opinion of MS continues to plummet...
12 June 2008
Vista auto-reboot-for-updates #3
Yet again, I'm in the middle of my morning emailing, and all of a sudden, Vista decides to reboot without warning. How the hell could M$ ever decide this was a good idea? I really can't think of anything more frustrating than losing work. And oh ya... it's been "Configuring updates" for the past 10 minutes now... awesome. *sigh*
11 June 2008
RANT: writing 1000 test cases is not that bad
Labels:
discipline,
engineering,
quality,
test _cases
04 June 2008
Words (for all developers) To Live By
29 May 2008
Vista & Its Own Mind #2
Yet again, Vista presents the pleasant surprise of exiting all my work and rebooting, just to apply updates that it never told me about. I'm appalled for the second time now.
Update:
And Outlook didn't even save the emails I had written but not yet sent... So freaking annoying.
28 May 2008
QC's: Maturity v. Stability
ISO 9126 presents the concepts of "quality characteristics", which is proving to be both helpful and confusing here at work. We've had our longest group process meetings on this topic--just trying to figure out and agree on what each one of these means. One of the big problems is figuring out what some of these are not. We use many of these words loosely in this world of testing/development, thus setting ourselves up for confusion when talking about this stuff.
Technical Malapropisms
Now, no one likes a vocal grammar Nazi around, but sometimes it really is important to talk about the distinctions between different things you talk about on a day to day basis.
One of the many bits of confusion came when talking about "Stability". Stability falls (as a sub-characteristic) under the main characteristic of "Maintainability", which can make sense if you take a minute to ponder. When we started trying to come up with examples of this, however, most of us came up with examples of "Maturity", which falls under "Reliability." It seems that in non-ISO conversations, stability is talked about in a way that encompasses both of these sub-characteristics. I did some brief google-ing to see if we were the only ones with this "problem" and found an abstract on Ecological Modelling: An inverse relationship between stability and maturity in models of aquatic ecosystems. This article on software maturity models suggests that stability is a factory that makes up maturity. ISO says otherwise:
Maturity:
The capability of the software product to avoid failure as a result of faults in the software.
Stability:
The capability of the software product to avoid unexpected effects from modifications of the software.
Maturity deals with "failure as a result of faults"; Stability deals with "unexpected effects from modifications."
Failures v. Unexpected Effects
Maturity deals with failures; Stability deals with unexpected effects. What's the difference? ...in terms of test cases passing I say, nothing. Both are the absence of passing; it doesn't matter what you call it. ...unless this means to say that a product is unstable if changes in module A unexpectedly effect the behavior in module B. One could then interpret "failure" as the inability for module A to meet specification for module A when testing module A; "unexpected effects" are then the inability for module A to meet specification for module A when testing module B.
Faults v. Modifications
Maturity deals with faults in the software; Stability deals with modifications of the software. What's the difference? Key differences become possibly more confusing when you take a look at the definition and notes of the main characteristics for each sub-characteristic. Note 1 for "Reliability" (parent of Maturity) says:
"Wear or aging does not occur in software. Limitations in reliability are due to faults in requirements, design, and implementation. Failures due to these faults depend on the way the software product is used and the program options selected rather than on elapsed time."Interesting. A fault can be in the requirements. A fault can be in the design. A fault can be in the implementation. Lack of maturity, then, is failures in one of these fault areas. The 2nd sentence in the definition of "Maintainability" (parent of Stability) says:
"Modifications may include corrections, improvements or adaptation of the software to changes in environment, and in requirements and functional specifications."A modification requires that something exist already; a new "version" of that thing comes about after modifications are made. Stability, then, is strictly tied to how the application behaves in comparison to how it behaved in the last version. Lack of stability is evident, then, when the same test activities are conducted in two different versions of the application, both in the same environment, and failures occur in unexpected areas of the application.
Conclusions
So one might be led to conclude that when testing version 2 of some app, you really could run test A and essentially be testing for both stability and maturity. But like many of these other ISO characteristics, the line is quite fine. The only way I can see it comes back to relate to one thing: what's effected. If you test A after changes were made in A, then you're testing maturity of A. If you test [B-Z] after making changes in A, you're testing stability of the app.
Labels:
iso,
maturity,
quality,
reliability,
stability
21 May 2008
14 May 2008
Teach me to test
Labels:
development-testing,
discipline
05 May 2008
A test case is a scientific procedure
21 April 2008
Testing is an Engineering discipline
Engineering is the discipline and profession of applying scientific knowledge and utilizing natural laws and physical resources in order to design and implement materials, structures, machines, devices, systems, and processes that realize a desired objective and meet specified criteria. More precisely, engineering can be defined as “the creative application of scientific principles to design or develop structures, machines, apparatus, or manufacturing processes, or works utilizing them singly or in combination; or to construct or operate the same with full cognizance of their design; or to forecast their behavior under specific operating conditions; all as respects an intended function, economics of operation and safety to life and property.”Engineering - Wikipedia, the free encyclopedia ...and notice the word "discipline". Development Engineers can (and should be) hounded for bad formatting and not commenting their code--along those same lines of being disciplined, let the rest of us know what you're trying to accomplish when writing your tests! Be explicit about what you're trying to test for, show steps for how to test for that, and be concise about what to expect. Just as a screwy, uncommented piece of code that someone else wrote can drive a Development Engineer nuts, a screwy test can have the same effect on your fellow Test Engineers. Please, learn to be disciplined in your work--you'll gain respect from your co-workers and probably realize that you missed a few things along the way. It's not hard--it just takes discipline!
Labels:
discipline,
engineering
16 April 2008
US FDA/CDRH: General Principles of Software Validation; Final Guidance for Industry and FDA Staff
Software verification and validation are difficult because a developer cannot test forever, and it is hard to know how much evidence is enough. In large measure, software validation is a matter of developing a "level of confidence" that the device meets all requirements and user expectations for the software automated functions and features of the device. Measures such as defects found in specifications documents, estimates of defects remaining, testing coverage, and other techniques are all used to develop an acceptable level of confidence before shipping the product. The level of confidence, and therefore the level of software validation, verification, and testing effort needed, will vary depending upon the safety risk (hazard) posed by the automated functions of the device.There's also a great section called "Software is Different From Hardware", which points out some great subtle-but-huge differences between the two. Section 5. Activities and Tasks has some good practical info on planning and test tasks--both Black Box and White Box (although not explicitly so). US FDA/CDRH: General Principles of Software Validation; Final Guidance for Industry and FDA Staff
Labels:
big_companies,
iso
10 April 2008
Vista annoyance
Labels:
vista
Apple's Characteristics of Great Software
- 2 out of 7 (Ease of Use, Attractive Appearance) are related to ISO's Usability
- 1 out of 7 (Reliability) are related to ISO's Reliability
- 1 out of 7 (High Performance) are related to ISO's Efficiency
- 1 out of 7 (Interoperability) are related to ISO's Functionality
- 1 out of 7 (Adaptability) are related to ISO's Portability
- Mobility seems to be a hybrid of ISO's Usability, Functionality, and Efficiency
28 March 2008
27 March 2008
The BS7925-2 Standard for Software Component Testing
- 2.1.1.8 mentions the order in which test activities should be done--it includes Component Test Specification (sandwiched between Planning and Execution)
- 2.3 "Component test specification". In brief, tests are written here using the techniques that were determined doing Planning (read: tests weren't written during Planning, but the techniques were chosen then)
- 3 "Test Case Design Techniques". Concisely describes popular and useful techniques for creating test cases for a component.
- 4 "Test Measurement Techniques". These aren't criteria, but rather methods for helping to figure out progress--and maybe setting criteria based on this info. They show how to do this for each test case technique type in section 3 (most are pretty obvious, but it's still nice to see on paper).
Labels:
definitions,
standards,
techniques
26 March 2008
softwaretestingsucks.com
I'm not exactly sure how this got started, but there are actually a few decent articles/pages of info in here on the basics of testing:
- What is Quality?
- Life Cycle testing
- Testing Types
- Testing Techniques
- Testing Tools
- Certification Programs
- Testing Jokes
Labels:
definitions,
resources,
techniques,
tools
Subscribe to:
Posts (Atom)