publications: - title: "Static Estimation of Test Coverage" author: - name: "Tiago L. Alves" link: "http://wiki.di.uminho.pt/twiki/bin/view/Personal/Tiago/" - name: "Joost Visser" link: "http://www.di.uminho.pt/~joost.visser/" year: "2009" doi: "http://doi.ieeecomputersociety.org/10.1109/SCAM.2009.15" abstract: "Test coverage is an important indicator for unit test quality. Tools such as Clover compute coverage by first instrumenting the code with logging functionality, and then logging which parts are executed during unit test runs. Since computation of test coverage is a dynamic analysis, it presupposes a working installation of the software. In the context of software quality assessment by an independent third party, a working installation is often not available. The evaluator may not have access to the required libraries or hardware platform. The installation procedure may not be automated or documented. In this paper, we propose a technique for estimating test coverage at method level through static analysis only. The technique uses slicing of static call graphs to estimate the dynamic test coverage. We explain the technique and its implementation. We validate the results of the static estimation by statistical comparison to values obtained through dynamic analysis using Clover. We found high correlation between static coverage estimation and real coverage at system level but closer analysis on package and class level reveals opportunities for further improvement." links: doi: "http://doi.ieeecomputersociety.org/10.1109/SCAM.2009.15" tags: - "test coverage" - "testing" - "analysis" - "static analysis" - "code querying" - "graph-rewriting" - "slicing" - "context-aware" - "rewriting" - "coverage" researchr: "https://researchr.org/publication/AlvesV09" cites: 0 citedby: 0 pages: "55-64" booktitle: "SCAM" kind: "inproceedings" key: "AlvesV09" - title: "Static Estimation of Test Coverage" author: - name: "Tiago L. Alves" link: "http://wiki.di.uminho.pt/twiki/bin/view/Personal/Tiago/" - name: "Joost Visser" link: "http://www.di.uminho.pt/~joost.visser/" year: "2009" doi: "http://doi.ieeecomputersociety.org/10.1109/SCAM.2009.15" abstract: "Test coverage is an important indicator for unit test quality. Tools such as Clover compute coverage by first instrumenting the code with logging functionality, and then logging which parts are executed during unit test runs. Since computation of test coverage is a dynamic analysis, it presupposes a working installation of the software. In the context of software quality assessment by an independent third party, a working installation is often not available. The evaluator may not have access to the required libraries or hardware platform. The installation procedure may not be automated or documented. In this paper, we propose a technique for estimating test coverage at method level through static analysis only. The technique uses slicing of static call graphs to estimate the dynamic test coverage. We explain the technique and its implementation. We validate the results of the static estimation by statistical comparison to values obtained through dynamic analysis using Clover. We found high correlation between static coverage estimation and real coverage at system level but closer analysis on package and class level reveals opportunities for further improvement. " links: doi: "http://doi.ieeecomputersociety.org/10.1109/SCAM.2009.15" tags: - "test coverage" - "testing" - "analysis" - "static analysis" - "graph-rewriting" - "slicing" - "context-aware" - "rewriting" - "coverage" researchr: "https://researchr.org/publication/10.1109-SCAM.2009.15" cites: 0 citedby: 0 journal: "Source Code Analysis and Manipulation, IEEE International Workshop on" volume: "0" kind: "article" key: "10.1109-SCAM.2009.15" - title: "Strategic Term Rewriting and Its Application to a VDMSL to SQL Conversion" author: - name: "Tiago L. Alves" link: "http://wiki.di.uminho.pt/twiki/bin/view/Personal/Tiago/" - name: "Paulo F. Silva" link: "http://wiki.di.uminho.pt/twiki/bin/view/Main/PauloSilva" - name: "Joost Visser" link: "http://www.di.uminho.pt/~joost.visser/" - name: "José Nuno Oliveira" link: "http://www.di.uminho.pt/~jno/" year: "2005" doi: "http://dx.doi.org/10.1007/11526841_27" abstract: "We constructed a tool, called VooDooM, which converts datatypes in VDM-SL into SQL relational data models. The conversion involves transformation of algebraic types to maps and products, and pointer introduction. The conversion is specified as a theory of refinement by calculation. The implementation technology is strategic term rewriting in Haskell, as supported by the Strafunski bundle. Due to these choices of theory and technology, the road from theory to practise is straightforward." links: doi: "http://dx.doi.org/10.1007/11526841_27" tags: - "model-to-model transformation" - "Data refinement" - "meta programming" - "graph transformation" - "meta-model" - "refinement" - "SQL" - "term rewriting" - "relational algebra" - "Haskell" - "data-flow programming" - "data-flow" - "source-to-source" - "graph-rewriting" - "strategic programming" - "Strategic term rewriting" - "model transformation" - " algebra" - "type theory" - "Meta-Environment" - "rewriting" - "transformation" researchr: "https://researchr.org/publication/AlvesSVO05" cites: 0 citedby: 0 pages: "399-414" booktitle: "FM" kind: "inproceedings" key: "AlvesSVO05" - title: "A Case Study in Grammar Engineering" author: - name: "Tiago L. Alves" link: "http://wiki.di.uminho.pt/twiki/bin/view/Personal/Tiago/" - name: "Joost Visser" link: "http://www.di.uminho.pt/~joost.visser/" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-642-00434-6_18" abstract: "This paper describes a case study about how well-established software engineering techniques can be applied to the development of a grammar. The employed development methodology can be described as iterative grammar engineering and includes the application of techniques such as grammar metrics, unit testing, and test coverage analysis. The result is a grammar of industrial strength, in the sense that it is well-tested, it can be used for fast parsing of high volumes of code, and it allows automatic generation of support for syntax tree representation, traversal, and interchange. " links: doi: "http://dx.doi.org/10.1007/978-3-642-00434-6_18" tags: - "test coverage" - "case study" - "traversal" - "grammar engineering" - "testing" - "analysis" - "software engineering" - "code generation" - "parsing" - "iterative development" - "coverage" - "grammar" researchr: "https://researchr.org/publication/AlvesV08" cites: 0 citedby: 0 pages: "285-304" booktitle: "SLE" kind: "inproceedings" key: "AlvesV08"