Help  |   Contact Us  |   About Us  |   News and Events
Books, conferences, and other information about... Moving to Linux Switching to OOo Building Linux Apps Using Visual FoxPro
Buy      Download      Your Account      Catalog      Support      Conferences      Resources      Fun

MegaFox: 1002 Things You Wanted to Know About Extending VFP
Table of Contents


Chapter 1: KiloFox Revisited
Chapter 2: Data Driving with VFP
Chapter 3: Intellisense, inside and out
Chapter 4: Sending and receiving email
Chapter 5: Accessing the Internet
Chapter 6: Creating charts and graphs
Chapter 7: New and improved reporting
Chapter 8: Integrating PDF technology
Chapter 9: Using ActiveX controls
Chapter 10: Putting Windows to work
Chapter 11: Deployment
Chapter 12: VFP tool extensions and tips
Chapter 13: Working with remote data
Chapter 14: VFP and COM
Chapter 15: Desiging for extensibility
Chapter 16: VFP on the Web
Chapter 17: XML and ADO
Chapter 18: Testing

Chapter 1: KiloFox Revisited

Updates to Kilofox
How do I clean up my working environment? (Example: Clearall.prg)
How do I convert character strings into data? (Example: Str2Exp.prg)
How do I determine if a tag exists? (Example: IsTag.prg)
How do I use GOTO safely?
How do I extract a specified item from a list?
How can I browse field names when the table has captions?
How do I make a SQL Generated cursor updateable?
How can I change the connection used by a Remote View?
How do I check my query’s optimization? (Example: SQLOpt.prg)
How do I pop up a calendar from a grid cell? (Example: CH01.vcx::AcxCalendar and CalendarDemo.scx)
How do I put a combo in a grid?(Example: CH01.vcx:: cboGrdDropdown and ComboInGrid.scx)
How do run code when a projecthook is activated? (Example: cPhkBase2.vcx::phkBase, phkDevelopment)
Things that we missed in KiloFox
How do I set focus to a control? (Example: CH01.vcx::aFindObj, FindItDemo.scx)
How TabIndex works
Finding the right control
Using the aFindObj Class (Example: FindItDemo.scx)
How do I display the current record at the top of my grid?(Example: TopGridRow.scx)
How do I lock the leftmost column in my grid?(Example: CH01.vcx:: GrdLockLeftColumn and LockGridColumn.scx)
How do I create truly generic command buttons?(Example: CH01.vcx::cmdAction and CH01.vcx::frmSample and Navigate.scx)
How do I set up a hot key to declare local variables?(Example: DeclareLocals.prg)

Chapter 2: Data Driving With VFP

Introduction
What exactly is “Data Driving”?
The three different types of data
Core data
Process data
Metadata
What goes into the metadata?
Where should metadata be stored?
Style Sheets and XSL
INI Files and the Windows Registry
Why bother with data driving?
Performance overhead
Design considerations
Maintenance issues
So is data driving worth it?
How do I data drive my menus?
What type of menus do we want to data drive?
MPR file structure for a shortcut menu
The shortcut menu metadata
The shortcut menu generator class (Example: popmenu.prg::xPopMenu)
Using the shortcut menu class (Example: frmscut.scx)
How can I format text correctly? (Example: frmformat.scx)
The problem
The solution
The xchgcase class (wordform.prg, wordform.dbf)
How do I data drive object instantiation?(Example: Factory.prg)
How do I data drive a migration?(Example:Migrate.prg and FieldMap.dbf)
How do I data drive data validation?(Example: Validation.vcx::Validator and ValidationDemo.scx)

Chapter 3: Intellisense, inside and out

Intellisense in Visual FoxPro
What is intellisense?
How do I configure intellisense?
How do I work with the FoxCode table?
What are all these record types?
Version Record (Type = “V”)
Command Record (Type = “C”)
Function Record (Type = “F”)
Property Record (Type = “P”)
COM Component Record (Type = “O”)
Typing Record (Type = “T”)
User Record (Type = “U”)
Script Record (Type = “S”)
Custom Extension Record (Type = “Z”)
How do I create my own scripts?
How do I create a script to insert a block of code?
Setting up the script
Building the return string
Positioning the insertion point
There is one little snag…
How do I create a script to generate a list?
Generating the list
How to define the action when a selection is made in a list
How to create a table driven list
How do I create my own quick info tips?
What is the properties button in the intellisense manager for?
How do I modify default behavior?
Putting intellisense to work
How do I change the behavior of browse?
How do I insert a header into a program? (Script: hdr)
How do I get a list of files? (Script: ShoFile)
How do I get a list of variables? (Script: InLineGetLocVars)
Conclusion

Chapter 4: Sending and receiving e-mail

What are the options?
What is all this alphabet soup anyway?
What is MAPI?
What is CDO?
What is SMTP?
Gotcha!
How do I use MAPI?
How do I read mail using MAPI? (Example: MapiMail.scx and Ch04.vcx::cntMapi )
How does the custom cntMAPI class simplify reading e-mail?
How do I send mail using MAPI? (Example: MapiMail.scx and Ch04.vcx::cntMapi )
How do I add recipients to a message?
How do I add attachments to a message?
How does the custom cntMAPI class simplify sending e-mail?
What is CDO 2.0?
How do I send mail using CDO 2.0? (Example:CdoMail.scx and Ch04.vcx::cusCdo )
How does the cusCDO class work?
Can I control Outlook programmatically? (Example:OutlookMail.scx and Ch04.vcx::cusOutlook )
How do I access the address book?
How do I read mail using Outlook automation?
How does the ReadMail() method work?
How do I send mail using Outlook automation?
Conclusion

Chapter 5: Accessing the Internet

How do I show a web page in a form? (Example: frmbrowse.scx)
But when I run the form, I get an error!
Displaying content
How do I put a browser on the VFP desktop? (Example: frmdsktop.scx)
How do I print the contents of a web page? (Example: frmbrowse.scx)
How do I extract data from a web page? (Example: frmkbase.scx)
Using the browser control’s ExecWB() method
Using the document object’s ExecCommand() method
Using the DOM
How do I create a Hyperlink in a VFP Form? (Example: frmhl01.scx)
What about the foxpro foundation classes?
Creating your own hyperlink classes (Example: frmhl02.scx)
How do I use Web Services in my applications?
How to register a web service using the VFP extensions
Putting a web service to use (Example: frmws01.scx)

Chapter 6: Creating Charts and Graphs

Graphing terminology
How do I create a graph using MSChart?(Example: MsChartDemo.scx and ch06.vcx::acxChart)
How do I create a graph using MSGraph?(Example: MsGraphDemo.scx)
How do I create a graph using Excel automation?(Example: ExcelAutomation.scx)
Conclusion

Chapter 7: New and Improved Reporting

Visual FoxPro Report Designer
What are the new features in the Visual FoxPro 7 Report Designer?
How do I display a progress bar during the print of a report?
How do I prompt for printer from preview mode?
How do I print dynamic graphic images?
How do I print watermarks on a report?
How do I disable the report toolbar printer button?
How do I create a custom paper size?
How do I detect if the user canceled printing?
Crystal Reports
Why should I consider Crystal Reports for reporting?
What techniques can be used to integrate VFP data with Crystal Reports?
How do I create a report in Crystal Reports?
How do I work with reporting fundamentals?
How do I implement hyperlinks in a report?
How do I display messages from within a report?
What exactly is the Report Designer Component (RDC)?
How do I take advantage of the Report Designer Component?
How do I integrate the report with a Visual FoxPro application?
How do I create cross-tab reports?
How do I implement graphs in a report?
How do I export reports to RTF, PDF, XML, and HTML formats?
How do I implement drill down reporting?
How do I add document properties to a report?
How do I work with subreports in Crystal Reports?
How do I optimize a report for web reporting (as well as local reporting)?
How do I work with the Crystal Report Viewer object?
How can I use EventHandler() with Crystal Reports?
What do I need to add to my deployment package when using Crystal Reports?
Putting it all together, building a Crystal Report wrapper object
Conclusion

Chapter 8: Integrating PDF Technology

Which version of Acrobat do I need?
What is needed to generate a PDF file?
How do I determine which PDF product to license?
How can I use PDF technology in my Visual FoxPro apps?
How do I output Visual FoxPro reports to PDF using Adobe Acrobat? (Example: PromptPDF.prg)
What are the errors to trap when printing to PDFs? (Example: cusAmyuniPDF::Error() of g2pdf.vcx, NoHandsAmyuniPdf.prg)
How do I run PDF reports unattended using Acrobat? (Example: NoHandsPDF.prg)
How do I run PDF reports unattended using Amyuni? (Example: NoHandsAmyuniPDF.prg, cusAmyuniPDF::g2pdf.vcx)
How do I email a Visual FoxPro report? (Example: MailPDFBatch.prg)
How can I replace the Visual FoxPro Report print preview? (Example: AltPreview.scx)
How do I present Acrobat PDFs in a Visual FoxPro Form? (Example: PdfDisplay5.scx, PdfDisplay5a.scx)
What is Acrobat Forms Author technology? (Example: SHAppBuildPermitData.pdf)
How can I extract data out of a PDF form file? (Example: FDFRead.prg)
Register the FDF Toolkit ActiveX control
Instantiating the object to access the FDF File
How do I prefill the PDF Form with data? (Example: FDFWrite.prg)
How can I merge PDF files together? (Example: PDFMerger.prg/PDFDirectoryMerger.prg)

Chapter 9: Using ActiveX Controls

How do I include ActiveX controls in a VFP Application?
How do I find out what controls are in an OCX?
OK, but how do I get the class name of an ActiveX Control?
How do I add an ActiveX control to a form or class?
Putting ActiveX controls to use
How do I sub-class an ActiveX control? (Example: CH09.vcx::xprogbar)
How do I use the Windows progress bar? (Example: CH09.vcx::xTherm; frmprogbar.scx)
Setting up the progress bar class
Displaying the progress bar
How do I use the Date and Time Picker? (Example: CH09.vcx::acxDTPicker and DateTimePicker.scx)
So what is the checkbox property for?
How does the custom acxDTPicker class work?
How do I use the MonthView? (Example: CH09.vcx::acxMonthView and MonthView.scx)
How do I use the ImageList?
How do I store images in the ImageList?
How do I bind the ImageList to other controls?
How do I use the ListView?(Example: CH09.vcx::acxListView and ListView.scx)
How do I add items to my ListView?
How do I sort the items in my ListView?
How do I know which item is selected?
How do I make the ListView behave like a data-bound control?
How do I use the ImageCombo?(Example: acxImageCombo and ImageCombo.scx)
How do I display a hierarchical list in the ImageCombo?(Example: ImageComboTree.scx)
How do I use the TreeView?(Example: CH09.vcx::acxTreeView and TreeView.scx)
How are nodes added to the TreeView?
How do I navigate the TreeView?
How does the acxTreeView class work?
How are the nodes managed?
How are the context sensitive menus managed?
Conclusion
How do I synchronize a TreeView with a ListView(Example: TreeAndList.scx)
Controls for animation and sound
How do I animate a form?
The ‘copying files’ dialog class (Example: CH09.vcx:: xCopyFile)
Using the copying files dialog (Example: frmAVICopy.scx)
How do I add sound to my application?
Sub classing the multimedia control (Example: CH09.vcx:: xMMedia)
Using the multimedia control (Example: frmMMedia.scx)
How do I use other types of media in my application?
Sub classing the media player control (Example: CH09.vcx:: xMPlayer)
Using the media player control (Example: frmMPlayer.scx)
How do I add a status bar to a form? (Example:frmsbastd.scx)
Setting up a standard status bar (Example:ch09.vcx::sbastd)
What’s the point of the simple style status bar? (Example: frmsbabase)
Managing the status bar dynamically (Example: frmsbacus)
Conclusion
What is the winsock control?
So which protocol is best?
How do I include messaging in my application? (Example: imdemo.prg)
Setting up a messaging form
Extending the example
How do I transmit error reports without using E-Mail?
The client definition (Example: tcpclient.prg)
The Server definition (Example: CH09::xtcpServer)
Conclusion
ActiveX controls, the last word

Chapter 10: Putting Windows to Work

How do I work with the windows registry?
The structure of the registry
So, when should I be using the registry?
How do I access the registry?
But isn’t there already a registry class in the FFC?
Structure of xRegBase class (Example: mfregistry.prg)
How do I read data from the registry? (Example: frmViewReg.scx)
How do I write data to the registry? (Example: WriteReg.prg)
How registry keys are created
How do I change VFP registry settings? (Example: xFoxReg)
Conclusion
What is the Windows Script Host?
Where can I get the Windows Script Host?
How do I use the Windows Script Host to automatically update my application?(example: MyApp.vbs)
How do I use the Windows Script Host to read the registry?
How do I use the Windows Script Host to write to the registry?
How do let the user choose which printer to use?(Example: PrintDemo.scx)
How do I delete an entire folder?
How do I rename a directory?
How do I know if a drive is ready?
Conclusion

Chapter 11: Deployment

How do I integrate graphic images into an EXE? (Example: MF11Main.prg and GraphicSample.scx)
How do I create graphic images?
How do I deploy graphic images?
How do I get the version details from the executable? (Example: CH11.vcx:: cusGetFileVersion and FileVersion.scx)
Where should I install my application ActiveX controls?
Where do the Visual FoxPro runtimes have to be installed?
How do I know which runtime files are being used?
How can I distribute new versions of the runtime files?
How do I run a different Visual FoxPro runtime language resource?
What executable format can I release my application?
What installation scheme should I use?
File Server Install
Workstation Install
Data Install
Web Server Install
How do we package the install?
What are some handy utilities to ship?
Reindex and Database Updater
GenDBC/GenDBCX
Checking Next Id Table
Configuration/Control Table Updater
InstallShield Express for Visual FoxPro Tips (Example: CH11.ism)
Where do I find InstallShield Express?
What are the advantages of using InstallShield Express over the Setup Wizard?
What are the disadvantages of using InstallShield Express vs. Setup Wizard?
How do I upgrade to the full version of InstallShield Express?
How do I leverage the default Windows directories?
How do I work with Setup Types and Features?
What is a merge module and which do I use for Visual FoxPro installs?
How do I create shortcuts or folders?
How do I create registry keys?
How can I limit the hardware configurations the app will install?
How do I have the install files registered for all users of the computer?
Visual FoxPro 6 Setup Wizard Tips
How do I run the Visual FoxPro 6 Setup Wizard?
How does the Setup Wizard retain its settings for the next build?
What tips are there for Step 1: Locate Files?
What tips are there for Step 2: Specify Components?
What tips are there for Step 3: Create Disk Image Directory?
What tips are there for Step 4: Specify Setup Options?
What tips are there for Step 5: Specify Default Destination?
What tips are there for Step 6: Change File Settings?
What tips are there for Step 7: Finish?
How do I AutoRun Visual FoxPro 6 installations?
What are the additional setup parameters?
How do I get a list of files and changes from the install?
How do I have a user reinstall an application?
How do I have a user uninstall an application?
How do I have a user install without intervention?
How can I create a desktop shortcut using the Setup Wizard? (Example: CH11.vcx:: cusShortcut)
How do I find out about Setup Wizard issues and bugs?
How can I insure a smooth deployment?
Duplication
Users
Hardware
Training Materials
Conclusion

Chapter 12: VFP Tool Extensions and Tips

Menus
How can I dynamically change captions in menu? (Example: MenuChapter12Example.mnx/mnt)
How can I dynamically disable menu bars in menu? (Example: MenuChapter12Example.mnx/mnt)
How can I remove menu pads and bars in menu?
How can create a menu to use as a template for my VFP apps? (Example: MenuTemplateWizard.prg)
How can I create a developer tool menu in VFP? (Example: GeekTool.mnx/mnt)
What happens if I need to compile a VFP 7 menu in VFP 6? (Example: MenuVFP7To6.prg)
How can I fix the disabled menu after a report preview?
A partial replacement for the Menu Designer (Example: menudesigner.pjx/exe)
Coverage Profiler
How do I start recording coverage logs?
What are the different columns in the Coverage log files? (Example: MenuDesignerCovLog.txt)
How do I register a Coverage Profiler Add-in?
Where are Coverage Profiler preferences and add-in registrations saved?
How can delete Coverage Profiler add-ins I no longer want registered?
Coverage Profiler add-in to summarize module performance. (Example: CpModulePerformance.scx, CpModulePerformanceReg.prg)
Class Browser
How can I set the default file to be opened when Class Browser is started?
How do I open Class Browser with a specific class?
How can I move and copy classes between class libraries?
How do I rename methods and properties without opening the class?
How can I safely change a class name without breaking references to subclasses?
How can I test classes from the Class Browser?
How can I view and edit superclass code via the Class Browser?
Class Browser Add-in to retain the Regional Settings for time and date? (Example: CbChangeDateFormat.prg)
How do I create a Class Browser Add-in to set the font to my favorite? (Example: CbChangeFont.prg)
Task List
How do I add my own custom fields to the Task List? (Example: MegaFoxTLExt.dbf/fpt)
How can I use my custom fields in the VFP Task List?
How can I add tasks programmatically to the Task List?
How can I update tasks programmatically to the Task List?
How can I delete tasks programmatically to the Task List?
How can I fix a Task List when it seems to have lost its mind?
What happens to the Task List tasks after I add an existing user-defined fields table?
Putting it all together with the G2 Task List Editor (Example: TLEditor.scx/sct)
Conclusion

Chapter 13: Working with remote data

Running the examples
Connecting to remote data
How do I connect to a database using ODBC (Example: ConODBC.scx)
Connection Strings
Using SQLStringConnect()
Named Connections
Using SQLConnect()
How do I connect to a database using OLEDB (Example: ConOLEDB.scx)
Which is better, ODBC or OLEDB?
How can I be sure users have the correct settings? (Example: DSNMgr.prg)
Registry structure for System DSNs
Creating DSNS programmatically with DSNMgr class
How do I use remote views in Visual FoxPro?
[1] Configure the connection
[2] Configure the remote data handling
[3] Define a remote view
[4] Create the form (Example: RVForm.scx)
Summary
So, what is SQL Pass Through?
FoxPro’s SPT functions
Connection management (Example: ConMgr.prg)
Connection properties
Command execution (Example: ExecDemo.prg)
Transaction management (Example: TxnDemo.prg)
Miscellaneous
Should I run in synchronous or asynchronous mode?
Synchronous Batch Mode
Synchronous Non-Batch Mode
Asynchronous Batch Mode
Asynchronous Non-Batch Mode
What’s wrong with remote views?
What should I use instead of remote views then?
How can I make a cursor updateable? (Example: UpdCurs.scx)
What are the data classes?
Design considerations for the data classes
The custom cursor class
Defining cursors (Example: Curdefs.scx)
Managing cursors, the dataset class
The data class implementation model
How do I use the data classes? (Example: Dataclass Directories)
Setting up the example databases
The example form (Example: FrmAccts.scx)
Cursor definitions (Example: Curdefs.dbf)
Dataset Definition (Example: Datasets.dbf, DSetLink.dbf and CurNames.dbf)
Setting up the environment
Running the form (Example: FrmAccts.scx)
Conclusion

Chapter 14: VFP and COM

What are COM and COM+?
So, COM is...?
How does it work?
And COM+ is...
Sounds cool, how could it be 'legacy technology'?
COM is all about interfaces
Late binding
Early binding
Which binding method do components created in VFP use?
How do I create COM components with Visual FoxPro?
What’s the difference between single and multi threaded DLLs?
Designing the class
Implementing interfaces
Handling errors
Debugging components
Why should I create components?
Make VFP Data available to other applications
Provide middle tier functionality and services
Access COM+ services

Chapter 15: Designing for extensibility

How do I design an application?
Monolithic applications
Layered applications
Is this the 3-tier model?
OK, so what is n-tier architecture then?
So, I should design my application using layers then?
Layer pattern summary
Implementing design patterns in Visual FoxPro
What is a bridge and how do I use it?
How do I recognize where I need a bridge?
What are the components of a bridge?
How do I implement a bridge? (Example: FrmBridge.scx, CH15.vcx::cntTaxRoot)
Bridge pattern summary
What is a strategy and how do I use it?
How do I recognize where I need a strategy?
What are the components of a strategy?
How do I implement a strategy? (Example: FrmStrat.scx, CH15.vcx::cntTaxStrat01…04)
Strategy pattern summary
What is a chain of responsibility and how do I use it?
How do I recognize where I need a chain of responsibility?
What are the components of a chain of responsibility?
How do I implement a chain of responsibility? (Example: FrmChor.scx, CH15.vcx::cntTaxChain01…04)
Chain of responsibility pattern summary
What is a mediator and how do I use it?
How do I recognize where I need a mediator?
What are the components of a mediator?
How do I implement a mediator? (Example: FrmMed.scx, CH15.vcx )
Mediator pattern summary
What is a decorator and how do I use it?
How do I recognize where I need a decorator?
What are the components of a decorator?
How do I implement a decorator? (Example: frmDecorator.scx, CH15.vcx)
Decorator pattern summary
What is an adapter and how do I use it?
How do I recognize where I need an adapter?
What are the components of an adapter?
How do I implement an adapter?
Adapter pattern summary
What is a wrapper, and how do I use it?
So, where would I use a wrapper?
Wrapper pattern summary
Conclusion

Chapter 16: VFP on the Web

How do I data drive the production of HTML?
How do I give my web pages a consistent look and feel?
Cascading Style Sheets
Laying out the page (Example: Render.VCX::Render)
How do I generate HTML formatted lists? (Example: Render.vcx::Lister)
How is Lister “inheritance” implemented?
How is the content of the list generated?
Putting it all together (Example: GenHTML.pjx and GenerateHTML.scx)
Displaying the Web Page in Visual FoxPro
Using the DLL from an Active Server Page
What are the Office Web Components?
How do I install the Office Web Components?
How do I create graphs using the Office Web Components?
How do I save a chart as a .gif file?
How do I use the chart as an embedded object in my web page?(Example: Render.vcx::OwcGraph and OwcChartDemo.scx)
How do I keep from having to take my web server down when I modify my dll?(Example: GenHTMLbyProxy.prg and VfpProxy.prg)
How do I publish a web service?
What is a WSML file?
I don’t expose my application on the Internet, so why should I bother with web services?
A sample web service (Example: wszip.pjx)
Web Service Properties
Web Service Methods
More on web service behavior (Example comprun.prg)
Conclusion

Chapter 17: XML and ADO

What is XML?
XML Terminology
What parsers are available and which one should I use?
Does it matter which version of MSXML I use?
What are the most important properties and methods of the DOM?
How do I data-drive the production of XML?( Example: GenerateXml.scx and ExportXml.prg::ExportXML )
How do I data drive importing XML into cursors?
How do I use the SAX interface to import XML? (Example: SaxImport.scx and SaxHandler.prg::VFPSaxHandler)
How do I use the DOM to import XML? (Example: DomImport.scx and DomHandler.prg::VFPDomHandler)
How do I validate an XML document using a schema?
How do I create an XDR schema? (Example: OrderSchema.xml)
How do I create an XSD schema? (Example: OrderSchema.xsd)
How do I define a simple type?( Example: Fruits.xsd and Fruits.xml)
How do I define a complex type?(Example:OrderSchema.xsd and OrderSchema2.xsd)
How do I use the SchemaCache to validate XML documents?
What is XSLT?
What are XSL patterns?
What XSLT elements do I use to define my template?
How do I use XSLT to transform my XML documents?(Example: Orders.xsl and TestXSLT.prg)
How do I construct my stylesheet?
How do I use the DOM’s XSL processor to transform XML?
Conclusion
What is ADO?
The ADO object model
How do I use the connection object?
How do I use the command object?
How do I use the RecordSet object?
How do I convert an ADO RecordSet into a cursor?

Chapter 18: Testing

What types of testing can be performed?
Unit Testing
Integration Testing
System Testing
User Acceptance Testing
Regression Testing
Platform Testing
What types of test tools are available?
What is the scientific method approach to testing?
How do I know an application is ready?
How do I test forms?
How do I test reports?
How do I test business objects?
How do I test other components?
How do I test systems to verify source code is not in the path?
How do I avoid “Feature not available” errors?
Visual FoxPro Debugger Tips
How can I set the debugger configuration to factory settings?
How can I track which events were triggered in my code?
How can I track which methods were executed in my code?
How can I change values of memory variables in the debugger?
How can I insure variables are declared?
How can I set breakpoints in my code?
How can I use drag and drop in the debugger?
How can get quick access to the property values of a specific object?
How can I use the Coverage Profiler to test code?
What are walkthroughs and what are the benefits?
What different types of walkthroughs can you do?
Designs / Data Models
One-Time Program / Tools
Bug Fix
Application Code
Framework / Library Code
How does a developer prepare for a walkthrough? (Example: WTCover.doc)
What is the reviewer’s responsibility of a walkthrough?
What happens during the walkthrough?
What are the outcomes of a walkthrough?
What is an alternative to performing a walkthrough?
How do I test various types of releases?
What is a Test Plan?
How can I log bug reports?
Why should I consider hiring someone to test?
Developers are the worst testers of their own code
Customers are not good at testing applications
You will be a better developer
Avoid the trap that you cannot afford to hire testers
Conclusion