Object-oriented metrics that predict maintainability
Journal of Systems and Software - Special issue on object-oriented software
Experiences with cluster and class testing
Communications of the ACM
Large-scale C++ software design
Large-scale C++ software design
A Validation of Object-Oriented Design Metrics as Quality Indicators
IEEE Transactions on Software Engineering
A Unified Framework for Coupling Measurement in Object-Oriented Systems
IEEE Transactions on Software Engineering
Software test automation: effective use of test execution tools
Software test automation: effective use of test execution tools
Proceedings of the Conference on The Future of Software Engineering
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
Effective Software Testing: 50 Ways to Improve Your Software Testing
Effective Software Testing: 50 Ways to Improve Your Software Testing
Test Driven Development: By Example
Test Driven Development: By Example
Object Oriented Reengineering Patterns
Object Oriented Reengineering Patterns
A Practical Guide to Feature-Driven Development
A Practical Guide to Feature-Driven Development
Assessing test-driven development at IBM
Proceedings of the 25th International Conference on Software Engineering
Analyzing Java Software by Combining Metrics and Program Visualization
CSMR '00 Proceedings of the Conference on Software Maintenance and Reengineering
A Study on Fault-Proneness Detection of Object-Oriented Systems
CSMR '01 Proceedings of the Fifth European Conference on Software Maintenance and Reengineering
Empirical Performance Analysis of Computer-Supported Code-Reviews
ISSRE '97 Proceedings of the Eighth International Symposium on Software Reliability Engineering
A Taxonomy and an Initial Empirical Study of Bad Smells in Code
ICSM '03 Proceedings of the International Conference on Software Maintenance
Dive Into Python
Pragmatic Unit Testing in C# with NUnit
Pragmatic Unit Testing in C# with NUnit
Detection Strategies: Metrics-Based Rules for Detecting Design Flaws
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Bad Smells " Humans as Code Critics
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Working Effectively with Legacy Code
Working Effectively with Legacy Code
Extreme Programming Explained: Embrace Change (2nd Edition)
Extreme Programming Explained: Embrace Change (2nd Edition)
XUnit Test Patterns: Refactoring Test Code
XUnit Test Patterns: Refactoring Test Code
Systematic Gene Function Prediction Using a Fuzzy Nearest-Cluster Method on Gene Expression Data
IMSCCS '06 Proceedings of the First International Multi-Symposiums on Computer and Computational Sciences - Volume 1 (IMSCCS'06) - Volume 01
A Survey of Unit Testing Practices
IEEE Software
Test-Driven Development in Large Projects
IT Professional
Agile Java(TM): Crafting Code with Test-Driven Development (Robert C. Martin Series)
Agile Java(TM): Crafting Code with Test-Driven Development (Robert C. Martin Series)
A tester-assisted methodology for test redundancy detection
Advances in Software Engineering - Special issue on software test automation
Empirical support for two refactoring studies using commercial C# software
EASE'09 Proceedings of the 13th international conference on Evaluation and Assessment in Software Engineering
Measuring test case similarity to support test suite understanding
TOOLS'12 Proceedings of the 50th international conference on Objects, Models, Components, Patterns
Identification of generalization refactoring opportunities
Automated Software Engineering
Strategies for avoiding text fixture smells during software evolution
Proceedings of the 10th Working Conference on Mining Software Repositories
Hi-index | 0.00 |
As a testing method, white box testing has been demonstrated to be very efficient in early defect detection. However, white box testing introduces test co-evolution as an additional burden to software development. To mitigate the effects of co-evolution, tests should be written in a manner that makes them easy to change. Fortunately, we are able to concretely express what a good test is by exploiting the specific principles underlying white box testing. Analogous to the concept of code smells, violations of these principles are termed test smells. In this paper, we present a formal description of test smells, and propose metrics to support their detection. We validate the feasibility of detecting two test smells, General Fixture and Eager Test, by comparison with human evaluation. We demonstrate the effectiveness of the detection in the case the assessment is agreed upon by evaluators. For the General Fixture, a qualitative investigation showed that an ambiguous test smell definition prohibits the detection by metrics and suggests disentangling its definition. On the bright side, test evolvability can be more concretely expressed than general evolvability due to the exploitation of the specific principles underlying white box testing. In particular, adherence to a rigid setup-stimulate-verify-teardown cycle has been reported an essential characteristic of evolvable tests. In this article, we propose to incorporate structural characteristics of tests in the definition of test smells, thereby providing an objective means to detect test evolution obstacles. We validate the feasibility of detecting test evolution obstacles using such test smells, thereby contributing the first step to the mitigation of the cost of test co-evolution.