tdd


Can I verify test driven development?


can test driven development formally verified? Is there any guarantee that the program is correct and work properly? Is there any formal bases for choosing test? is there any algorithm to follow it?
TDD is no silver bullet. You still have to write the code and you can still make mistakes in your logic and in your code. I see TDD as a thinking tool that helps you work through a problem in a very systematic way.
Here are some articles that may help you in terms of what algorithm to follow:
The 3 rules of TDD
The Transformation Priority Premise
It's a good point that, without a formal specification of what the system does, it is difficult to write a set of tests which are known to be adequate. Here are a few papers which might help, along with quotes from their abstracts:
http://www.pst.ifi.lmu.de/~baumeist/publications/baumeister04a.pdf
"The goal of this paper is to show that it is possible, with appropriate tool support, to combine formal specifications with test driven development without loosing the agility of test driven development."
http://wiki.overturetool.org/images/d/df/WS9Mochio.pdf
"This paper presents the use of VDM++ formal specification language as a basis of scalable agile formal (SAF) software development method, which is an agile method for mission-critical or large-scale software development"
https://online.tugraz.at/tug_online/voe_main2.getVollText?pDocumentNr=275810&pCurrPk=67400
"In this paper we propose the combination of several techniques into an agile formal development process: model-based testing, formal models, refinement of models, model checking, and test-driven development."
TDD is an empirical, example-based process, not a proof-based approach. In terms of correctness, it's only worth as much as the practicioner's rigor allows. TDD provides guidance as to how to program driven by tests, not what to program or test -- you could pretty much TDD to the perfection an implementation that does nothing, or passes clueless tests.
You can however apply traditional testing techniques like Equivalence Partitioning to increase the completeness of your TDD tests. Code coverage analysis also provides an (incomplete) view on the validity of your tests.
For a more theorem-proving oriented approach, you can check out Property-based Testing. It can be attacked with a TDD mindset, although the TDD cycle will certainly not look like a canonical one in such a context.
can test driven development formally verified?
There is no formal verification of test-driven development since the main objective of it is not to produce tests but to provide a way to approach design and coding.
Is there any guarantee that the program is correct and work properly?
I don't think that there is a full guarantee that the program is correct no matter which approach we take.
Is there any formal bases for choosing test?
The way we're choosing tests in TDD is by writing those that should guide us through the implementation of the next unit of code we're about to write.
is there any algorithm to follow it?
It's actually very simple (but hard to get proficient with).
Think about the next unit of code that should be written.
Write a test that will fail since there is no implementation code.
Write the code and confirm that the test is successful.
Refactor

Related Links

Ideas on how to TDD application that needs to retrieve user name from system environment
ATDD versus BDD and the proper use of a framework
Bizmonade - testing orchestration that receives ANY document
Selenium vs Celerity? [closed]
TDD and Code Coverage
Testing state in S#arp Architecture - Best practice
TDD System Under Test Creation Patterns (AutoFixture)
What is test-driven development? [duplicate]
Unit tests in TDD
Is Agile different from TDD ? If so what are the main differences?
What are the types of bugs test-driven development is most effective at catching?
TDD with Strategy Pattern
Is there a good place to discuss Test Driven Development?
TDD and UML together
TDD Example for Business Apps
How did/would you “force” yourself to do TDD rather than TAD? [closed]

Categories

HOME
openmp
google-api-php-client
webstorm
jira
tizen-web-app
webpack-2
blueprintjs
azure-storage-tables
facebook-php-sdk
spring-xd
commonmark
messages
flask-wtforms
quickfix
iron-router
saxon
aurigma
http-status-code-504
google-cloud-speech
wkwebview
chromium-embedded
pass-by-reference
su
fifo
gitignore
frame
typed.js
android-ble
jquery-bootgrid
hue
particles.js
nomethoderror
http-redirect
logfiles
pango
pubmed
alphabet
aurelia-validation
setter
arrow-keys
cubes
firmata
home-directory
pcf
xml-attribute
essence
xpath-1.0
icu4j
drawbitmap
ibaction
php-ci
myo
graph-api-explorer
apache-commons-net
angularjs-ng-click
device-manager
responsive-slides
mesa
tld
comexception
mechanize-ruby
oracle-warehouse-builder
mbr
html5-notifications
oam
sitemesh
inbox
ruby-datamapper
interface-orientation
path-separator
trusted
appconkit
bubble-chart
enter
work-stealing
window-management
pydot
xmemcached
.nettiers
dbal
substrings
kdbg
thread-local-storage
sector
spec#
ubuntu-9.04
w3wp

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App