FeaturesPluginsDocs & SupportCommunityPartners

NetBeans Subversion Support Test Specification

Author: Peter Pis
Version: 1.0.0
Last update: 22.03.2006
Introduction: Subversion open source tool is one of the supported version control systems in the IDE. This document describes how SVN profile for NetBeans SVN Support module should be tested in order to know whether all of its functionality work correctly. All Test Suites should be performed with all access method types: "file:///", "svn://", "svn+ssh://", "http://" and "https://"
Comment:

Table of Contents

Test suite 1: Setting up URL

Purpose: This suite tests whether it is possible to access valid Subversion repository using different types of connections.
Setup: Subversion command-line client version 1.3 or higher has to installed on tested platform.

#Test caseDescription
1svn://
  1. Invoke Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
  2. Switch to Repository URL field and set it to e.g. "svn://localhost/svn"
  3. After setting up "svn://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
  4. Setup username and password and verify functionality of "Proxy Configuration" dialog.
RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse..." buttons are show for "Repository Folder(s)", "Local Folder" and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Push "Finish" button. Verify result of Checkout action.
2svn+ssh://
Setup: In case of windows platform "plink" application should have been installed.
  1. Invoke Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
  2. Switch to Repository URL field and set it to e.g. "svn+ssh://localhost/svn"
  3. After setting up "svn+ssh://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
  4. Setup valid password.
RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse" buttons are show for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify result of Checkout action.
3file:///
  1. Invoke Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
  2. Switch to Repository URL field and set it to e.g. "file:///svnrepo"
RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse" buttons are show for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify result of Checkout action.
4http://
  1. Invoke Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
  2. Switch to Repository URL field and set it to e.g. "http://localhost/svnrepo"
  3. After setting up "http://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
  4. Setup valid password.
RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse" buttons are show for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify result of Checkout action.
5https://
  1. Invoke Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
  2. Switch to Repository URL field and set it to e.g. "https://localhost/svnrepo"
  3. After setting up "https://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
  4. Setup valid password.
RESULT: Push Next button. You will be asked for accept the certificate. Next dialog of "Checkout" wizard should show up. Verify that "Browse" buttons are show for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify result of Checkout action.

Test suite 2: Importing new project

Purpose: The goal of this suite is to create new project and upload it to Subversion repository.
Setup: No setup is necessary.

#Test caseDescription
1Project import
  1. Invoke File | New Project... from main menu.
  2. "New Project" wizard shows up. Choose e.g "General | Java Application" and push "Next" button.
  3. Setup name of the project, project location as desired and push "Finish" button.
  4. Switch to "Projects" view and select the root of the project.
  5. Invoke Subversion | Import into Repository... from main menu.
  6. "Import" wizard shows up.
  7. Setup "Repository URL" as desired and all necessary fields for chosen access method and push "Next" button. All displayed components depend on access method type - see "Setting up URL".
  8. Push Browse... button. Verify that browsing through the repository is allowed. Verify also functionality of New Folder (it creates only virtual folders. Nothing is changed in the repository.)
  9. Enter some comment into "Import Message" field and push "Next" button. All displayed components depend on access method type - see "Setting up URL".
  10. 3rd step of Import wizard shows up. Verify whether you can change values in "Commit Action" column. (Add As Text, Add As Binary and Exclude From Commit).
RESULT: In "Output" tab verify whether "Import" and "Check out" command finished successfully. Now context commands on this project root in "Projects" view shouldn't contain "Import into Repository" action. All sources should be imported and subversion actions should be available.

Test suite 3: Standard development of project

Purpose: This suite tests the most often used commands of typical Subversion user.
Setup: No setup is necessary except steps from previous test suite.

#Test caseDescription
1Update action
  1. Switch to "Files" view.
  2. Invoke Subversion | Update popup menu action on project root.
RESULT: Verify that in "Output" tab there is message " ==IDE== date time Updating "Project" finished.".
2File modifying
  1. Select e.g. "Main.java" file, modify it.
  2. Insert brand-new line somewhere into the file.
  3. Delete some other line but not directly next to the new line.
  4. Modify another line but not directly next to the lines mentioned above and Save the file.
RESULT: The file "Main.java" must change its foreground color to blue.
3File differences
  1. Select this file.
  2. Invoke Subversion | Diff "Main.java" action from main menu.
RESULT: All three differences must be highlighted in a special window with both versions of the file. New line is green, removed line is red and modified one is blue. At the bottom of this component there is part for viewing properties differences.
4Files/Folders differences
  1. Create new package "xx.yy" in this project.
  2. Create new "java class" "NewClass" in package "xx.yy".
  3. Invoke Subversion | Show "Project" Changes from main menu.
  4. Files should be listed in "Subversion" tab - "Main.java" and "NewClass". Also the new packages "xx.yy"should be displayed as [New].
  5. Select the root of the project and invoke Subversion | Diff popup menu action.
RESULT: Special window is displayed. "Main.java, NewClass.java, xx, yy" should be contained in combobox field. Verify functionality of "UP" and "DOWN" arrows. (Arrow navigates among all differences on processed files). Verify functionality of "Diff" icon in "Subversion" tab - same result as for context command. "Diff all" component provides icons for "Refresh Status", "Update all" and "Commit all" action.
5Commit files/folders
  1. Switch to "Subversion" tab.
  2. Push "Commit all" icon.
  3. "Commit dialog" shows up. It should contain two files: "Main.java", "NewClass.java", and two folders "xx" and "yy". Enter some commit message and push "Commit" button.
RESULT: Verify that blue badges disappeared. Files and folders/packages should disappear from "Subversion" tab immediately too.
6Creation of patch
  1. Modify "Main.java" file and save it.
  2. Modify "NewClass.java" file and save it.
  3. Select project root and invoke Subversion | Export "Project" Diff Patch... from main menu. Select desired output file for patch and confirm the dialog.
RESULT: Patch should be created in your chosen file. If this action is invoked on context that has no modified files, information dialog should be displayed only.
7Applying patch
  1. Switch to "Files" view and select project root.
  2. Invoke Subversion | Revert Modifications from main menu or popup menu. (Select "Revert Local Changes" option and push Revert button.)
  3. Make sure that all modified files are "uptodated" now.
  4. Select project root and invoke Tools | Apply Diff Patch... popup menu action.
  5. Answer "Yes" in question dialog to confirm watching differences.
RESULT: Verify that new tabs were opened into the editor for all patched files. Verify results generated by "Command-line Diff" and "Built-in Diff" engines. Verify results displayed by "Graphical Diff Viewer" and "Textual Diff Viewer" visualizers.
8Create conflict
  1. Modify "Main.java" file and save it.
  2. Invoke Subversion | Check out... from main menu and setup the same parameters as for previous Suites but with different "Workfile location".
  3. Open the same project, modify "Main.java" class at the same line as in previous test suite, and commit it.
  4. Return to previous project, select the project root and invoke Subversion | Update with Dependencies popup menu action.
RESULT: "Conflicts warning" dialog should be displayed. Path to "Main.java" file should be indicated with red badges. This file should change its color to red too. Verify functionality of All, Local and Remote buttons in "Subversion" tab.
9Resolve conflict
  1. Invoke Subversion | Resolve conflicts popup menu action on "Main.java" node.
  2. Merging tool must get opened in editor area highlighting the line with conflict. Left pane should read "Working File", right pane "Remote File" and bottom should read "Merge Result".
  3. Select left modification (the working one) and push "Accept" button above its pane.
  4. Make sure that colors changed to blue or green and "Unresolved" in top of the component says "0 conflicts". Push "OK" button and confirm your decision.
RESULT: The data node should change back to "Main.java" and should have appropriate badge (blue badges for path). In addition, the merge tool must be closed.
10Delete file
  1. Switch to "Projects" view and expand "xx.yy" package node.
  2. Invoke Delete popup menu action on "NewClass.java" file node.
  3. Confirm your decision by clicking Yes in follow-up question dialog.
  4. File should disappear from all explorer views. It should appear in "Subversion" tab with "Locally Deleted" status.
  5. Select "NewClass.java" in "Subversion" tab and invoke Revert Delete action
  6. Confirm your decision by clicking Yes in follow-up question dialog.
  7. File should appear in all of explorer views.
  8. Invoke Delete popup menu action on "NewClass.java" file node again.
  9. Confirm your decision by clicking Yes in follow-up question dialog.
  10. Select "NewClass.java" in "Subversion" tab and invoke Commit...
  11. "Commit" dialog shows up. Fill commit message and push "Commit".
RESULT: File "NewClass.java" should disappear from all explorer views, and from "Subversion" tab.
11Delete Folder(s)
  1. Select package node that contains files.
  2. Invoke Delete popup menu action on package node.
  3. Confirm your decision by clicking Yes in follow-up question dialog.
  4. Select all deleted nodes in "Subversion" tab and invoke Revert Delete
  5. Confirm your decision by clicking Yes in follow-up question dialog.
  6. Package and its files should appear in all of explorer views.
  7. Repeat 2nd step.
  8. Confirm your decision by clicking Yes in follow-up question dialog.
  9. From "Subversion" push Commit button.
RESULT:Package with its content should disappear from all views.
12Project Deletion
  1. Create new project.
  2. Add this project into the source control. Invoke Subversion | Show All Changes from main menu.
  3. Switch to "Projects" view, select project node and invoke Delete Project popup menu action. (Confirm dialog and delete also sources)
RESULT: All files should appear in "Subversion" view. These files should be in "Locally Deleted" status. Select all files in "Locally Deleted" state and invoke Revert Delete popup action from "Subversion" view. After successful action it should be allowed to open this project again.
13Exclude file from commit
  1. Create "JFrame" in "xx.yy" package.
  2. Invoke Subversion | Commit... on this JFrame in "Projects" view.
  3. Switch to "Subversion" tab, there should be listed "NewJFrame.java" and "NewJFrame.form" files. Select both the files and invoke Commit....
  4. "Commit" dialog should be displayed with these JFrame files. Change the "Commit Action" to "Exclude from Commit" for both files. Push "Commit" button.
RESULT: Both files have to be excluded from commit with no change of their statuses. Include in Commit action should be accessible in popup menu actions in "Subversion" tab and performing Include in Commit must return file to "committing" status.
14Ignore file
  1. Create new "Java class" ("NewClass2") into "xx.yy" package.
  2. Select this java file and invoke Subversion | Ignore .
RESULT: "NewClass2.java" should change its color to gray with [Ignored] annotations in all explorer views and it should disappear from "Subversion" tab.
15Ignore folders
  1. Create new "New Package" ("tt2") into "javaapplication" package.
  2. Select this "tt2" package and invoke Subversion | Ignore .
RESULT: "tt2" should disappear from "Subversion" view. Externally verify that ".svn" administrative directory of parent folder of "tt2" package contains file "dir-props" listing "tt2" package.
16Unignore file
  1. Select "NewClass2.java" in "Projects" view and invoke Subversion | Unignore popup menu action.
  2. "Subversion" tab should contain "NewClass2.java (Locally New)" files. Path to this should be indicated with blue badges.
  3. Select project root and invoke Subversion | Commit All Files action from main menu.
  4. "Commit" dialog shows up, enter some commit message and push "Commit" button.
RESULT: File should disappear from "Subversion" tab. Font color of "NewClass2.java" file is black now. Externally verify that ".svn" administrative directory of parent folder of "NewClass2.java" package doesn't contain this file listed in "dir-props".
17Reverting modifications
  1. Open "NewClass2.java" to editor.
  2. Insert brand-new line somewhere into the file.
  3. Delete some other line but not directly next to the new line.
  4. Modify another line but not directly next to the lines mentioned above and Save the file. File name color should change to blue, verify the path indicating blue badges.
  5. Select "NewClass2.java" and invoke Subversion | Revert Modifications
  6. "Revert Modifications" dialog should show up. There are three choices: "Revert Local Changes", "Revert Modifications from Single Commit" and "Revert Modifications from Previous Commits". "Revision" should be enabled for second choice. "Starting Revision" and "Ending Revision" revision should be enabled for third choice only. This dialog provide also the functionality of rollbacking changes. For each of these fields "Search..." button should be available.
RESULT: All changes should be reverted. Indicating badges should disappear. "NewClass2.java" file should not be listed in "Subversion" tab.
18Global actions
  1. Invoke Show All Changes action from main menu.
  2. Invoke Diff All Files action from main menu.
  3. Invoke Update All Files action from main menu.
  4. Invoke Commit All Files action from main menu.
RESULT:Verify functionality of all above mentioned commands.
19Actions in Projects view
  1. Add new package "aa" and new "Interface.java"
  2. Add new package "aa.bb" and new "NewClass.java"
  3. Invoke Subversion | Commit... on "aa" package.
  4. Commit dialog shows up. There should be "Interface.java" and "aa" listed in commit dialog. Push "Commit" button.
  5. Make sure that only "aa" and its file were added. Have a look in tab for SVN URL in "Output" window.
RESULT: Subversion actions invoked on packages "Projects" view shouldn't be performed recursively. Make sure that Update, Diff, Switch to Branch, Merge Changes From Branch, Export Diff Patch and Revert Modifications work correctly. In case of branching actions verify whether new files and folders are added/removed properly.
20Refactoring
  1. Select "Main.java" node and invoke Refactor | Rename... popup menu action on it.
  2. Enter new name for it and push "Next" button. Special window shows up, push Do Refactoring.
  3. File with new name should be listed in "Subversion" view as "[Locally Renamed]" and old one "[Locally Deleted]".
  4. Commit both files and verify whether new file inherited history by refactoring.
  5. Switch to "Files" view, select package "xx" and invoke Refactor | Rename... popup menu action on it.
  6. Enter new name "yy" for it and push "Next" button. Special window shows up, push "Do Refactoring".
  7. Make sure that all refactored nodes with new name are marked as "[Locally Copied]" (for directories only "[New]" is shown) in the "Subversion" tab. "yy" is "[New]", "NewClass" and "Main" from "yy" are "[Locally Copied]]". "NewClass" and "Main" from "xx" are "[Locally Deleted]]".
RESULT: Push Commit make sure that file nodes disappear. And all files/directories were committed as well.

Test suite 4: Working with Copies/Branches

Purpose: This suite tests work-flow with copies/branches.
Setup: No setup is necessary except steps from previous test suite.

#Test caseDescription
1Copy/Branch creation
  1. Select project root and invoke Subversion | Copy to... popup menu action.
  2. Dialog for branching shows up. Setup "Copy to Repository Folder" (create new location for copy purpose). Push Browse button. Verify functionality of this component. Try to create new folder with use of New Folder button or through the popup menu on some node in "Repository Browser" component.
  3. Enter "Copy Description" field.
  4. Verify that "Switch to Copy" check box is displayed in dialog and check it.
  5. If this action was invoked on context with some modified files make sure that warning message is being displayed about locally modified files in context.
RESULT: Verify in "Output" tab whether project was branched properly. Nodes in explorer view should be annotated. If "Switch to Copy" was not checked, then sources shouldn't be switched to new created copy.
2Committing to branch
  1. Select the "Main.java" file, modify and save it.
  2. Invoke Subversion | Commit... popup menu action.
  3. Commit dialog shows up and there should be listed "Main.java" file and information about the commit - "Committing to "Project" branch". Push "Commit" button.
RESULT: Verify in "Output" tab whether the action finished successfully.
3Multiple branches
  1. Create new e.g. "NewInterface" in this project.
  2. Select project root and invoke Subversion | Commit... project from popup menu.
  3. Commit dialog shows up and there should be listed "NewInterface.java" file and information about the commit - "Committing to "Project" branch". Push the Commit button.
  4. Verify successful commit of new added file.
  5. Now select project root and invoke Subversion | Switch to Copy... popup menu action.
  6. Appropriate dialog shows up. Browse desired "Repository Folder" and desired "Revision" where "NewInterface" doesn't exist.
  7. "NewInterface" file should disappear from all views.
  8. Select again project root and invoke Subversion | Switch to Copy... popup menu action.
  9. Verify that "Repository File (Folder)" (depends on context it was invoked for) combo box, "Browse" button, "Repository Revision" text field and "Search" button were shown.
  10. Choose "Repository File/Folder", desired revision number and push Switch button.
  11. Verify whether "NewInterface" file appears in all views again.
  12. Select "Main.java" file and invoke Subversion | Switch to Copy... popup menu action.
  13. In the dialog setup "Repository File/Folder" for trunk and push the Switch button.
  14. Verify that file contains changes made in the trunk.
  15. Modify and save both "Main.java" and "NewInterface" file.
  16. Select the project root and invoke Subversion | Commit "Project"... from the main menu.
  17. Dialog shows up, with these two files. There should be warning about attempt to commit to multiple branches - commit dialog now contains also "Branch" column - if there is nothing in the column, the file is to be commited to the trunk, otherwise to some branch (its name will be there).
RESULT: Verify that "Main.java" was committed to trunk and "NewInterface" was committed to "Copy" location. (Switch to both locations and verify changes.)
4Merge from branches
  1. Select the project root, invoke Subversion | Switch to Copy... action.
  2. In the dialog setup "Repository File/Folder" for trunk and push Switch button.
  3. All project sources should contain only "Trunk" changes.
  4. Create "NewInterface" and add new method to "NewInterface", save and commit it.
  5. Add new variable to "Main.java", save and commit it.
  6. Switch project to "new_copy".
  7. Open "Main.java" into the editor, modify the type of the variable created in step 5 at the same line. Save the file.
  8. Open "NewInterface" into the editor, modify the return value of the method created in step 4 at the same line. Save the file.
  9. Select project root invoke Subversion | Merge ... popup menu action.
  10. Dialog shows up. There are three choices for merging. Each of choice has descriptive picture. Verify all their components and functionality for each case. Push Merge button.
  11. Dialog shows up with the information that there were conflicts.
RESULT: Files in conflicts are displayed with red color in "Subversion" tab. Resolve all the conflicts.

Test suite 5: Archeology

Purpose: This suite tests "archeology" searching with various criteria.
Setup: No setup is necessary except steps from previous test suite.

#Test caseDescription
1Search button
  1. Invoke Subversion | Checkout... wizard from main menu.
  2. Setup valid "Repository URL" and proceed to 2nd step of "Checkout" wizard.
  3. Push Search... button.
  4. "Search Revisions" dialog shows up.
  5. "List Log Entries from" field and "List" button should be there. Push the "List" button.
  6. There should be listed records containing "Repository Revision Number", "User Name", "date and time" and "Commit Message" for each record in it.
  7. Select some record and push OK button.
RESULT: Verify that "Search Revisions" dialog was closed and "Repository Revision Number" was setup into "Revision:" field of "Checkout" wizard. This component is also accessible from "Switch Copy to", "Merge ...", "Revert Modifications" dialog. Verify them too.
2Annotations
  1. Select "Main.java" node and invoke Subversion | Show Annotations popup menu action.
  2. "Annotations" column and "Stripes" should be displayed around the editor area of this file.
  3. Select desired line (with revision e.g. "12").
  4. All lines with revision ("12") should be colored blue in "annotations" column. "Stripes" should show navigations to this revision too.
  5. Move mouse pointer over "Revision" column and invoke popup menu.
RESULT: There should be Diff 12 to 11, Revert Modifications... and Close Annotations actions listed in popup menu.
3Annotations actions
  1. Choose Diff... action.
  2. "Diff" tab should be opened into the editor for specified revisions.
  3. Choose Revert Modifications... action.
  4. This action should show "Revert Modifications" dialog. (See "Standard Workflow" test suite - "Revert modifications")
  5. Choose Close Annotations action.
  6. This action should hide annotation column and stripes too.
RESULT: Verify functionality on various revisions and navigations with the use of "Stripes".
4Search history
  1. Switch to "Projects" view and select project root.
  2. Invoke Subversion | Search History... popup menu action.
RESULT: "Search History" tab for this project should be displayed in editor area. Verify also functionality of "Browse" buttons next to "From" and "To" fields.
5Summary functionality
  1. Make sure that "Summary" toggle button is pushed.
  2. Push Search button.
RESULT: Verify that all files of the project are listed in "Summary" output area. All items there should contain "revision number", "username", "date", "file location", "file name", "commit message" and "Diff" and "Revert" link there.
6Summary actions
  1. Invoke popup menu on desired record in "Summary" section.
  2. There should be Diff to Previous Revision and Rollack Changes.
RESULT: Verify the functionality of each action. Behavior of these actions was described in Annotation actions section. Rollback Changes action can be invoked on multi selection that will rollback all differences among selected revisions.
7Diff functionality
  1. Select project root and invoke Subversion | Show History... popup menu action.
  2. Push Search button and then click "Diff" toggle button.
RESULT: Verify that table with list of files is displayed. Also area for "Diff" should be there.
8Diff actions
  1. Invoke popup menu on desired revision of the file in "Diff" section.
  2. There should be Rollback Changes action listed in popup menu.
RESULT: Verify the functionality of each action. Behavior of these actions was described in Annotation actions section. Rollback Changes action can be invoked on multi selection that will rollback all differences among selected revisions.
9Exploring revisions
  1. Select some file in this table that has more revisions and expand node.
  2. Select some revision.
RESULT: In "Diff" output area there should be displayed differences between selected and previous revision. On multi selection of two revisions of the same file there should be displayed differences between them. Differences should not be displayed for different files.
10Random search
  1. Invoke Subversion | Search History... on file, projects.
RESULT: Verify the functionality of "Search History" action on files, packages and project nodes. Verify that searched results meet searching criteria.

Generated: 2006 12 07 04:15
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by