Eliminating Path Redundancy via Postconditioned Symbolic Execution
Symbolic execution is emerging as a powerful technique for generating test inputs systematically to achieve exhaustive path coverage of a bounded depth. However, its practical use is often limited by path explosion because the number of paths of a program can be exponential in the number of branch c...
Saved in:
| Published in: | IEEE transactions on software engineering Vol. 44; no. 1; pp. 25 - 43 |
|---|---|
| Main Authors: | , , , , , |
| Format: | Journal Article |
| Language: | English |
| Published: |
New York
IEEE
01.01.2018
IEEE Computer Society |
| Subjects: | |
| ISSN: | 0098-5589, 1939-3520 |
| Online Access: | Get full text |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
| Abstract | Symbolic execution is emerging as a powerful technique for generating test inputs systematically to achieve exhaustive path coverage of a bounded depth. However, its practical use is often limited by path explosion because the number of paths of a program can be exponential in the number of branch conditions encountered during the execution. To mitigate the path explosion problem, we propose a new redundancy removal method called postconditioned symbolic execution. At each branching location, in addition to determine whether a particular branch is feasible as in traditional symbolic execution, our approach checks whether the branch is subsumed by previous explorations. This is enabled by summarizing previously explored paths by weakest precondition computations. Postconditioned symbolic execution can identify path suffixes shared by multiple runs and eliminate them during test generation when they are redundant. Pruning away such redundant paths can lead to a potentially exponential reduction in the number of explored paths. Since the new approach is computationally expensive, we also propose several heuristics to reduce its cost. We have implemented our method in the symbolic execution engine KLEE [1] and conducted experiments on a large set of programs from the GNU Coreutils suite. Our results confirm that redundancy due to common path suffix is both abundant and widespread in real-world applications. |
|---|---|
| AbstractList | Symbolic execution is emerging as a powerful technique for generating test inputs systematically to achieve exhaustive path coverage of a bounded depth. However, its practical use is often limited by path explosion because the number of paths of a program can be exponential in the number of branch conditions encountered during the execution. To mitigate the path explosion problem, we propose a new redundancy removal method called postconditioned symbolic execution. At each branching location, in addition to determine whether a particular branch is feasible as in traditional symbolic execution, our approach checks whether the branch is subsumed by previous explorations. This is enabled by summarizing previously explored paths by weakest precondition computations. Postconditioned symbolic execution can identify path suffixes shared by multiple runs and eliminate them during test generation when they are redundant. Pruning away such redundant paths can lead to a potentially exponential reduction in the number of explored paths. Since the new approach is computationally expensive, we also propose several heuristics to reduce its cost. We have implemented our method in the symbolic execution engine KLEE [1] and conducted experiments on a large set of programs from the GNU Coreutils suite. Our results confirm that redundancy due to common path suffix is both abundant and widespread in real-world applications. |
| Author | Shengjian Guo Chao Wang Chen Zhao Qiuping Yi Jian Liu Zijiang Yang |
| Author_xml | – sequence: 1 givenname: Qiuping surname: Yi fullname: Yi, Qiuping – sequence: 2 givenname: Zijiang surname: Yang fullname: Yang, Zijiang – sequence: 3 givenname: Shengjian surname: Guo fullname: Guo, Shengjian – sequence: 4 givenname: Chao surname: Wang fullname: Wang, Chao – sequence: 5 givenname: Jian orcidid: 0000-0002-7557-8347 surname: Liu fullname: Liu, Jian – sequence: 6 givenname: Chen surname: Zhao fullname: Zhao, Chen |
| BookMark | eNp9kEtLw0AURgepYFvdC24CrlPnkXkttaQqFCy2rofJzESnpJOaTMT-exNaXLhwdeHynftxzwSMQh0cANcIzhCC8m6zzmcYIj7DjEpO0RkYI0lkSiiGIzCGUIqUUiEvwKRttxBCyjkdg4e88jsfdPThPVnp-JG8OtsFq4M5JF9eJ6u6jaYO1kffF9pkfdgVdeVNkn870w3LS3Be6qp1V6c5BW-LfDN_Spcvj8_z-2VqsEQxtbjQzJbO4YI6ybOSyoJqwi2mpMQ8szJzzCCUWYEhI6YoZAEtRpyJkggByRTcHu_um_qzc21U27prQl-p-lSWSUYR71PwmDJN3baNK9W-8TvdHBSCajClelNqMKVOpnqE_UGMj3p4LTbaV_-BN0fQO-d-e7jonbOM_AC7WHeS |
| CODEN | IESEDJ |
| CitedBy_id | crossref_primary_10_1016_j_cose_2024_103732 crossref_primary_10_1016_j_infsof_2018_11_006 crossref_primary_10_1016_j_infsof_2021_106576 crossref_primary_10_1016_j_cose_2024_104193 crossref_primary_10_1016_j_csi_2020_103444 crossref_primary_10_1145_3656443 crossref_primary_10_1016_j_cose_2022_103048 crossref_primary_10_1109_TSE_2021_3101870 |
| Cites_doi | 10.1109/ICSE.2013.6606713 10.1007/11817963_38 10.1007/11817963_14 10.1007/978-3-642-31424-7_43 10.1145/1950365.1950396 10.1145/2771783.2771802 10.1145/2001420.2001423 10.1109/ICSE.2012.6227146 10.1145/2771783.2771806 10.1007/978-3-319-11164-3_27 10.1145/1095430.1081750 10.1145/2338965.2336771 10.1145/1180405.1180445 10.1007/978-3-642-31424-7_61 10.1145/1993498.1993558 10.1007/978-3-540-78800-3_28 10.1007/978-3-642-11319-2_12 10.1145/1065010.1065036 10.1109/ASE.2008.69 10.1145/1985793.1985971 10.1145/1706299.1706307 10.1145/1713254.1713257 10.1145/1390630.1390635 10.1145/1831708.1831732 10.1145/1755913.1755946 10.1109/ICSE.2015.79 10.1109/TSE.2015.2490067 10.1145/1190216.1190226 10.1007/s10009-009-0118-1 10.1145/2254064.2254088 10.1109/ICSE.2007.41 10.1145/2568225.2568293 10.1145/2491411.2491425 10.1145/2393596.2393665 10.1145/1450058.1450087 10.1109/ICST.2012.114 10.1007/978-3-642-14295-6_10 10.1007/978-3-540-78800-3_33 10.1109/ASE.2013.6693084 10.1109/ICSE.2013.6606558 10.1145/2384616.2384654 10.1145/2451116.2451152 10.1007/978-3-642-27940-9_4 10.1145/2509136.2509553 10.1145/1966445.1966475 10.1109/ICSE.2015.80 10.1145/129393.129398 10.1007/978-3-642-22110-1_45 10.1007/978-3-540-73368-3_52 10.1007/978-3-642-31424-7_48 10.1145/2635868.2635872 10.1109/ICSM.2010.5609565 |
| ContentType | Journal Article |
| Copyright | Copyright IEEE Computer Society 2018 |
| Copyright_xml | – notice: Copyright IEEE Computer Society 2018 |
| DBID | 97E RIA RIE AAYXX CITATION JQ2 K9. |
| DOI | 10.1109/TSE.2017.2659751 |
| DatabaseName | IEEE Xplore (IEEE) IEEE All-Society Periodicals Package (ASPP) 1998–Present IEEE Electronic Library (IEL) CrossRef ProQuest Computer Science Collection ProQuest Health & Medical Complete (Alumni) |
| DatabaseTitle | CrossRef ProQuest Health & Medical Complete (Alumni) ProQuest Computer Science Collection |
| DatabaseTitleList | ProQuest Health & Medical Complete (Alumni) |
| Database_xml | – sequence: 1 dbid: RIE name: IEEE Electronic Library (IEL) url: https://ieeexplore.ieee.org/ sourceTypes: Publisher |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 1939-3520 |
| EndPage | 43 |
| ExternalDocumentID | 10_1109_TSE_2017_2659751 7835264 |
| Genre | orig-research |
| GroupedDBID | --Z -DZ -~X .DC 0R~ 29I 4.4 5GY 6IK 85S 8R4 8R5 97E AAJGR AARMG AASAJ AAWTH ABAZT ABPPZ ABQJQ ABVLG ACGFO ACGOD ACIWK ACNCT AENEX AGQYO AHBIQ AKJIK AKQYR ALMA_UNASSIGNED_HOLDINGS ASUFR ATWAV BEFXN BFFAM BGNUA BKEBE BKOMP BPEOZ CS3 DU5 EBS EDO EJD HZ~ I-F IEDLZ IFIPE IPLJI JAVBF LAI M43 MS~ O9- OCL P2P Q2X RIA RIE RNS RXW S10 TAE TN5 TWZ UHB UPT WH7 YZZ AAYXX CITATION JQ2 K9. |
| ID | FETCH-LOGICAL-c291t-d2ba6dfee2b5e974f59b5a37d253f274d94e6c114d82063cbb9b0d21768f38803 |
| IEDL.DBID | RIE |
| ISICitedReferencesCount | 25 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000422693800004&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 0098-5589 |
| IngestDate | Fri Oct 03 04:01:06 EDT 2025 Sat Nov 29 03:10:24 EST 2025 Tue Nov 18 22:05:37 EST 2025 Wed Aug 27 02:47:44 EDT 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | 1 |
| Language | English |
| License | https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/IEEE.html https://doi.org/10.15223/policy-029 https://doi.org/10.15223/policy-037 |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-c291t-d2ba6dfee2b5e974f59b5a37d253f274d94e6c114d82063cbb9b0d21768f38803 |
| Notes | ObjectType-Article-1 SourceType-Scholarly Journals-1 ObjectType-Feature-2 content type line 14 |
| ORCID | 0000-0002-7557-8347 |
| PQID | 2174496517 |
| PQPubID | 21418 |
| PageCount | 19 |
| ParticipantIDs | proquest_journals_2174496517 crossref_primary_10_1109_TSE_2017_2659751 crossref_citationtrail_10_1109_TSE_2017_2659751 ieee_primary_7835264 |
| PublicationCentury | 2000 |
| PublicationDate | 2018-Jan.-1 2018-1-1 20180101 |
| PublicationDateYYYYMMDD | 2018-01-01 |
| PublicationDate_xml | – month: 01 year: 2018 text: 2018-Jan.-1 day: 01 |
| PublicationDecade | 2010 |
| PublicationPlace | New York |
| PublicationPlace_xml | – name: New York |
| PublicationTitle | IEEE transactions on software engineering |
| PublicationTitleAbbrev | TSE |
| PublicationYear | 2018 |
| Publisher | IEEE IEEE Computer Society |
| Publisher_xml | – name: IEEE – name: IEEE Computer Society |
| References | ref57 ref56 ref12 ref15 mcmillan (ref25) 2006 ref58 ref14 ref53 ref55 sen (ref52) 2015 ref54 ref10 ramos (ref11) 2015 nori (ref26) 2009 mcmillan (ref16) 2010 ref19 cadar (ref1) 2008 ref51 ref50 albarghouthi (ref37) 2012 ref46 ref45 ref48 ref47 d'silva (ref35) 2010 ref41 ref44 pham (ref13) 2015 rojas (ref42) 2013 ref43 weissenbacher (ref34) 2012 jaffar (ref18) 2009 sen (ref4) 2005 ref9 ref6 ref5 ref40 beyer (ref32) 2012 pasareanu (ref7) 2009; 11 ciortea (ref21) 2009; 43 ref36 bugrara (ref49) 2013 ref30 jaffar (ref17) 2008 kroening (ref33) 2011 ref2 jaffar (ref31) 2011 ref39 ref38 godefroid (ref3) 2008 ref24 ref67 ref23 ref64 ref20 ref63 ref66 ref22 ref65 ref27 ref29 ma (ref59) 2011 avgerinos (ref8) 2011 ref60 jaffar (ref28) 2012 ref62 ref61 |
| References_xml | – ident: ref66 doi: 10.1109/ICSE.2013.6606713 – start-page: 151 year: 2008 ident: ref3 article-title: Automated whitebox fuzz testing publication-title: Proc Usenix Symp Netw Distrib Syst Security – ident: ref5 doi: 10.1007/11817963_38 – start-page: 123 year: 2006 ident: ref25 article-title: Lazy abstraction with interpolants publication-title: Proc Int Conf Comput Aided Verification doi: 10.1007/11817963_14 – ident: ref19 doi: 10.1007/978-3-642-31424-7_43 – ident: ref12 doi: 10.1145/1950365.1950396 – ident: ref46 doi: 10.1145/2771783.2771802 – ident: ref60 doi: 10.1145/2001420.2001423 – ident: ref65 doi: 10.1109/ICSE.2012.6227146 – ident: ref45 doi: 10.1145/2771783.2771806 – ident: ref29 doi: 10.1007/978-3-319-11164-3_27 – start-page: 178 year: 2009 ident: ref26 article-title: The yogi project: Software property checking via static analysis and testing publication-title: Proc Int Conf Tools and Algorithms Constr and Anal Syst – start-page: 263 year: 2005 ident: ref4 article-title: CUTE: A concolic unit testing engine for C publication-title: Proc 2nd ACM SIGSOFT Symp on Foundations of Software Engineering doi: 10.1145/1095430.1081750 – ident: ref67 doi: 10.1145/2338965.2336771 – ident: ref47 doi: 10.1145/1180405.1180445 – start-page: 758 year: 2012 ident: ref28 article-title: TRACER: A symbolic execution tool for verification publication-title: Proc 24th Int Conf Comput Aided Verification doi: 10.1007/978-3-642-31424-7_61 – ident: ref64 doi: 10.1145/1993498.1993558 – ident: ref40 doi: 10.1007/978-3-540-78800-3_28 – start-page: 129 year: 2010 ident: ref35 article-title: Interpolant strength publication-title: Proc Int Conf Verification Model Checking Abstract Interpretation doi: 10.1007/978-3-642-11319-2_12 – start-page: 199 year: 2013 ident: ref49 article-title: Redundant state detection for dynamic symbolic execution publication-title: Proc USENIX Annu Tech Conf – ident: ref2 doi: 10.1145/1065010.1065036 – ident: ref6 doi: 10.1109/ASE.2008.69 – ident: ref54 doi: 10.1145/1985793.1985971 – start-page: 842 year: 2015 ident: ref52 article-title: MultiSE: Multi-path symbolic execution using value summaries publication-title: Proc Power Eng Meeting – start-page: 396 year: 2011 ident: ref31 article-title: Unbounded symbolic execution for program verification publication-title: Proceedings of the 2nd International Conference on Runtime Verification – ident: ref41 doi: 10.1145/1706299.1706307 – volume: 43 start-page: 5 year: 2009 ident: ref21 article-title: Cloud9: A software testing service publication-title: Operating Syst Rev doi: 10.1145/1713254.1713257 – start-page: 106 year: 2012 ident: ref32 article-title: Algorithms for software model checking: Predicate abstraction versus impact publication-title: Proc Formal Methods Comput -Aided Des – ident: ref20 doi: 10.1145/1390630.1390635 – ident: ref22 doi: 10.1145/1831708.1831732 – ident: ref61 doi: 10.1145/1755913.1755946 – ident: ref43 doi: 10.1109/ICSE.2015.79 – ident: ref56 doi: 10.1109/TSE.2015.2490067 – ident: ref14 doi: 10.1145/1190216.1190226 – volume: 11 start-page: 339 year: 2009 ident: ref7 article-title: A survey of new trends in symbolic execution for software testing and analysis publication-title: Int J Softw Tools Technol Transfer doi: 10.1007/s10009-009-0118-1 – ident: ref48 doi: 10.1145/2254064.2254088 – ident: ref15 doi: 10.1109/ICSE.2007.41 – ident: ref50 doi: 10.1145/2568225.2568293 – start-page: 297 year: 2008 ident: ref17 article-title: Efficient memoization for dynamic programming with ad-hoc constraints publication-title: Proc 23rd Nat Conf Artif Intell – ident: ref30 doi: 10.1145/2491411.2491425 – ident: ref44 doi: 10.1145/2393596.2393665 – ident: ref9 doi: 10.1145/1450058.1450087 – ident: ref24 doi: 10.1109/ICST.2012.114 – start-page: 49 year: 2015 ident: ref11 article-title: Under-constrained symbolic execution: Correctness checking for real code publication-title: 24th USENIX Security Symp – start-page: 454 year: 2009 ident: ref18 article-title: An interpolation method for CLP traversal publication-title: Proc Int Conf Principles Practice Constraint Program – start-page: 104 year: 2010 ident: ref16 article-title: Lazy annotation for program testing and verification publication-title: Proc Int Conf Comput Aided Verification doi: 10.1007/978-3-642-14295-6_10 – ident: ref27 doi: 10.1007/978-3-540-78800-3_33 – ident: ref55 doi: 10.1109/ASE.2013.6693084 – start-page: 95 year: 2011 ident: ref59 article-title: Directed symbolic execution publication-title: Proc 18th Int Symp Static Anal – ident: ref10 doi: 10.1109/ICSE.2013.6606558 – ident: ref23 doi: 10.1145/2384616.2384654 – ident: ref62 doi: 10.1145/2451116.2451152 – start-page: 556 year: 2012 ident: ref34 article-title: Wolverine: Battling bugs with interpolants-(competition contribution) publication-title: Proc Int Conf Tools and Algorithms Constr and Anal Syst – ident: ref36 doi: 10.1007/978-3-642-27940-9_4 – ident: ref57 doi: 10.1145/2509136.2509553 – ident: ref51 doi: 10.1145/1966445.1966475 – ident: ref63 doi: 10.1109/ICSE.2015.80 – ident: ref38 doi: 10.1145/129393.129398 – start-page: 209 year: 2008 ident: ref1 article-title: KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs publication-title: Proc USENIX Symp on Operating System Design and Implementation – year: 2013 ident: ref42 article-title: Compositional symbolic execution through program specialization publication-title: Proc 1st Workshop Bytecode Semantics Verification Anal Transformation – start-page: 573 year: 2011 ident: ref33 article-title: Interpolation-based software verification with wolverine publication-title: Proc 23rd Int Conf Comput Aided Verification doi: 10.1007/978-3-642-22110-1_45 – start-page: 283 year: 2011 ident: ref8 article-title: AEG: Automatic exploit generation publication-title: Proc Usenix Symp Netw Distrib Syst Security – ident: ref39 doi: 10.1007/978-3-540-73368-3_52 – start-page: 672 year: 2012 ident: ref37 article-title: UFO: A framework for abstraction- and interpolation-based software verification publication-title: Proc 24th Int Conf Comput Aided Verification doi: 10.1007/978-3-642-31424-7_48 – ident: ref58 doi: 10.1145/2635868.2635872 – start-page: 891 year: 2015 ident: ref13 article-title: Hercules: reproducing crashes in real-world application binaries publication-title: Proceedings of the International Conference on Software Engineering ICSE'94 – ident: ref53 doi: 10.1109/ICSM.2010.5609565 |
| SSID | ssj0005775 ssib053395008 |
| Score | 2.4037237 |
| Snippet | Symbolic execution is emerging as a powerful technique for generating test inputs systematically to achieve exhaustive path coverage of a bounded depth.... |
| SourceID | proquest crossref ieee |
| SourceType | Aggregation Database Enrichment Source Index Database Publisher |
| StartPage | 25 |
| SubjectTerms | Concrete Explosions Input variables Pruning Redundancy Software Symbolic execution Syntactics Testing testing and debugging testing tools |
| Title | Eliminating Path Redundancy via Postconditioned Symbolic Execution |
| URI | https://ieeexplore.ieee.org/document/7835264 https://www.proquest.com/docview/2174496517 |
| Volume | 44 |
| WOSCitedRecordID | wos000422693800004&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVIEE databaseName: IEEE Electronic Library (IEL) customDbUrl: eissn: 1939-3520 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0005775 issn: 0098-5589 databaseCode: RIE dateStart: 19750101 isFulltext: true titleUrlDefault: https://ieeexplore.ieee.org/ providerName: IEEE |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LS8NAEB7a4sGLVatYrbIHL4Jpm2w2mz2qpHgqxVboLWQfgUKt0hf6793ZJBVRBG857CZhZh_z7c58H8C1MTSTNPI9w6j2woxmntB-6GlJJc2xdlGHTmyCD4fxdCpGNbjd1cIYY1zymenio7vL169qg0dlPTylsBt4HeqcR0Wt1lc6B-es4sdkLBbVlWRf9CbjBHO4eDeIbPjM_G9bkNNU-bEQu91l0Pzffx3CQRlFkrvC7UdQM4tjaFYKDaScsC24T-ZOtQtzm8nIBnvkyWDZGC6pZDvLCGr1WkSsC8YiTcYfLxKZgknybpQbkyfwPEgmD49eqZrgqUD4a08HMot0bkwgmbFoIWdCsoxyHTCaWwyqRWgiZWGQRup2qqQUsq8tMoniHJlh6Ck0FvaTZ0Bs_KCRKDTjkQxtoGJDyVjlQiOfgLEubkOvMmSqSkpxVLaYpw5a9EVqTZ-i6dPS9G242fV4K-g0_mjbQlPv2pVWbkOn8lVazrdVisAKme99fv57rwvYt--Oi8OTDjTWy425hD21Xc9Wyys3lD4B3cTGjQ |
| linkProvider | IEEE |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV3PS8MwFH7MKejFqVOcTs3Bi2C3tmna5qiyMXGO4SbsVpomhcGcsl_of29e2k5EEbz1kJDy8uO9L3nv-wAulaKxoL5jKUal5cU0trh0PEsKKmiKtYvSM2ITQa8Xjka8X4LrdS2MUsokn6kGfpq3fPmaLPGqrIm3FNqBb8Am8zzXzqq1vhI6goAVDJmMhbx4lLR5czhoYRZX0HB9HUAz55sTMqoqP45i41_alf_92R7s5nEkuckmfh9KanoAlUKjgeRbtgq3rYnR7cLsZtLX4R55Ulg4hocqWY1jgmq9GhPLjLNIksHHi0CuYNJ6V4lZlYfw3G4N7zpWrptgJS53FpZ0RezLVClXMKXxQsq4YDENpMtoqlGo5J7yEw2EJJK300QILmypsYkfpsgNQ4-gPNVDHgPREYREqtA48IWnQxUdTIZJyiUyCig9yTVoFoaMkpxUHLUtJpEBFzaPtOkjNH2Um74GV-sebxmhxh9tq2jqdbvcyjWoF3MV5TtuHiG0Qu57Jzj5vdcFbHeGj92oe997OIUdPU6YXaXUobyYLdUZbCWrxXg-OzfL6hNdKsnU |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Eliminating+Path+Redundancy+via+Postconditioned+Symbolic+Execution&rft.jtitle=IEEE+transactions+on+software+engineering&rft.au=Yi%2C+Qiuping&rft.au=Yang%2C+Zijiang&rft.au=Guo%2C+Shengjian&rft.au=Wang%2C+Chao&rft.date=2018-01-01&rft.issn=0098-5589&rft.eissn=1939-3520&rft.volume=44&rft.issue=1&rft.spage=25&rft.epage=43&rft_id=info:doi/10.1109%2FTSE.2017.2659751&rft.externalDBID=n%2Fa&rft.externalDocID=10_1109_TSE_2017_2659751 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0098-5589&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0098-5589&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0098-5589&client=summon |