X-Received: by 2002:a24:3d14:: with SMTP id n20-v6mr465443itn.13.1539238984292; Wed, 10 Oct 2018 23:23:04 -0700 (PDT) X-Received: by 2002:aca:fdc7:: with SMTP id b190-v6mr6921oii.3.1539238984166; Wed, 10 Oct 2018 23:23:04 -0700 (PDT) Path: csiph.com!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!x98-v6no18428ita.0!news-out.google.com!n199-v6ni63itn.0!nntp.google.com!z5-v6no18321ite.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: de.comp.lang.java Date: Wed, 10 Oct 2018 23:23:03 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=2001:16b8:10cd:8700:e8ca:aaac:dd56:bdb9; posting-account=VmIUsgkAAABUMV5-gaSlvHjNMDcqojz2 NNTP-Posting-Host: 2001:16b8:10cd:8700:e8ca:aaac:dd56:bdb9 References: <935c2a6a-4cc6-4659-a9e5-ed8f85e95bb6@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: Bit packed array From: =?UTF-8?Q?Heiner_K=C3=BCcker?= Injection-Date: Thu, 11 Oct 2018 06:23:04 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Lines: 77 Xref: csiph.com de.comp.lang.java:13218 Am Mittwoch, 10. Oktober 2018 16:50:07 UTC+2 schrieb Patrick Roemer: > Responding to Heiner K=C3=BCcker: > > Ich habe die Tests f=C3=BCr die arraycopy-Methoden des Bit-Packed-Array= noch laufen und > > die dauern schon ziemlich lange. >=20 > Ach? ;) >=20 > > Wie k=C3=B6nnte man die Anzahl der ausgef=C3=BChrten Testf=C3=A4lle ver= ringern, ohne die Korrektheit > > zu gef=C3=A4hrden? >=20 > Gar nicht. Denn im Prinzip kann im Code jederzeit irgendwas stehen wie >=20 > if(dataElementWidth =3D=3D 637450152 && arraySize =3D=3D 994637 && ...) { > throw new JustKiddingException(); > } >=20 > Will meinen, wenn Du nicht alle m=C3=B6glichen Kombinationen von > Eingabewerten pr=C3=BCfst, ist die Korrektheit "gef=C3=A4hrdet". Da das n= icht > m=C3=B6glich ist, muss man sich mit pragmatischeren Ans=C3=A4tzen beschei= den. >=20 > > Eine =C3=9Cberlegung ist das Formulieren einer algebraischen Spezifikat= ion. >=20 > Das ist genau der Ansatz hinter QuickCheck. Anders als bei klassischen > Unit-Tests, die um konkrete Beispielszenarien herum gebaut sind, > formuliert man "Gesetze", die f=C3=BCr alle m=C3=B6glichen Szenarien > (Kombinationen von Eingabewerten,...) gelten m=C3=BCssen. Statt dann aber= den > kompletten Wertebereich zu durchlaufen, wie Du es versuchst, begn=C3=BCgt= man > sich pro Testlauf mit einer =C3=BCberschaubaren Menge randomisiert erstel= lter > Szenarien. Damit hat man die Hoffnung, dass Fehler, die eine gro=C3=9Fe > Teilmenge der m=C3=B6glichen Szenarien betreffen, in so gut wie jedem Lau= f > auffallen sollten, und Fehler, die nur eine kleine Teilmenge betreffen, > wenigstens eine Chance haben, fr=C3=BCher oder sp=C3=A4ter ins Netz zu ge= hen. >=20 > Zus=C3=A4tzlich sollte man nat=C3=BCrlich immer noch klassische Tests hab= en, die > Grenzf=C3=A4lle, typische Szenarien, etc. deterministisch pr=C3=BCfen. Un= d die > muss man halt mit einer Mischung von strukturierter Analyse, gesundem > Menschenverstand, Erfahrung und Bauchgef=C3=BChl ausw=C3=A4hlen, wobei di= e > Dekompositionshierarchie einen unterst=C3=BCtzen oder, wenn schlecht gew= =C3=A4hlt, > auch sabotieren kann. >=20 > Es ist ja kein Zufall, dass der oben zitierte Binder ein Ziegelstein mit > =C3=BCber 1000 Seiten ist - und nur eines von unz=C3=A4hligen Werken =C3= =BCber > Testdesign und -strategien... Echt schwierig. >=20 > >=20 > > Um darin ein System zu finden, ben=C3=B6tigt man Intelligenz, hier droh= t also der G=C3=B6del. >=20 > Und das Halteproblem. Und wiederum die kombinatorische Explosion auf > dieser Ebene. Und, und, und... Das Halteproblem ist eine andere Formulierung des G=C3=B6delschen Unvolls= =C3=A4ndigkeitssatzes. > Viele Gr=C3=BC=C3=9Fe > Patrick Danke Heiner