interrupts during the program running. So it did not
cause any influence on the program. This also could
bring hidden trouble to the program security and
reliability.
5 CONCLUSIONS
This paper presents a source code oriented fault
classification scheme. The classification scheme was
applied to software fault seeding. Regarding the
essence of the procedural language and the
occurrence causes of software faults as theoretical
foundations, and considering three aspects about
assignment statements, control decision and runtime
environment, the software faults are classified as
assignment faults, control flow faults or runtime
environment faults. Then they are further classified
by degrees, respectively, according to the concrete
occurrence reasons. That is to say, a hierarchy of
fault classes is designed.
A statistical method based on Bayes formula is
presented, which can provide a guarantee for
“representative” faults seeding. A logical method
based on the logical relation between control flow
and data flow of a program is also presented, which
can be used to determine the seeded locations
rationally. After seeding faults into the subject
program, and testing the faulty version, the fault
detectability and detection effectiveness can be
measured by analyzing testing results. This can
provide important hints for the testing strategy
improving.
In the future work, large numbers of naturally
occurring faults will be collected, and this will
further improve the authenticity of statistical data.
Moreover, this can make the types and the
manifestations of seeded faults which are designed
during fault seeding more “representative”. The
proposed methods lay theoretical foundations for
fault seeding. According to the requirements of the
real project, the methods can be adjusted properly,
and the automatic fault seeder will be designed.
ACKNOWLEDGEMENTS
I am grateful to Zhang Fan, Dong Zhanqiu and Hu
Yubiao for their suggestions.
REFERENCES
Basili, V. R., Selby, R. W., 1987. Comparing the
Effectiveness of Software Testing Strategies. IEEE
Transactions on Software Engineering, vol. 13, no. 12,
December.
Boehm, B., Port, D., 2002. Defect and Fault Seeding In
Dependability Benchmarking. DSN Workshop on
Dependability Benchmarking.
Clark, R. L., 1984. A Linguistic Contribution to Goto-Less
Programming. Communications of the ACM, vol. 27,
no. 4, April.
Copeland, J., Haemer, J. S., 2000. The Art of Software
Testing. SW Expert.
Girgis, M. R., Woodward M. R., 1986. An Experimental
Comparison of the Error Exposing Ability of Program
Testing Criteria. In Proc. Workshop on Software
Testing. IEEE Computer Society Press.
Harrold, M. J., Offutt, A. J., Tewary, K., 1994. An
Approach to Fault Modeling and Fault Seeding Using
the Program Dependence Graph. In Proceedings of
International Symposium on Software Reliability
Howden, W. E., 1976. Reliability of the Path Analysis
Testing Strategy. IEEE Transactions on Software
Engineering, vol. 2, no. 3, September.
Kuhn, D. R., 1999. Fault Classes and Error Detection
Capability of Specification-Based Testing. ACM
Transactions on Software Engineering and
Methodology, vol. 8, no. 4, October.
Meek, B., Siu K., 1989. The effectiveness of error seeding.
ACM Sigplan Notices, vol. 24, no. 6, June.
Offutt, J., Hayes, J. H., 1995. A Semantic Model of
Program Faults. ISSE-TR-95-110.
Pocatilu, P., 2010. Quality Related Costs of e-Business
Systems. Journal of Applied Collaborative Systems,
vol. 2, no. 2.
Scott, H., Wohlin, C., 2008. Capture-recapture in Software
Unit Testing: A Case Study. Proceedings of the
Second ACM-IEEE international symposium on
Empirical software engineering and measurement.
Selby, R. W., 1986. Combining Software Testing
strategies: An Empirical Evaluation. In Proc.
Workshop on Software Testing. IEEE Computer
Society Press.
Shen, V. Y., Yu, T. J., Thebaut, S. M., Paulsen, L. R.,
1985. Identifying Error-prone Software--An Empirical
Study. IEEE Transactions on Software Engineering,
vol. 11, no. 4, April.
Stephens, R. T., 2001. Dynamic Duo: Code Coverage and
Fault Seeding. System Development Process.
Telles, M., Yuan, H., 2001. The Science of Debugging.
The Coriolis Group LLC, 14455N.
Zeil, S. J., 1989. Perturbation Techniques for Detecting
Domain Errors. IEEE Transactions on Software
Engineering, vol. 15, no. 6, June.
ENASE 2011 - 6th International Conference on Evaluation of Novel Software Approaches to Software Engineering
210