A key factor of studying Evolutionary Algorithms (EA) on automatic test generation is the selection of classes under test. As many open source classes, for example contained in the SF110 corpus, are trivially simple and would not reveal differences between algorithms, a selection of non-trivial classes has been proposed in the DynaMOSA study. This is a corpus of 117 open-source Java projects and 346 classes, selected from four different benchmarks. The complexity of classes ranges from 14 statements and 2 branches to 16,624 statements and 7,938 branches. The average number of statements is 1,109, and the average number of branches is 259.
Java projects/classes and their dependencies are in the subjects
directory and
here is the set of non-trivial Java classes organized by project:
Java Project | Java Class |
---|---|
1_tullibee | com.ib.client.ExecutionFilter |
1_tullibee | com.ib.client.ComboLeg |
10_water-simulator | simulator.CA.gui.ConsumerGUI |
10_water-simulator | simulator.CA.ConsumerAgent |
100_jgaap | jgaapGUI |
101_netweaver | com.sap.managementconsole.soap.axis.sapcontrol.HeapInfo |
101_netweaver | com.sap.managementconsole.soap.axis.sapcontrol.J2EEApplicationAlias |
102_squirrel-sql | net.sourceforge.squirrel_sql.client.preferences.GlobalPreferencesSheet |
102_squirrel-sql | net.sourceforge.squirrel_sql.fw.gui.CascadeInternalFramePositioner |
103_sweethome3d | com.eteks.sweethome3d.viewcontroller.HomeController |
103_sweethome3d | com.eteks.sweethome3d.viewcontroller.RoomController |
103_sweethome3d | com.eteks.sweethome3d.SweetHome3D |
103_sweethome3d | com.eteks.sweethome3d.j3d.Room3D |
104_vuze | com.aelitis.azureus.ui.swt.skin.SWTSkinObjectContainer |
104_vuze | com.aelitis.azureus.ui.swt.feature.FeatureManagerUIListener |
105_freemind | freemind.extensions.ExportHook |
105_freemind | accessories.plugins.time.JDayChooser |
107_weka | weka.core.Memory |
107_weka | weka.classifiers.Evaluation |
107_weka | weka.classifiers.bayes.net.search.ci.ICSSearchAlgorithm |
107_weka | weka.core.FindWithCapabilities |
108_liferay | com.liferay.portal.kernel.servlet.filters.invoker.FilterMapping |
108_liferay | com.liferay.portlet.documentlibrary.model.DLSyncWrapper |
109_pdfsam | jcmdline.HelpCmdLineHandler |
109_pdfsam | org.pdfsam.guiclient.business.thumbnails.callables.JPodThmbnailCallable |
11_imsmart | com.imsmart.servlet.HTMLFilter |
110_firebird | org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl |
110_firebird | org.firebirdsql.jdbc.FBProcedureCall |
110_firebird | org.firebirdsql.encodings.EncodingFactory |
12_dsachat | dsachat.server.Handler |
12_dsachat | dsachat.client.gui.InternalChatFrame |
13_jdbacl | org.databene.jdbacl.SQLUtil |
13_jdbacl | org.databene.jdbacl.DBUtil |
14_omjstate | uk.me.jockmacmad.jstate.state.Transition |
15_beanbin | net.sourceforge.beanbin.reflect.MethodReflectionCriteria |
15_beanbin | net.sourceforge.beanbin.reflect.ReflectionSearch |
17_inspirento | com.allenstudio.ir.util.XmlElement |
17_inspirento | com.allenstudio.ir.ui.MainMenu |
18_jsecurity | org.jsecurity.web.filter.authc.BasicHttpAuthenticationFilter |
18_jsecurity | org.jsecurity.web.DefaultWebSecurityManager |
18_jsecurity | org.jsecurity.util.AntPathMatcher |
19_jmca | com.soops.CEN4010.JMCA.JParser.JavaCharStream |
19_jmca | com.soops.CEN4010.JMCA.JParser.JavaParserTokenManager |
19_jmca | com.soops.CEN4010.JMCA.JParser.JavaParser |
19_jmca | com.soops.CEN4010.JMCA.JMCAAnalyzer |
2_a4j | net.kencochrane.a4j.DAO.Product |
2_a4j | net.kencochrane.a4j.file.FileUtil |
21_geo-google | geo.google.datamodel.GeoStatusCode |
21_geo-google | geo.google.mapping.AddressToUsAddressFunctor |
22_byuic | com.yahoo.platform.yui.compressor.ScriptOrFnScope |
22_byuic | com.yahoo.platform.yui.compressor.YUICompressor |
22_byuic | com.yahoo.platform.yui.compressor.JavaScriptCompressor |
22_byuic | org.mozilla.javascript.Parser |
23_jwbf | net.sourceforge.jwbf.mediawiki.actions.editing.MovePage |
23_jwbf | net.sourceforge.jwbf.mediawiki.actions.queries.TemplateUserTitles |
24_saxpath | org.saxpath.Axis |
24_saxpath | com.werken.saxpath.XPathLexer |
26_jipa | jipa.Main |
26_jipa | jipa.Variable |
27_gangup | gui.AudioManager |
29_apbsmem | apbs_mem_gui.Main |
29_apbsmem | jahuwaldt.plot.PlotAxis |
30_bpmail | ch.bluepenguin.email.client.tapestry.MessageList |
31_xisemele | net.sf.xisemele.impl.OperationsHelperImpl |
32_httpanalyzer | httpanalyzer.HttpAnalyzerView |
32_httpanalyzer | httpanalyzer.Password |
33_javaviewcontrol | com.pmdesigns.jvc.tools.TokenMgrError |
33_javaviewcontrol | com.pmdesigns.jvc.tools.JVCParser |
33_javaviewcontrol | com.pmdesigns.jvc.tools.JVCParserTokenManager |
35_corina | corina.formats.TucsonSimple |
36_schemaspy | net.sourceforge.schemaspy.model.xml.TableMeta |
36_schemaspy | net.sourceforge.schemaspy.model.Table |
37_petsoar | org.petsoar.order.CreditCardInfo |
37_petsoar | org.petsoar.search.lucene.DefaultLuceneDocumentFactory |
38_javabullboard | framework.util.StringUtils |
38_javabullboard | framework.util.jdbc.JDBCUtils |
39_diffi | de.beiri22.stringincrementor.helper.IndexedString |
39_diffi | de.beiri22.stringincrementor.StringIncrementor |
4_rif | com.densebrain.rif.server.transport.WebServiceDescriptor |
40_glengineer | glengineer.blocks.Block |
40_glengineer | glengineer.agents.GroupAgent |
41_follow | ghm.follow.gui.TabbedPane |
41_follow | ghm.follow.search.SearchableTextPane |
42_asphodel | org.asphodel.DefaultRepositoryManager |
43_lilith | de.huxhorn.lilith.data.access.AccessEvent |
44_summa | org.apache.lucene.search.exposed.compare.NamedCollatorComparator |
44_summa | org.apache.lucene.search.exposed.ExposedTimSort |
44_summa | dk.statsbiblioteket.summa.storage.database.StatementHandler |
44_summa | dk.statsbiblioteket.summa.support.harmonise.InteractionAdjuster |
45_lotus | lotus.core.phases.Phase |
45_lotus | lotus.core.Game |
46_nutzenportfolio | ch.bfh.egov.nutzenportfolio.common.AuswertungGrafik |
46_nutzenportfolio | ch.bfh.egov.nutzenportfolio.service.fragebogen.NaOpNuDaoService |
47_dvd-homevideo | Capture |
47_dvd-homevideo | Convert |
47_dvd-homevideo | Menu |
48_resources4j | com.mytdev.resources4j.impl.AbstractResources |
49_diebierse | bierse.model.Drink |
49_diebierse | bierse.controller.DefaultSettingsController |
5_templateit | org.templateit.Region |
5_templateit | org.templateit.WorkbookParser |
50_biff | Scanner |
51_jiprof | com.mentorgen.tools.profile.runtime.Profile |
51_jiprof | org.objectweb.asm.jip.commons.LocalVariablesSorter |
51_jiprof | org.objectweb.asm.jip.MethodWriter |
51_jiprof | org.objectweb.asm.jip.ClassReader |
52_lagoon | nu.staldal.lagoon.LagoonGUI |
52_lagoon | nu.staldal.lagoon.LagoonCLI |
54_db-everywhere | com.gbshape.dbe.utils.DBEHelper |
54_db-everywhere | com.gbshape.dbe.sapdb.SapdbTableList |
55_lavalamp | net.sf.lavalamp.device.TimeOfDay |
56_jhandballmoves | visu.handball.moves.actions.CreateMovePdfAction |
56_jhandballmoves | visu.handball.moves.xml.HandballModelReader |
57_hft-bomberman | client.network.ForwardingObserver |
57_hft-bomberman | server.ServerGameModel |
58_fps370 | fps370.Fps370Panel |
58_fps370 | teder.TederFrame |
59_mygrid | mygrid.web._Fail |
59_mygrid | mygrid.web._AvailableJobsResponse |
60_sugar | net.sf.sugar.fspath.FSPathResult |
60_sugar | net.sf.sugar.fspath.cli.FSPathExplorer |
61_noen | fi.vtt.noen.testgen.observations.formatter.DaikonFormatter |
61_noen | fi.vtt.noen.mfw.bundle.probe.shared.ProbeInformation |
63_objectexplorer | de.paragon.explorer.event.ExplorerFrameEventConverter |
63_objectexplorer | de.paragon.explorer.model.AttributeModelComparator |
64_jtailgui | fr.pingtimeout.jtail.gui.action.IndexFileAction |
64_jtailgui | fr.pingtimeout.jtail.gui.view.JTailPanel |
65_gsftp | com.gotoservers.ftp.FtpApplet |
65_gsftp | mindbright.ssh.SSHSCPGUIThread |
66_openjms | org.exolab.jms.net.connector.DefaultConnectionPool |
66_openjms | org.exolab.jms.net.socket.SocketRequestInfo |
68_biblestudy | bible.obj.Verse |
68_biblestudy | bible.util.Queue |
69_lhamacaw | macaw.util.DisplayableListPanel |
69_lhamacaw | macaw.presentationLayer.MacawWorkBench |
7_sfmis | com.hf.sfm.crypt.Base64 |
71_ext4j | net.sourceforge.ext4j.log.log4j.ExtrasPatternParser |
71_ext4j | net.sourceforge.ext4j.taglib.bo.Request |
72_battlecry | bcry.bcGenerator |
72_battlecry | bcry.battlecryGUI |
73_fim1 | osa.ora.server.admin.ui.UpdateUserPanel |
73_fim1 | osa.ora.server.client.ui.utils.FontChooserDialog |
74_fixsuite | org.fixsuite.message.Library |
74_fixsuite | org.fixsuite.message.view.TreeView |
75_openhre | com.browsersoft.aacs.User |
75_openhre | com.browsersoft.openhre.hl7.impl.regular.ExpressionImpl |
77_io-project | ioproject.server.network.ClientGroup |
78_caloriecount | com.lts.event.SimpleKeyListenerHelper |
78_caloriecount | com.lts.swing.combobox.SimpleComboBox |
78_caloriecount | com.lts.io.DirectoryScanner |
79_twfbplayer | de.outstare.fortbattleplayer.statistics.BattleStatistics |
79_twfbplayer | de.outstare.fortbattleplayer.model.impl.SimpleSector |
8_gfarcegestionfa | fr.unice.gfarce.dao.OracleIdentiteDao |
8_gfarcegestionfa | fr.unice.gfarce.interGraph.ModifTableStockage |
80_wheelwebtool | wheel.util.DynamicSelectModel |
80_wheelwebtool | wheel.asm.FieldWriter |
80_wheelwebtool | wheel.asm.ClassReader |
80_wheelwebtool | wheel.asm.ClassWriter |
81_javathena | org.javathena.login.parse.FromClient |
81_javathena | org.javathena.login.UserManagement |
81_javathena | org.javathena.login.Login |
81_javathena | org.javathena.utiles.ConfigurationManagement |
82_ipcalculator | ipac.BinaryCalculate |
82_ipcalculator | ipac.WhoIS |
83_xbus | net.sf.xbus.base.core.MessageHandler |
83_xbus | net.sf.xbus.base.core.reflection.XBUSClassLoader |
84_ifx-framework | org.sourceforge.ifx.basetypes.IFXObject |
85_shop | umd.cs.shop.JSState |
85_shop | umd.cs.shop.JSPredicateForm |
85_shop | umd.cs.shop.JSTerm |
85_shop | umd.cs.shop.JSJshop |
86_at-robots2-j | net.virtualinfinity.atrobots.gui.renderers.RobotRenderer |
86_at-robots2-j | net.virtualinfinity.atrobots.robot.Robot |
87_jaw-br | jaw.entrada.Salvar |
87_jaw-br | jaw.entrada.Abrir |
88_jopenchart | de.progra.charting.DefaultChart |
88_jopenchart | de.progra.charting.CoordSystemUtilities |
89_jiggler | jigl.image.ops.levelOps.Clip |
89_jiggler | jigl.image.ops.Shift |
89_jiggler | jigl.image.ops.ConnectedComponents |
89_jiggler | jigl.image.levelSetTool.LevelSetNudge |
90_dcparseargs | de.devcity.parseargs.ArgsParser |
91_classviewer | com.jstevh.viewer.ClassViewer |
91_classviewer | com.jstevh.viewer.SAXDirParser |
91_classviewer | com.jstevh.viewer.ClassInfo |
92_jcvi-javacommon | org.jcvi.jillion.assembly.consed.phd.DefaultPhdReadTag |
92_jcvi-javacommon | org.jcvi.jillion.assembly.ca.frg.Distance |
93_quickserver | org.quickserver.net.server.impl.BlockingClientHandler |
93_quickserver | org.quickserver.net.server.impl.NonBlockingClientHandler |
93_quickserver | org.quickserver.util.xmlreader.QuickServerConfig |
93_quickserver | org.quickserver.net.client.monitoring.HostMonitoringService |
94_jclo | edu.mscd.cs.jclo.JCLO |
95_celwars2009 | MP3 |
95_celwars2009 | Client |
96_heal | org.heal.util.InterfaceUtilitiesBean |
96_heal | org.heal.module.search.AdvSearchDAO |
97_feudalismgame | src.VassalRebellion |
97_feudalismgame | src.Purchase |
97_feudalismgame | src.Battle |
98_trans-locator | Joshua.FoxHunt.FoxHuntFrame |
98_trans-locator | Joshua.FoxHunt.HuntDisplay |
99_newzgrabber | Newzgrabber.BatchDriver |
99_newzgrabber | Newzgrabber.Newzgrabber |
99_newzgrabber | Newzgrabber.Downloader |
checkstyle | com.puppycrawl.tools.checkstyle.api.AbstractLoader |
checkstyle | com.puppycrawl.tools.checkstyle.api.AutomaticBean |
checkstyle | com.puppycrawl.tools.checkstyle.api.FileContents |
checkstyle | com.puppycrawl.tools.checkstyle.api.FileText |
checkstyle | com.puppycrawl.tools.checkstyle.utils.AnnotationUtility |
checkstyle | com.puppycrawl.tools.checkstyle.utils.ScopeUtils |
commons-cli | org.apache.commons.cli.HelpFormatter |
commons-cli | org.apache.commons.cli.Option |
commons-codec | org.apache.commons.codec.language.DoubleMetaphone |
commons-collections | org.apache.commons.collections.primitives.ArrayByteList |
commons-collections | org.apache.commons.collections4.list.TreeList |
commons-collections | org.apache.commons.collections4.sequence.SequencesComparator |
commons-lang | org.apache.commons.lang3.text.translate.NumericEntityUnescaper |
commons-lang | org.apache.commons.lang3.ClassUtils |
commons-lang | org.apache.commons.lang3.ArrayUtils |
commons-lang | org.apache.commons.lang3.text.ExtendedMessageFormat |
commons-lang | org.apache.commons.lang3.text.StrBuilder |
commons-lang | org.apache.commons.lang3.time.FastDateFormat |
commons-lang | org.apache.commons.lang3.LocaleUtils |
commons-lang | org.apache.commons.lang3.time.DurationFormatUtils |
commons-lang | org.apache.commons.lang3.time.DateUtils |
commons-lang | org.apache.commons.lang3.BooleanUtils |
commons-lang | org.apache.commons.lang3.builder.CompareToBuilder |
commons-lang | org.apache.commons.lang3.Validate |
commons-lang | org.apache.commons.lang3.Conversion |
commons-lang | org.apache.commons.lang3.builder.HashCodeBuilder |
commons-math | org.apache.commons.math3.fraction.ProperFractionFormat |
commons-math | org.apache.commons.math3.optimization.direct.CMAESOptimizer |
commons-math | org.apache.commons.math3.distribution.HypergeometricDistribution |
commons-math | org.apache.commons.math3.linear.RectangularCholeskyDecomposition |
commons-math | org.apache.commons.math3.ode.nonstiff.EmbeddedRungeKuttaIntegrator |
commons-math | org.apache.commons.math3.ode.AbstractIntegrator |
commons-math | org.apache.commons.math3.geometry.euclidean.threed.Rotation |
commons-math | org.apache.commons.math3.util.MultidimensionalCounter |
commons-math | org.apache.commons.math3.optimization.general.LevenbergMarquardtOptimizer |
commons-math | org.apache.commons.math3.optimization.linear.SimplexTableau |
commons-math | org.apache.commons.math3.fraction.Fraction |
commons-math | org.apache.commons.math3.util.MathUtils |
commons-math | org.apache.commons.math3.analysis.interpolation.TricubicSplineInterpolatingFunction |
commons-math | org.apache.commons.math3.optim.nonlinear.scalar.noderiv.AbstractSimplex |
commons-math | org.apache.commons.math3.linear.MatrixUtils |
commons-math | org.apache.commons.math3.geometry.euclidean.oned.IntervalsSet |
commons-math | org.apache.commons.math3.dfp.DfpDec |
commons-math | org.apache.commons.math3.distribution.fitting.MultivariateNormalMixtureExpectationMaximization |
commons-math | org.apache.commons.math3.analysis.FunctionUtils |
commons-math | org.apache.commons.math3.optim.univariate.BrentOptimizer |
commons-math | org.apache.commons.math3.linear.SchurTransformer |
compiler | com.google.javascript.jscomp.CheckGlobalThis |
compiler | com.google.javascript.jscomp.ExploitAssigns |
compiler | com.google.javascript.jscomp.CollapseProperties |
compiler | com.google.javascript.jscomp.PeepholeSubstituteAlternateSyntax |
compiler | com.google.javascript.jscomp.ControlFlowAnalysis |
compiler | com.google.javascript.jscomp.ScopedAliases |
compiler | com.google.javascript.rhino.jstype.RecordType |
compiler | com.google.javascript.jscomp.parsing.JsDocInfoParser |
compiler | com.google.javascript.jscomp.ReferenceCollectingCallback |
guava | com.google.common.math.BigIntegerMath |
guava | com.google.common.cache.CacheBuilderSpec |
guava | com.google.common.util.concurrent.Monitor |
guava | com.google.common.base.Joiner |
guava | com.google.common.base.Predicates |
guava | com.google.common.base.SmallCharMatcher |
guava | com.google.common.base.Splitter |
guava | com.google.common.base.Suppliers |
guava | com.google.common.base.Utf8 |
guava | com.google.common.base.Objects |
guava | com.google.common.base.CharMatcher |
hibernate | org.hibernate.search.util.logging.impl.LoggerFactory |
javaml | net.sf.javaml.core.AbstractInstance |
javaml | net.sf.javaml.core.Complex |
javaml | net.sf.javaml.core.DefaultDataset |
javaml | net.sf.javaml.core.DenseInstance |
javaml | net.sf.javaml.core.Fold |
javaml | net.sf.javaml.core.SparseInstance |
javaml | net.sf.javaml.tools.data.ARFFHandler |
javex | org.javex.Expression |
jdom | org.jdom2.util.NamespaceStack |
jdom | org.jdom2.transform.JDOMResult |
jdom | org.jdom2.output.SAXOutputter |
jdom | org.jdom2.output.XMLOutputter |
jdom | org.jdom2.Verifier |
jfree-chart | org.jfree.chart.renderer.category.AbstractCategoryItemRenderer |
jfree-chart | org.jfree.data.category.DefaultIntervalCategoryDataset |
jfree-chart | org.jfree.chart.plot.MultiplePiePlot |
jfree-chart | org.jfree.data.time.TimeSeries |
jfree-chart | org.jfree.data.general.DatasetUtilities |
jfree-chart | org.jfree.chart.plot.ValueMarker |
jfree-chart | org.jfree.chart.renderer.category.MinMaxCategoryRenderer |
jfree-chart | org.jfree.chart.renderer.GrayPaintScale |
jfree-chart | org.jfree.chart.renderer.category.StatisticalBarRenderer |
jfree-chart | org.jfree.chart.axis.Axis |
jfree-chart | org.jfree.chart.plot.XYPlot |
jfree-chart | org.jfree.data.time.TimePeriodValues |
joda | org.joda.time.base.BaseSingleFieldPeriod |
joda | org.joda.time.tz.ZoneInfoCompiler |
joda | org.joda.time.format.PeriodFormatterBuilder |
joda | org.joda.time.format.DateTimeFormatterBuilder |
joda | org.joda.time.DateTimeZone |
joda | org.joda.time.MutableDateTime |
joda | org.joda.time.Partial |
joda | org.joda.time.Period |
joda | org.joda.time.format.DateTimeFormatter |
joda | org.joda.time.base.BasePeriod |
joda | org.joda.time.chrono.BasicMonthOfYearDateTimeField |
joda | org.joda.time.chrono.LimitChronology |
joda | org.joda.time.MutablePeriod |
jsci | JSci.maths.symbolic.SimpleCharStream |
jsci | JSci.maths.symbolic.ExpressionParser |
jsci | JSci.maths.SpecialMath |
jsci | JSci.maths.LinearMath |
scribe | org.scribe.model.OAuthConfig |
scribe | org.scribe.model.OAuthRequest |
scribe | org.scribe.model.Request |
scribe | org.scribe.model.Response |
scribe | org.scribe.model.Token |
scribe | org.scribe.model.Verifier |
tartarus | org.tartarus.snowball.ext.turkishStemmer |
tartarus | org.tartarus.snowball.ext.italianStemmer |
tartarus | org.tartarus.snowball.ext.englishStemmer |
trove | gnu.trove.decorator.TDoubleShortMapDecorator |
trove | gnu.trove.decorator.TShortByteMapDecorator |
trove | gnu.trove.impl.hash.TCharHash |
trove | gnu.trove.impl.hash.TFloatCharHash |
trove | gnu.trove.impl.hash.TFloatDoubleHash |
trove | gnu.trove.impl.hash.TShortHash |
trove | gnu.trove.list.linked.TDoubleLinkedList |
trove | gnu.trove.map.hash.TFloatObjectHashMap |
trove | gnu.trove.map.hash.TByteObjectHashMap |
trove | gnu.trove.map.hash.TByteFloatHashMap |
twitter4j | twitter4j.ExceptionDiagnosis |
twitter4j | twitter4j.GeoQuery |
twitter4j | twitter4j.Paging |
twitter4j | twitter4j.TwitterException |
twitter4j | twitter4j.TwitterBaseImpl |
twitter4j | twitter4j.OEmbedRequest |
twitter4j | twitter4j.TwitterImpl |
wikipedia | de.tudarmstadt.ukp.wikipedia.api.Title |
wikipedia | de.tudarmstadt.ukp.wikipedia.api.CategoryDescendantsIterator |
wikipedia | de.tudarmstadt.ukp.wikipedia.api.WikipediaInfo |
wikipedia | de.tudarmstadt.ukp.wikipedia.api.CycleHandler |
xmlenc | org.znerd.xmlenc.XMLChecker |
xmlenc | org.znerd.xmlenc.XMLEncoder |
- José Campos, Yan Ge, Nasser Albunian, Gordon Fraser, Marcelo Eler, and Andrea Arcuri. "An Empirical Evaluation of Evolutionary Algorithms for Unit Test Suite Generation". In: Information and Software Technology (2018), pp. 207–235. issn: 0950-5849. doi: 10.1016/j.infsof.2018.08.010. url: https://doi.org/10.1016/j.infsof.2018.08.010.
- José Campos, Yan Ge, Gordon Fraser, Marcelo Eler, and Andrea Arcuri. "An Empirical Evaluation of Evolutionary Algorithms for Test Suite Generation". In: Search-Based Software Engineering (SSBSE). Ed. by Tim Menzies and Justyna Petke. Cham: Springer International Publishing, 2017, pp. 33–48. isbn: 978-3-319-66299-2. doi: 10.1007/978-3-319-66299-2_3. url: https://doi.org/10.1007/978-3-319-66299-2_3.
- Annibale Panichella, Fitsum Meshesha Kifetew, Paolo Tonella. "Automated Test Case Generation as a Many-Objective Optimisation Problem with Dynamic Selection of the Targets". IEEE Transactions on Software Engineering (2017). doi: 10.1109/TSE.2017.2663435. url: https://doi.org/10.1109/TSE.2017.2663435.