Coder Social home page Coder Social logo

smallsuitegenerator's People

Contributors

andreina-covi avatar bergel avatar daniapq avatar jpsandoval avatar lin777 avatar neddykg avatar objectsemantics avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

smallsuitegenerator's Issues

There is a faster implementation to isAbstract and isReturnFiel

CompiledMethod>>isAbstract
^ self isShort and:[ self messages anySatisfy:[:m | m = #subclassResponsibility]].

CompiledMethod>>isReturnField
|c a b|
self isShort ifFalse:[ ^ false].
a := false.
b := false.
c := 0.
self withAllBlockMethodsDo:[ :meth |
|scanner |
scanner := InstructionStream on: meth.
scanner scanFor: [ :byte |
c isZero
ifTrue:[ a:= scanner isLoadInst.].
c =1 ifTrue:[ b:= scanner willReturn].
c := c+1.
false.
].
].
^ (c = 2 and:[ a]) and:[ b].

InstructionStream>>isLoadInst
| byte |
byte := self baseBytecodeAt: self pc.
^ byte between: OpLoadInst and: (OpLoadInst+MaxLoadInst)

Typing error...

Here is another error:

smallSuiteGenerator := SSmallSuiteGenerator newInstance.
smallSuiteGenerator seed: [RTRoassalExample new exampleAligningGroups ];
            profilingOnClass: RTView;
            fitness: (SMultiFitnessFunction 
        with: SMethodCoverage; 
        with: SStatementCoverage).
smallSuiteGenerator classNameOfTest: 'DemoRoassalTest'.
smallSuiteGenerator run.

The error I get is that nil is passed to RTView>>add:. This is weird because the following code

(SSGenerator
                profile: [RTRoassalExample new exampleAligningGroups ]
                onClass: RTView) asTypeInfo.

does not report nil as a possible value.

JoinWithMutalk

Integration of SmallSuiteTestCase with project Mutalk

Package Filtering

Cree un nuevo paquete llamado Demo, y puse un test dentro. El mismo no aparecía en la lista de paquetes. Luego pense que era pq mi paquete no tenia la palabra test, lo renombre a Demo-Test ... y tampoco aparecio. Luego renombre a Demo-Tests y recien aparecicio.

Los paquetes no necesariamente tienen que tener el keyword Tests, deber inspecionar las clases del paquete y ver si existe alguna que herede de TestCase, (directa o indirectamente isKindOf)... seguro hay mas test en la imagen y no los estamos viendo

Equality should be parametrized...

I have generated the test code given below. It does some self assert: _var1 initializeContent equals: RTView new.

I think that there is no trivial solution to this. We should not generate such assertions.

test4
| _var0 _var1 _var2 _var3 _var4 _var5 _var6 _var7 _var8 _var9 _var10 _var11 _var12 _var13 _var14 _var15 _var16 _var17 _var18 _var19 _var20 _var21 _var22 _var23 _var24 _var25 _var26 _var27 _var28 _var29 _var30 _var31 |
_var0 := RTElement new.
_var1 := RTView new.
_var2 := RTEdge new.
_var3 := RTElement new.
_var4 := RTEdge new.
_var5 := _var1 add: _var4.
_var6 := TRCanvas new.
_var7 := _var1 initializeContent.
_var8 := RTGroup new.
_var9 := _var1 addAll: _var8.
_var10 := RTEdge new.
_var11 := TRCanvas new.
_var12 := RTElement new.
_var13 := RTView new.
_var14 := _var1 initialize.
_var15 := RTView new.
_var16 := RTGroup new.
_var17 := _var1 addAll: _var8.
_var18 := _var1 addElement: _var12.
_var19 := _var1 add: _var4.
_var20 := TRCanvas new.
_var21 := _var1 addElement: _var3.
_var22 := RTElement new.
_var23 := TRCanvas new.
_var24 := _var1 initializeContent.
_var25 := _var1 addElement: _var0.
_var26 := _var1 setCanvas: _var11.
_var27 := _var5 initialize.
_var28 := _var1 addElement: _var12.
_var29 := RTView new.
_var30 := RTView new.
_var31 := RTElement new.
self assert: _var0 className equals: 'RTElement'.
self assert: _var1 className equals: 'RTView'.
self assert: _var1 initializeContent equals: RTView new.
self assert: _var2 className equals: 'RTEdge'.
self assert: _var3 className equals: 'RTElement'.
self assert: _var4 className equals: 'RTEdge'.
self assert: _var5 className equals: 'RTView'.
self assert: _var5 initializeContent equals: RTView new.
self assert: _var6 className equals: 'TRCanvas'.
self assert: _var7 className equals: 'RTView'.
self assert: _var7 initializeContent equals: RTView new.
self assert: _var8 isEmpty.
self assert: _var8 equals: RTGroup new.
self assert: _var8 asString equals: 'a RTGroup()'.
self assert: _var9 className equals: 'RTView'.
self assert: _var9 initializeContent equals: RTView new.
self assert: _var10 className equals: 'RTEdge'.
self assert: _var11 className equals: 'TRCanvas'.
self assert: _var12 className equals: 'RTElement'.
self assert: _var13 className equals: 'RTView'.
self assert: _var13 initializeContent equals: RTView new.
self assert: _var14 className equals: 'RTView'.
self assert: _var14 initializeContent equals: RTView new.
self assert: _var15 className equals: 'RTView'.
self assert: _var15 initializeContent equals: RTView new.
self assert: _var16 isEmpty.
self assert: _var16 equals: RTGroup new.
self assert: _var16 asString equals: 'a RTGroup()'.
self assert: _var17 className equals: 'RTView'.
self assert: _var17 initializeContent equals: RTView new.
self assert: _var18 className equals: 'RTView'.
self assert: _var18 initializeContent equals: RTView new.
self assert: _var19 className equals: 'RTView'.
self assert: _var19 initializeContent equals: RTView new.
self assert: _var20 className equals: 'TRCanvas'.
self assert: _var21 className equals: 'RTView'.
self assert: _var21 initializeContent equals: RTView new.
self assert: _var22 className equals: 'RTElement'.
self assert: _var23 className equals: 'TRCanvas'.
self assert: _var24 className equals: 'RTView'.
self assert: _var24 initializeContent equals: RTView new.
self assert: _var25 className equals: 'RTView'.
self assert: _var25 initializeContent equals: RTView new.
self assert: _var26 className equals: 'RTView'.
self assert: _var26 initializeContent equals: RTView new.
self assert: _var27 className equals: 'RTView'.
self assert: _var27 initializeContent equals: RTView new.
self assert: _var28 className equals: 'RTView'.
self assert: _var28 initializeContent equals: RTView new.
self assert: _var29 className equals: 'RTView'.
self assert: _var29 initializeContent equals: RTView new.
self assert: _var30 className equals: 'RTView'.
self assert: _var30 initializeContent equals: RTView new.
self assert: _var31 className equals: 'RTElement'

Weird result

I tried the following:

smallSuiteGenerator := SSmallSuiteGenerator newInstance.
smallSuiteGenerator seed: [RTRoassalExample new exampleAligningGroups].
smallSuiteGenerator fitness: (SMultiFitnessFunction 
		with: SMethodCoverage; 
		with: SStatementCoverage).
		
smallSuiteGenerator profilingOnClass: RTView. 
smallSuiteGenerator classNameOfTest: 'GeneratedRTViewTest'.
smallSuiteGenerator run.

It indeed produces the class GeneratedRTViewTest with some test methods.
All the test methods are green, which is very good.

I wanted to know about the fitness evolution, so I tried:

smallSuiteGenerator engine logs collect: #fitness

But this gives me:
image
Which means that the fitness is not increasing.

I wanted to see what's going on, so I run Hapao on it.
I put the generated class in a new package called TTTTT and run hapao on Roassal-Core and the new package TTTTT.

I obtain the following:
image

The method addAll: is not covered by Hapao. This means that the generated test does not call it (I did not verify this). But the code in exampleAligningGroups actually do call addAll:. Something is very weird here. I would guess that addAll: should be called by the generated tests

Meaningful variable names

Check if we can give more meaningful names to variables. Instead of having _varX, give _aLabelX if the variable points to a RTLabel for example...

should work on Pharo 8

Currently it seems to only work on Pharo 7. When loaded in Pharo 8, the class SSTypeCollector does not exist

factoryMessage addition error

Classes that have implemented methods in class side and these are not factoty methods, they are created as factoryMessages, e.g:
SFoo score.
If the message 'score' just returns a number it can be added in testCase, as follows:
_var0 := SmallInteger score.
Because the return type of this expression is added

Descriptive comments are very important

Each generated should should have a descriptive comment. For example, also como:

test3
	"
	Fitness = ZZ
	This test covers XX % of the class YY 
	"
	| _var0 _var1 _var2 _var3 _var4 _var5 _var6 _var7 _var8 _var9 _var10 _var11 _var12 _var13 _var14 _var15 _var16 _var17 _var18 _var19 _var20 _var21 _var22 _var23 _var24 _var25 _var26 |
_var0 := RTElement new.
...

Structural equality

We should be able to do some structural equality, if the message = is not defined.

Validation of Exception class management

It's necessary add tests for Exception classes which manage different kind of exceptions in tests generation.
For example the case for SMessageNotUnderstood would be:

| testCase aException |
	testCase := SSTestCase
		with: utility typeInfosOnPackageExamplesOthers first.
	testCase addMessage: #canRegister: from: #SEvent.
	SStatementCoverage
		coverageOf: [ | aConference aPerson |
			aConference := SConference new offerPrice: 95.
			aPerson := SStudent new name: 'Mary'.
			aConference canRegister: aPerson ]
		onPackagesMatching: 'SmallSuiteGenerator-Examples-Others'.
	self
		assertCollection: (testCase statements collect: #printString)
		hasSameElements:
			(Array
				with: '_var0 := SEvent new.'
				with: '_var1 := ' , (SStudent new name: 'Mary') storeString , '.'
				with: '_var2 := _var0 canRegister: _var1.').
	SStatementCoverage compileTestCase: testCase.
	self
		should: [ SStatementCoverage executeStatements ]
		raise: MessageNotUnderstood.
	[ SStatementCoverage executeStatements ]
		on: Exception
		do: [ :exception | aException := exception ].
	self assert: (SMessageNotUnderstood canResolve: aException)

If the found patterns were considered in the test generation maybe it wouldn't be necessary

Should have a unique random number generation

We should be able to provide a random number generator to STestCaseFactory. Algo como STestCaseFactory new random: (Random seed: 42).

In that case, if we execute twice the same test generation, we should obtain the very very same generated tests.

Decompiled Variables

Some variables in visual works have generic names generated by the compiler ... we should have readable variable..

Fix bug when is added a methodClass with args

If the methodClass doesn't have its typeInfo, an statement with the selector of this methodClass is created and if it has argTypes, they aren't created and the statement is created without args. E.g:
If it's added:
_var0 := RTCircleGeometry new.
and it has problems, it is necessary change its selector by another and in this case the other option is: center:radius:, but like this does not have its typeInfo, it's added:
_var0 := RTCircleGeometry center:radius:
instead

Profile Info

367 samples, 530.6 average ms/sample, 3051 scavenges, 12 incGCs,
4.46s active, 190.22s other processes,
194.73s real time, 0.06s profiling overhead

** Tree **
100.0 BlockClosure [] in VWTestRunner.TestRunner>>profileTests
100.0 VWTestRunner.TestRunner>>runTests
99.5 BlockClosure>>ensure:
99.5 [] in VWTestRunner.TestRunner>>runTests
99.5 BlockClosure>>ifCurtailed:
99.5 [] in [] in VWTestRunner.TestRunner>>runTests
99.5 SUnit.TestSuite>>run
99.5 SUnit.TestSuite>>runTests
99.5 SUnit.TestSuite>>runUsing:
99.5 SUnit.Results class>>collectWhile:
99.5 SUnit.Results>>collectWhile:
99.5 BlockClosure>>ensure:
99.5 [] in SUnit.TestSuite>>runUsing:
99.5 Dictionary>>keysAndValuesDo:
99.5 [] in [] in SUnit.TestSuite>>runUsing:
99.5 Object>>ifNotNil:
99.5 [] in [] in [] in SUnit.TestSuite>>runUsing:
99.5 BlockClosure>>ensure:
99.5 [] in [] in [] in [] in SUnit.TestSuite>>runUsing:
99.5 SUnit.TestSuite>>testCasesFrom:do:
99.5 SUnit.TestSuite>>testCasesFrom:randomDo:
99.5 SequenceableCollection>>do:
99.5 [] in SUnit.TestSuite>>testCasesFrom:randomDo:
99.5 [] in SUnit.TestSuite>>runTests
99.5 SUnit.TestCase>>run
99.5 BlockClosure>>on:do:
99.5 [] in SUnit.TestCase>>run
99.5 SUnit.TestCase>>doTestCycle
99.5 BlockClosure>>ensure:
99.5 [] in SUnit.TestCase>>doTestCycle
99.5 SUnit.TestCase>>performTest
99.5 PTests>>test1
99.5 SmallSuiteGenerator.SConfigGenerationTestCase class>>generateTests
99.3 SmallSuiteGenerator.STestCaseFactory>>createTestCases
58.2 SmallSuiteGenerator.STestCaseFactory>>tearDown
58.2 SmallSuiteGenerator.STestCaseFactory>>exportTests
55.2 SequenceableCollection>>doWithIndex:
55.2 [] in SmallSuiteGenerator.STestCaseFactory>>exportTests
37.0 SmallSuiteGenerator.STestCaseFactory>>unboundMethodwith:with:
23.8 BlockClosure>>on:do:
23.8 [] in SmallSuiteGenerator.STestCaseFactory>>unboundMethodwith:with:
22.6 SmallSuiteGenerator.SSTestShifter>>generateAssertions
22.6 SmallSuiteGenerator.SSTestShifter>>generateAssertions:
22.2 SequenceableCollection>>flatCollect:
22.2 SequenceableCollection>>do:
22.2 [] in SequenceableCollection>>flatCollect:
22.2 [] in SmallSuiteGenerator.SSTestShifter>>generateAssertions:
22.2 SmallSuiteGenerator.SInspectorAssertion class>>for:
22.2 SequenceableCollection>>flatCollect:
22.2 SequenceableCollection>>do:
22.2 [] in SequenceableCollection>>flatCollect:
22.2 [] in SmallSuiteGenerator.SInspectorAssertion class>>for:
22.2 SmallSuiteGenerator.SInspectorAssertion class>>inspectorAssertionOf:
22.2 OrderedCollection>>select:
22.2 OrderedCollection>>do:
22.2 [] in OrderedCollection>>select:
21.8 Symbol>>value:
21.8 CompiledMethod>>isReturnField
17.5 CompiledMethod>>getSource
17.5 CompiledMethod>>methodSources
17.5 SourceFileManager>>methodSourceAt:ifAbsent:
17.5 SourceFileManager>>retrieveMethodSourceAt:using:ifAbsent:
12.3 BlockClosure>>on:do:
11.7 [] in SourceFileManager>>retrieveMethodSourceAt:using:ifAbsent:
11.7 XMLSourceFileFormat>>methodSourceAt:in:
11.7 BlockClosure>>on:do:
11.7 [] in XMLSourceFileFormat>>methodSourceAt:in:
11.4 XML.XMLParser>>parseElement:
8.2 XML.XMLParser>>on:
8.2 XML.XMLParser>>wrapDataSource:
13.2 SmallSuiteGenerator.STestCaseFactory>>getClassOf:
13.2 UndefinedObject>>ifNil:
13.2 [] in SmallSuiteGenerator.STestCaseFactory>>getClassOf:
13.2 SmallSuiteGenerator.SPlatform class>>createTestCaseClass:inPackage:
13.2 SmallSuiteGenerator.SPlatformVisualWorks class>>createTestCaseClass:inPackage:
13.0 ClassBuilder>>reviseSystem
13.0 ClassBuilder>>reviseSystemSilently
13.0 SystemUtils class>>modifySystem:
13.0 BlockClosure>>ensure:
13.0 BlockClosure>>valueAsUnwindBlockFrom:
13.0 [] in SystemUtils class>>modifySystem:
13.0 SystemUtils class>>linkSystem
13.0 SequenceableCollection>>do:
8.5 [] in SystemUtils class>>linkSystem
18.1 SmallSuiteGenerator.STestCaseFactory>>export:with:
12.5 BlockClosure>>on:do:
12.5 [] in SmallSuiteGenerator.STestCaseFactory>>export:with:
11.2 SmallSuiteGenerator.SSTestShifter>>generateAssertions
11.2 SmallSuiteGenerator.SSTestShifter>>generateAssertions:
11.1 SequenceableCollection>>flatCollect:
11.1 SequenceableCollection>>do:
11.1 [] in SequenceableCollection>>flatCollect:
11.1 [] in SmallSuiteGenerator.SSTestShifter>>generateAssertions:
11.1 SmallSuiteGenerator.SInspectorAssertion class>>for:
11.1 SequenceableCollection>>flatCollect:
11.1 SequenceableCollection>>do:
11.1 [] in SequenceableCollection>>flatCollect:
11.1 [] in SmallSuiteGenerator.SInspectorAssertion class>>for:
11.1 SmallSuiteGenerator.SInspectorAssertion class>>inspectorAssertionOf:
11.1 OrderedCollection>>select:
11.1 OrderedCollection>>do:
11.1 [] in OrderedCollection>>select:
11.1 Symbol>>value:
11.1 CompiledMethod>>isReturnField
9.8 CompiledMethod>>getSource
9.8 CompiledMethod>>methodSources
9.8 SourceFileManager>>methodSourceAt:ifAbsent:
9.8 SourceFileManager>>retrieveMethodSourceAt:using:ifAbsent:
5.7 BlockClosure>>on:do:
5.7 [] in SourceFileManager>>retrieveMethodSourceAt:using:ifAbsent:
5.7 XMLSourceFileFormat>>methodSourceAt:in:
5.7 BlockClosure>>on:do:
5.7 [] in XMLSourceFileFormat>>methodSourceAt:in:
5.7 SmallSuiteGenerator.STestCaseFactory>>getClassOf:
5.7 UndefinedObject>>ifNil:
5.7 [] in SmallSuiteGenerator.STestCaseFactory>>getClassOf:
5.7 SmallSuiteGenerator.SPlatform class>>createTestCaseClass:inPackage:
5.7 SmallSuiteGenerator.SPlatformVisualWorks class>>createTestCaseClass:inPackage:
5.7 ClassBuilder>>reviseSystem
5.7 ClassBuilder>>reviseSystemSilently
5.7 SystemUtils class>>modifySystem:
5.7 BlockClosure>>ensure:
5.7 BlockClosure>>valueAsUnwindBlockFrom:
5.7 [] in SystemUtils class>>modifySystem:
5.7 SystemUtils class>>linkSystem
5.7 SequenceableCollection>>do:
34.1 SmallSuiteGenerator.STestCaseFactory>>run
34.1 SmallSuiteGenerator.SGAEngine>>run
23.1 Collection>>do:displayingProgress:
23.1 Interval>>do:
23.1 [] in SmallSuiteGenerator.SGAEngine>>run
16.0 SmallSuiteGenerator.SGAEngine>>doSelection
16.0 SmallSuiteGenerator.SGAEngine>>createNewPopulation
10.0 SmallSuiteGenerator.SSimpleFitnessFunction>>compute:
10.0 SmallSuiteGenerator.SSimpleFitnessFunction>>run:
10.0 SequenceableCollection>>do:
10.0 [] in SmallSuiteGenerator.SSimpleFitnessFunction>>run:
10.0 SmallSuiteGenerator.SSTestCase>>runWithoutAssertions
10.0 SmallSuiteGenerator.SSTestRunner>>runWithoutAssertions:
10.0 SmallSuiteGenerator.SSTestRunner>>compile:
10.0 ClassDescription>>compile:
10.0 ClassDescription>>compile:classified:
10.0 ClassDescription>>compile:classified:notifying:
10.0 ClassDescription>>compile:classified:notifying:attributes:
5.3 ClassDescription>>compile:notifying:attributes:selectorBlock:ifFail:
5.7 SmallSuiteGenerator.SGAEngine>>updateTypeInfoWith:
5.7 OrderedCollection>>do:
5.7 [] in SmallSuiteGenerator.SGAEngine>>updateTypeInfoWith:
5.7 SmallSuiteGenerator.SSTestCase>>runWithoutAssertions
5.7 SmallSuiteGenerator.SSTestRunner>>runWithoutAssertions:
5.7 SmallSuiteGenerator.SSTestRunner>>compile:
5.7 ClassDescription>>compile:
5.7 ClassDescription>>compile:classified:
5.7 ClassDescription>>compile:classified:notifying:
5.7 ClassDescription>>compile:classified:notifying:attributes:
7.1 SmallSuiteGenerator.SGALog class>>logOf:inGeneration:inTime:
7.1 SmallSuiteGenerator.SSimpleFitnessFunction>>runPopulation:
7.1 OrderedCollection>>do:
7.1 [] in SmallSuiteGenerator.SSimpleFitnessFunction>>runPopulation:
7.1 SmallSuiteGenerator.SSTestCase>>runWithoutAssertions
7.1 SmallSuiteGenerator.SSTestRunner>>runWithoutAssertions:
7.1 SmallSuiteGenerator.SSTestRunner>>compile:
7.1 ClassDescription>>compile:
7.1 ClassDescription>>compile:classified:
7.1 ClassDescription>>compile:classified:notifying:
7.1 ClassDescription>>compile:classified:notifying:attributes:
11.0 SmallSuiteGenerator.SGAEngine>>initializePopulation
6.2 SmallSuiteGenerator.SGAEngine>>createRandomPopulation
6.2 Interval>>collect:
6.2 Interval>>do:
6.2 [] in Interval>>collect:
6.2 [] in SmallSuiteGenerator.SGAEngine>>createRandomPopulation
7.0 SmallSuiteGenerator.STestCaseFactory>>setUp
7.0 SmallSuiteGenerator.SGAEngine>>typeInfo:
7.0 SmallSuiteGenerator.STypeInfo>>completeTypeInfo
7.0 Dictionary>>keysDo:
7.0 Dictionary>>keysAndValuesDo:
7.0 [] in Dictionary>>keysDo:
7.0 [] in SmallSuiteGenerator.STypeInfo>>completeTypeInfo

** Totals **
13.0 PCFilename class>>getFileSystemAttributes:
11.6 PCDiskFileAccessor>>TimeProfilerCore_commit
6.3 SequenceableCollection>>do:
5.8 ScreenGraphicsContext>>primDisplayMappedString:from:to:at:withMap:


Error when using...

The following code does not make progress. When I interrupt it, it seems that many TRMorph are created.

smallSuiteGenerator := SSmallSuiteGenerator newInstance.
smallSuiteGenerator seed: [RTRoassalExample new exampleAligningGroups open delete];
            profilingOnClass: RTView;
            fitness: (SMultiFitnessFunction 
        with: SMethodCoverage; 
        with: SStatementCoverage).
smallSuiteGenerator classNameOfTest: 'DemoRoassalTest'.
smallSuiteGenerator run.

One way to fix this, is to have an expression that is evaluated after each fitness evaluation. Something like: TRMorph allInstances do: #delete

Installer

First time that I use the installer it throws and error. I executed again, and then work!... but this messages appear in the console
tally is Undeclared
SMemo is Undeclared
RSYLabelDecoration is Undeclared
RSHighlightEvent is Undeclared
Margin is Undeclared
Monitor is Undeclared
SubscriptOutOfBounds is Undeclared
RSGroup is Undeclared
S2Profiler is Undeclared
RSVerticalLineLayout is Undeclared
RSGridLayout is Undeclared
KeyNotFound is Undeclared
RSVerticalTick is Undeclared
RSSparkCircle is Undeclared
RSComposite is Undeclared
RSHorizontalTick is Undeclared
RPackage is Undeclared
TestCase is Undeclared
RSUnHighlightEvent is Undeclared
RSEdgeBuilder is Undeclared
STON is Undeclared
RSLinePlot is Undeclared
RSPolyline is Undeclared
RSCanvasController is Undeclared
RSChart is Undeclared
RSLine is Undeclared
RSBox is Undeclared
OrderedDictionary is Undeclared
RSLabel is Undeclared
TinyLogger is Undeclared
SSTypeCollector is Undeclared
RSLocation is Undeclared
RSCanvas is Undeclared
RSLegend is Undeclared
RSBorder is Undeclared
NeoCSVWriter is Undeclared
RSHorizontalLineLayout is Undeclared
NSScale is Undeclared
RBParser is Undeclared
SystemVersion is Undeclared
RSHighlightable is Undeclared
LinearGradientPaint is Undeclared
Color is Undeclared
Spy2 is Undeclared

This means that there are dependencies that are not there... this may cause several errors....

Need to define metrics per test method

For example, at the beginning of each test method we could have:

"
Coverage = 
Number of generations = 
Number of assertions = 
Number of objects =
Number of direct classes = 
Number of indirect classes =
Number of messages = 
Resume: Involved classes, involved methods.
"

The graphic can be improved

The graphic showing the result should also indicate the worse fitness of a population, and the average fitness of a population.

Coverage per class

The reports (such as graphs and comments in the tests) should indicates the coverage for the class, and not the whole application

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.