40 likes | 171 Views
Software testing (1dev : 2.5-6). Not correct system: math/logic proof, right take: I find no error so far at my best. Incomplete induction. Debugging: part of coding phase, by self vs testing: conform to spec Verification=testing: conform to the spec;
E N D
Software testing (1dev : 2.5-6) • Not correct system: math/logic proof, right take: I find no error so far at my best. Incomplete induction. Debugging: part of coding phase, by self vs testing: conform to spec • Verification=testing: conform to the spec; • Validation: verification + better general quality: understandable: peer programmer, user-friendly, • Static: reading doc: spec/design/code and dynamic testing: run statistical: collect stats defect: non-conforming spec stat: guiding double blind testing: google vs bing, modern science New medicine: doctor, patient: med, suger • Component testing, integration: interface modules user test • Thread testing: typical scenario follow thru it • Alpha version: internal testing version, beta version: init: alpha dynamic: free send feedback, pay experts, delivered version 1.0 Minor change 1.01, 2.7.6 , ipython 1.0
Unit/module/sub-system/ acceptance: delivered version (after beta), machine learning: learn new cases/knowledge (intelligent: evolve, learn from new data) • Adaptive: random forest, svm, NN, LR, LgR…. • 90% Top-down: test root first, go down vs bottom-up: test root last; OO combination of TD and BU stubs, drivers, which is better? And why? Philosophy of testing • Black box testing: partitioning cases: cannot see, input --- output according to spec • White-box glass –box or structural testing: exhaustive traversal all possible branch • Interface testing: integrate system, • End result: delivered system (not final)
Evolution & maintenance • Maintenance: change after delivery corrective: fix error; required adaptive: to new envir; optional perfective: new req; more optional/volunteer new • Process: user complaints. Pool whinings; change req/spec, assessment, new iteration of dev-new life cycle • System documentation: spec+plan+design+src code + testing cases report (bugs, fix) • Evolution dynamics: continuous change, consider I—O by spec increasing complexity; • Reduce Maintenance cost: spec, coupling loose, good documentation
Factors: module rel; PL: understandability, shorter (kolmogorov complexity); prog. Style; • Software re-engineering: legacy system: in old PL(cobol, algol), old DS, alg.; which is easier? Re-eng or soft. Engr? COBOL/ algol, by python; from scratch using python. Mutual misundertanding: gone almost, free consultant, reliable; Cobol to C • Source code translation: matlab to c++; • Data re-engr: re-organize data structure; • Software Reverse engineering: spy(mit/ind) military AI; obtain design and spec from object code. 2002, human face