File: README.QA

package info (click to toggle)
gwyddion 2.57-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 48,860 kB
  • sloc: ansic: 405,916; python: 7,867; sh: 5,241; makefile: 4,507; xml: 3,786; cpp: 2,572; pascal: 418; perl: 154; ruby: 130
file content (189 lines) | stat: -rw-r--r-- 7,446 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189

=====[ Testing Gwyddion ]====================================================

Basic behaviour
- OK, Cancel buttons work
- Reset button resets really everything and is idempotent
- Clear button clears
- Other action buttons do what they say
- If a button can be pressed (is sensitive), does something reasonable, no
  silly state of other controls makes it crash or produce some uninitialized
  (unprocessed) or otherwise nonsense data
- Ranges of spinbuttons and other range widgets are reasonable and don't allow
  values that leads to clear nonsense
- Settings and values are remembered both on OK and Cancel, and presented the
  next time a dialog is run as if it was never closed[1]
- If a dialog is shown for the first time (no module settings in settings),
  it shows the same values as after Reset
- Defaults, brought by Reset, are reasonable for the common case

Processing
- Operation does what expected, or at least something looking reasonably if
  it cannot be checked exactly, and does it for wide ranges of arguments;
  if it is described in User guide, it does what User guide says
- Undo works
- NaNs are not produced
- If a time-consuming operation is cancellable, cancellation leads to a state
  as if nothing happened (also wrt undo and redo)
- Works on square, tall, wide data
- Works on data with size of 2^n, and with different sizes (namely FFT, CWT,
  DWT methods)
- Works on data with different real/pixel ratios[3]; at least does not crash
  and does something more or less reasonable, as some operations are
  problematic on such data
- Works on data with mask, without mask, with an empty mask, with presentation,
  without presentation, and undo work correctly in all cases
- Does not copy mask and presentations with data on unrelated result
- Works on data of various scales and z/xy (value/lateral) ratios[3]
- If there are check boxes/radio buttons changing mode of operation, all
  possibilities work
- Selections are not copied to data in different coordinates (like FFT), but
  is copied/kept after operation like level
- If an operation is not supposed to modify data (e.g. it should only add
  a mask, must be deduced from context) it doesn't modify data
- Units are handled correctly, even less common units like Volts, namely in
  operations that change units (FFT, Slope distribution)[2][3]
- Dimensionless quantities have no units, instead of default meters
- Operations that take long time has a progress bar with a Cancel button

Tools
- Duplication (Ctrl-D) during tool usage cause no strange effects
- Previes/instant apply works (if present) on data switch, tool swtich,
  window closing, when all windows are closed and then a file open, when
  hid/made visible
- Present/instant apply reacts to parameter changes instantly
- Selections survive switch to another tools (namely those with the same
  selection type) and back unchanged
- Apply is sensitive only when it does something [reasonable]
- If one usually wants to repeat the operation, Apply doesn't hide dialog,
  otherwise it hides it
- Undo works, namely in connection to previews and duplication

File import/export
- Sizes, values, and units are correct
- Works on systems with distinguishing between binary and text files[4]
- Works on systems with various notions what an end of line is[4]
- Works on 32bit, 64bit platforms[4]
- Works on little, big endian platforms[4]
- Is not affected by locale settings

GUI
- Dialog titles are correct (e.g., not describing another module, etc.)
- Labels are comprehensible
- If user may want to reset parameters to default state (this means almost
  always), dialog provides a Reset button
- Menu path ends with `...' if it brings a dialog, doesn't end with `...' if
  it's a direct action
- All buttons and other active controls have mnemonics
- Mnemonic works (i.e., when Alt + mnemonic key is pressed, corresponding GUI
  control gets focus/is activated, Gtk+ doesn't beep)
- Controls that don't make sense (in a mode of operation, due to state
  of other controls) and would only confuse user are insensitive
- Previous point also applies to toolbox buttons and toolbox menu items
- Nothing in toolbox menus crashes
- There are no misaligned controls in dialogs
- Progress dialogs are shown over appropriate windows: dialogs windows during
  manipulation inside dialogs; data windows during final processing when the
  dialog is no longer shown
- Resizable dialogs behave reasonably on resize
- Capitalization rules: FIXME

Translateability
- There should be no English string in Czech GUI, including in window titles,
  etc.[5]

Packaging, installation
- Gwyddion installs itself correctly on Win32
- Gwyddion refuses to install when there's no Gtk+ on Win32
- Gwyddion can be uninstalled
- If Gwyddion user directory doesn't exist, it's created, settings are stored
  there (remembered between runs)
- Modules and plug-ins in user directory are found and work

Object leaking
- Does not work on Win32 (FIXME: it may work now, begin fixed by -MD, must
  try)
- Run Gwyddion as
  gwyddion --debug-objects
- When Gwyddion exits, it prints list of all allocated and freed objects,
  with times of allocation and freeing
- Objects still alive on exit have ALIVE(<ref_count>) in place of time of
  freeing
- If such objects appear, one can try to locate the operation that leaked
  them by running Gwyddion, doing only the suspected operation, and quitting
  it
- Other things to look for are long rows of objects of the same type
  allocated almost in the same instant, ususally indicating some very
  inefficient algorithm

Valgrinding
- Does not work on Win32
- Run Gwyddion as
  valgrind --tool=memcheck --num-callers=12 --suppressions=...[6] gwyddion
- It should print no errors[7]
- Ideally, all testing should be done with addrcheck at least (instead of
  memcheck which makes the program too slow and memory-hungry)

Footnotes
[1] There's a known common problem: State of no option menu offering list of
    data windows is remembered in Gwyddion 1.x.
[2] There's a known problem with graphs, they rarely handle complex units
    correctly.
[3] May need to prepare some specific testing data
[4] Requires access to various systems and platforms, so at least what is
    available should be tested
[5] Except perhaps in too new modules that have not been translated yet
[6] Suppressions for Gdk and libpng problems are listed below
[7] 3D view is known to cause ***lots*** of errors

Addendum: Valgrind suppressions (for FC3)
<<<<< gdk_display.supp <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
   gdk_display_open_XReply
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_XReply
}

{
   gdk_display_open_XEventsQueued
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:_XEventsQueued

}
{
   gdk_display_open_XReply
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:XFlush
}

{
   gdk_display_open_XDrawLine
   Memcheck:Param
   write(buf)
   fun:__write_nocancel
   fun:_X11TransWrite
   obj:/usr/X11R6/lib/libX11.so.6.2
   fun:XDrawLine
}

{
   png_write
   Memcheck:Cond
   obj:/usr/lib/libz.so.1.2.1.2
   obj:/usr/lib/libz.so.1.2.1.2
   fun:deflate
   fun:png_write_finish_row
}
>>>>> gdk_display.supp >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>