2. Agenda Decision Source Methodology Iterative Deployments Importance of Analysis Continuous Integration Role of Testing Job Seeking Advice
3. Analysis Improper analysis is the number one cause for project failure The goal of analysis is to make sure that the software actually solves someone’s problem. Proper analysis ensures that everyone has the correct assumptions and expectations.
4. Continuous Integration Source Control Automated Builds Self-Testing Builds Automated Deployment Continuous Integration Server Contrary to popular belief, continuous integration is an attitude, not a tool. --James Shore
5. Source Control Developers should commit to the mainline frequently. Ensures problems are found quickly when used in conjunction with self-testing builds. Don’t commit changes that will break the build. Developers should get the latest version and run a local test build before committing changes. Store everything required to ship the product (including database scripts).
6. Automatic Builds Ensures that your build is documented & repeatable. Tips Build only from a full checkout of source control. Maintain a history of past builds. Make it easy for everyone to get latest executables. Broken builds should be fixed ASAP. Number your builds. Keep your builds fast. Treat build scripts as code. Use a build scripting tool such as Nant.
7.
8. Self Testing Builds Unit Testing Test Driven Development Failed Tests should cause the build to fail Tool: Nunit Code Coverage Testing Tests the how much of your code is exercised by your unit tests. Tool: NCover Code Analysis Validates conformance to design guidelines. Tool: FxCop
9. Automatic Deployment Deployments can be just as error prone as builds. Strive for one click deployments. Create a deployment script for each environment (Dev, QA, Production) Include a rollback mechanism in your deployment Create deployment scripts with every build.
10. Continuous Integration Server A Continuous Integration server brings it all together. Automatically triggers a build when a developer checks in code. Provides a communication center for your build. Records what changes where made since the last build along with who made the changes. Alerts team members when a build breaks Allows you to see detailed test results Provides build history reporting
11.
12. Other Tools Ndoc Automatic class library documentation http://ndoc.sourceforge.net/ Watir Ruby based web application testing http://wtr.rubyforge.org/ Fitnesse Allows non-technical users to define acceptance tests http://fitnesse.org/ Simian Looks for duplication in large software code bases. http://www.redhillconsulting.com.au/products/simian/
13. Role of Testing Testing is often the most disrespected role of software development A testing strategy should be formed at the very beginning of a project. Test Early Test Often. Testing is a very specialized skill A defect database is a critical component of any competent software team.