Jump to: navigation, search

Difference between revisions of "EDT:Debug Regression Testing"

Line 5: Line 5:
 
'''Common scenarios to be run as part of each of the other scenarios'''  
 
'''Common scenarios to be run as part of each of the other scenarios'''  
  
Stepping through statements when suspended  
+
Stepping through statements when suspended    
  
 
*Step into  
 
*Step into  
Line 25: Line 25:
 
*All variables in scope are listed  
 
*All variables in scope are listed  
 
*Value and type for each variable looks correct  
 
*Value and type for each variable looks correct  
*Values can NOT be changed during debugging (future feature)
+
*Values can NOT be changed during debugging (future feature)
 +
*Test all the supported types (primitives, arrays, records, dictionaries, delegates, handler fields, etc...)
  
 
Debug view  
 
Debug view  
Line 38: Line 39:
  
 
'''Batch programs (Java)'''  
 
'''Batch programs (Java)'''  
 +
 +
Launched by right-clicking a main program source file > Debug As > EGL Java Main Application
  
 
Drop to frame<br>  
 
Drop to frame<br>  
  
*Pops off any frames above the target frame
+
*Pops off any frames above the target frame  
*Repositions to the beginning of the function
+
*Repositions to the beginning of the function  
 
*Note: Disabled on frames that are directly above native methods, or when a native method is above the target frame (JDT restriction)
 
*Note: Disabled on frames that are directly above native methods, or when a native method is above the target frame (JDT restriction)
  
Stepping
+
Stepping  
  
*Can step into Java code, such as as user-written external type.
+
*Can step into Java code, such as a user-written external type.
  
Hot code replace
+
Hot code replace  
  
*Limited support from JDT, no EGL-specific support
+
*Limited support from JDT, no EGL-specific support  
*Small changes might work, like changing logic
+
*Small changes might work, like changing logic  
 
*Structural changes might not work, like adding new functions or global variables
 
*Structural changes might not work, like adding new functions or global variables
  
Type filters
+
Type filters  
  
*When enabled, certain types are automatically run instead of suspending inside them
+
*When enabled, certain types are automatically run instead of suspending inside them  
*Located in Preferences &gt; EGL &gt; Debug &gt; Java Debugging
+
*Located in Preferences &gt; EGL &gt; Debug &gt; Java Debugging  
*Can disable filters as a whole
+
*Can disable filters as a whole  
*Can disable specific filters
+
*Can disable specific filters  
*Can change step type ("step into" will step "through" the code until it reaches an unfiltered type, while "step return" runs much faster)
+
*Can change step type ("step into" will step "through" the code until it reaches an unfiltered type, while "step return" runs much faster)  
*Can define your own custom filters at Preferences &gt; Java &gt; Debug &gt; Step Filtering
+
*Can define your own custom filters at Preferences &gt; Java &gt; Debug &gt; Step Filtering  
 
*Quick toggle located in Debug view's toolbar menu (click the downward triangle to the right of the stepping buttons, and expand the "EGL" submenu)
 
*Quick toggle located in Debug view's toolbar menu (click the downward triangle to the right of the stepping buttons, and expand the "EGL" submenu)
  
 +
<br>
  
 +
'''Services (Java)'''&nbsp;
  
'''Rich UI Handlers (JavaScript)'''
+
To debug a service you will need to write a client that invokes it (see the "Rich UI" section below). You cannot "step into" the service invocation from RUI, so put a breakpoint in the service function. To have RUI run the service in debug mode, either use dedicated services or a workspace:// URI for a REST service.
  
TBD<br>
+
Everything from the "Batch programs" section above is applicable to services.
  
<br>
+
Note: You will not be able to drop to the bottom frame because it always sits on top of a native method.
  
'''Services (Java)'''&nbsp;
 
  
TBD
+
 
 +
 
 +
 
 +
 
 +
 
 +
'''Rich UI Handlers (JavaScript)'''
 +
 
 +
TBD<br>

Revision as of 15:46, 5 March 2012

The following test scenarios should be run each release.


Common scenarios to be run as part of each of the other scenarios

Stepping through statements when suspended  

  • Step into
  • Step over
  • Step return

Run to line:

  • "Ctrl + r" with the cursor on the target line
  • Right-click in the editor and select "Run to Line" with the cursor on the target line

Breakpoints

  • Can be set by double-clicking the editor's left margin, or right-click the margin to add
  • Can enable/disable breakpoints, changes take immediate effect

Variables view

  • All variables in scope are listed
  • Value and type for each variable looks correct
  • Values can NOT be changed during debugging (future feature)
  • Test all the supported types (primitives, arrays, records, dictionaries, delegates, handler fields, etc...)

Debug view

  • When suspended, the function stack looks correct
  • Stack frames have correct names and line numbers
  • Clicking on frames updates the variables view to show that frame's variables, and selects the appropraite line in the editor



Batch programs (Java)

Launched by right-clicking a main program source file > Debug As > EGL Java Main Application

Drop to frame

  • Pops off any frames above the target frame
  • Repositions to the beginning of the function
  • Note: Disabled on frames that are directly above native methods, or when a native method is above the target frame (JDT restriction)

Stepping

  • Can step into Java code, such as a user-written external type.

Hot code replace

  • Limited support from JDT, no EGL-specific support
  • Small changes might work, like changing logic
  • Structural changes might not work, like adding new functions or global variables

Type filters

  • When enabled, certain types are automatically run instead of suspending inside them
  • Located in Preferences > EGL > Debug > Java Debugging
  • Can disable filters as a whole
  • Can disable specific filters
  • Can change step type ("step into" will step "through" the code until it reaches an unfiltered type, while "step return" runs much faster)
  • Can define your own custom filters at Preferences > Java > Debug > Step Filtering
  • Quick toggle located in Debug view's toolbar menu (click the downward triangle to the right of the stepping buttons, and expand the "EGL" submenu)


Services (Java) 

To debug a service you will need to write a client that invokes it (see the "Rich UI" section below). You cannot "step into" the service invocation from RUI, so put a breakpoint in the service function. To have RUI run the service in debug mode, either use dedicated services or a workspace:// URI for a REST service.

Everything from the "Batch programs" section above is applicable to services.

Note: You will not be able to drop to the bottom frame because it always sits on top of a native method.




Rich UI Handlers (JavaScript)

TBD