Click here to monitor SSC
SQLServerCentral is supported by Redgate
 
Log in  ::  Register  ::  Not logged in
 
 
 


Testing is Your Best Investment


Testing is Your Best Investment

Author
Message
Steve Jones
Steve Jones
SSC-Dedicated
SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)SSC-Dedicated (36K reputation)

Group: Administrators
Points: 36342 Visits: 18752
Comments posted to this topic are about the item Testing is Your Best Investment

Follow me on Twitter: @way0utwest
Forum Etiquette: How to post data/code on a forum to get the best help
My Blog: www.voiceofthedba.com
Robert-378556
Robert-378556
SSCommitted
SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)SSCommitted (1.6K reputation)

Group: General Forum Members
Points: 1570 Visits: 1007
Definitely agree.
Writing tests (and documentation) is also a "simplicity test". If a feature can't be tested in a simple way, it's probably a good moment to rethink and redesign the feature.
David.Poole
David.Poole
Hall of Fame
Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)Hall of Fame (3.7K reputation)

Group: General Forum Members
Points: 3708 Visits: 3121
Amen to that.

I am making the switch from TDD to BDD (behaviour driven development) simply because the readability of the tests and output is vitally important in demonstrating software quality to non-technical stakeholders.

As someone with "Big Data" in their job title a large part of the battle is convincing people used to shrink wrapped software and big vendor SLAs that cutting edge stuff can be developed in a reliable manner. Using Behaviour Driven Development as a communication device as well as a quality metric is extremely important.

LinkedIn Profile

Newbie on www.simple-talk.com
chrisn-585491
chrisn-585491
SSC Eights!
SSC Eights! (964 reputation)SSC Eights! (964 reputation)SSC Eights! (964 reputation)SSC Eights! (964 reputation)SSC Eights! (964 reputation)SSC Eights! (964 reputation)SSC Eights! (964 reputation)SSC Eights! (964 reputation)

Group: General Forum Members
Points: 964 Visits: 2322
After two agonizing weeks of semi-productivity in SSIS on a huge project, I realized my actual job is testing vendors software. (I love the core SQL Server engine, but there's no way that much of the surrounding software (SSIS, SSRS) goes through the same functional testing and usability testing rigor.)

In my code, (mostly custom ETL and utilities), the functionality and users are limited, so tests exist, but they are not as numerous had they gone in end user applications. However my colleagues can use, read and maintain the code and tests. (If they can, then I can, even years later...)

As for using SSIS, the important test is can it be used by my coworkers for this project? Right now it is failing the usability and the functionality tests, so I guess we will be testing the alternatives...
Jeff Moden
Jeff Moden
SSC-Forever
SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)

Group: General Forum Members
Points: 45420 Visits: 39942
I love this article. Too often, testing takes a back door and a lot of managers just don't understand how expensive troubleshooting and rework actually is... especially if the fault makes it out to the customer when they can least afford for a fault to appear.

--Jeff Moden

RBAR is pronounced ree-bar and is a Modenism for Row-By-Agonizing-Row.
First step towards the paradigm shift of writing Set Based code:
Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column.
Although they tell us that they want it real bad, our primary goal is to ensure that we dont actually give it to them that way.
Although change is inevitable, change for the better is not.
Just because you can do something in PowerShell, doesnt mean you should. Wink

Helpful Links:
How to post code problems
How to post performance problems
Forum FAQs
TomThomson
TomThomson
SSChampion
SSChampion (10K reputation)SSChampion (10K reputation)SSChampion (10K reputation)SSChampion (10K reputation)SSChampion (10K reputation)SSChampion (10K reputation)SSChampion (10K reputation)SSChampion (10K reputation)

Group: General Forum Members
Points: 10769 Visits: 12019
If you want code working and out of the door quickly, there's only one way to do it: first spend enough effort understanding requirements and usability issues, if possible discussing user interfaces with people who will be users, and then make your development and deployment programme inculde thorough testing at every stage: unit testing (including stress testingn of units, checking handling of invalid input data and/or environmental data as well as function testing, throughput testing, and performance testing) is important; system testing must include both black-box testing (tests based on how the software is supposed to work) and white-box testing (tests based on what the software is supposed to do), it must include stress testing, it must include error injection to see if errors can be contained (and ideally recovered without too much impact on the user) and don't cause unlimited damage, it must include testing with workloads and data volumes that exceed requirements to be certain that there is smooth degradation rather than sudden total collapse, it must include testing with bizarre data, and tests must include response times (both for interactive operations and for batch operations); quality assurance testing must be white box testing thoroughly independent of testing that has gone before, it must include stress testing of all types and performance testing of all types as well as error management testing and functional testing, and any failure discovered in QA tests but not earlier should lead to a review of testing plans to try to ensure that that can never happen again. Both System tests and QA tests should have regard to usability and to views expressed by potential end users, so that acceptance trials won't throw up too many unexpected enhancement requests.

If all that is done, there won't be too many big expensive errors on customer sites. There will perhaps be some, as getting it right is difficult, so the software should always be designed to be easily mended as well as being thoroughly tested.

Unforunately it is usually impossible to convince management that doing the job properly form the start will deliver the goods sooner than attempting to do it the cheap way; many managers don't even learn from their failures, but find someone else to blame for the consequences of their decisions to ignore good development and testing practice.

Tom

Doctor Who 2
Doctor Who 2
SSC Veteran
SSC Veteran (287 reputation)SSC Veteran (287 reputation)SSC Veteran (287 reputation)SSC Veteran (287 reputation)SSC Veteran (287 reputation)SSC Veteran (287 reputation)SSC Veteran (287 reputation)SSC Veteran (287 reputation)

Group: General Forum Members
Points: 287 Visits: 596
Unit testing is new to me. Where I worked it was the culture not to do it at all. However, since having left there I've been teaching myself new skills, and one of them is unit testing. I have come to really see it's benefits and will use it wherever and whenever I can.

Rod
Jeff Moden
Jeff Moden
SSC-Forever
SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)SSC-Forever (45K reputation)

Group: General Forum Members
Points: 45420 Visits: 39942
TomThomson (8/25/2014)
If you want code working and out of the door quickly, there's only one way to do it: first spend enough effort understanding requirements and usability issues, if possible discussing user interfaces with people who will be users, and then make your development and deployment programme inculde thorough testing at every stage: unit testing (including stress testingn of units, checking handling of invalid input data and/or environmental data as well as function testing, throughput testing, and performance testing) is important; system testing must include both black-box testing (tests based on how the software is supposed to work) and white-box testing (tests based on what the software is supposed to do), it must include stress testing, it must include error injection to see if errors can be contained (and ideally recovered without too much impact on the user) and don't cause unlimited damage, it must include testing with workloads and data volumes that exceed requirements to be certain that there is smooth degradation rather than sudden total collapse, it must include testing with bizarre data, and tests must include response times (both for interactive operations and for batch operations); quality assurance testing must be white box testing thoroughly independent of testing that has gone before, it must include stress testing of all types and performance testing of all types as well as error management testing and functional testing, and any failure discovered in QA tests but not earlier should lead to a review of testing plans to try to ensure that that can never happen again. Both System tests and QA tests should have regard to usability and to views expressed by potential end users, so that acceptance trials won't throw up too many unexpected enhancement requests.

If all that is done, there won't be too many big expensive errors on customer sites. There will perhaps be some, as getting it right is difficult, so the software should always be designed to be easily mended as well as being thoroughly tested.

Unforunately it is usually impossible to convince management that doing the job properly form the start will deliver the goods sooner than attempting to do it the cheap way; many managers don't even learn from their failures, but find someone else to blame for the consequences of their decisions to ignore good development and testing practice.


+1000!

Heh... I remember the conversation we had in a similar vein... If you have to pick amongst doing it Right, Fast, or Cheap, make sure that you choose "Right" because, as you pointed out in that other conversation, there's a very good chance that "Fast" and "Cheap" will come along for the ride.

--Jeff Moden

RBAR is pronounced ree-bar and is a Modenism for Row-By-Agonizing-Row.
First step towards the paradigm shift of writing Set Based code:
Stop thinking about what you want to do to a row... think, instead, of what you want to do to a column.
Although they tell us that they want it real bad, our primary goal is to ensure that we dont actually give it to them that way.
Although change is inevitable, change for the better is not.
Just because you can do something in PowerShell, doesnt mean you should. Wink

Helpful Links:
How to post code problems
How to post performance problems
Forum FAQs
Gary Varga
Gary Varga
SSCrazy Eights
SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)SSCrazy Eights (8.4K reputation)

Group: General Forum Members
Points: 8405 Visits: 6172
Jeff Moden (8/25/2014)
TomThomson (8/25/2014)
If you want code working and out of the door quickly, there's only one way to do it: first spend enough effort understanding requirements and usability issues, if possible discussing user interfaces with people who will be users, and then make your development and deployment programme inculde thorough testing at every stage: unit testing (including stress testingn of units, checking handling of invalid input data and/or environmental data as well as function testing, throughput testing, and performance testing) is important; system testing must include both black-box testing (tests based on how the software is supposed to work) and white-box testing (tests based on what the software is supposed to do), it must include stress testing, it must include error injection to see if errors can be contained (and ideally recovered without too much impact on the user) and don't cause unlimited damage, it must include testing with workloads and data volumes that exceed requirements to be certain that there is smooth degradation rather than sudden total collapse, it must include testing with bizarre data, and tests must include response times (both for interactive operations and for batch operations); quality assurance testing must be white box testing thoroughly independent of testing that has gone before, it must include stress testing of all types and performance testing of all types as well as error management testing and functional testing, and any failure discovered in QA tests but not earlier should lead to a review of testing plans to try to ensure that that can never happen again. Both System tests and QA tests should have regard to usability and to views expressed by potential end users, so that acceptance trials won't throw up too many unexpected enhancement requests.

If all that is done, there won't be too many big expensive errors on customer sites. There will perhaps be some, as getting it right is difficult, so the software should always be designed to be easily mended as well as being thoroughly tested.

Unforunately it is usually impossible to convince management that doing the job properly form the start will deliver the goods sooner than attempting to do it the cheap way; many managers don't even learn from their failures, but find someone else to blame for the consequences of their decisions to ignore good development and testing practice.


+1000!

Heh... I remember the conversation we had in a similar vein... If you have to pick amongst doing it Right, Fast, or Cheap, make sure that you choose "Right" because, as you pointed out in that other conversation, there's a very good chance that "Fast" and "Cheap" will come along for the ride.


So, so true.

On top of that, by choosing "Fast" and "Cheap" one often has just selected "Delayed" and "Costly". Delayed because someone, somewhere decides that the early shipped software is unworkable, unreliable and/or unmaintainable and costly in terms or maintenance, reputation and/or loss of income.

Gaz

-- Stop your grinnin' and drop your linen...they're everywhere!!!
Go


Permissions

You can't post new topics.
You can't post topic replies.
You can't post new polls.
You can't post replies to polls.
You can't edit your own topics.
You can't delete your own topics.
You can't edit other topics.
You can't delete other topics.
You can't edit your own posts.
You can't edit other posts.
You can't delete your own posts.
You can't delete other posts.
You can't post events.
You can't edit your own events.
You can't edit other events.
You can't delete your own events.
You can't delete other events.
You can't send private messages.
You can't send emails.
You can read topics.
You can't vote in polls.
You can't upload attachments.
You can download attachments.
You can't post HTML code.
You can't edit HTML code.
You can't post IFCode.
You can't post JavaScript.
You can post emoticons.
You can't post or upload images.

Select a forum

































































































































































SQLServerCentral


Search