2-Tevredenheid probleem toets gevalle
-
16-09-2019 - |
Vra
Ek het 'n SAT-oplosser vir 2-bevredigingsprobleem geskryf, iemand gee asseblief vir my 'n toetsgeval met sê 10 000 letters wat slegs een bevredigende opdrag het, dws net een oplossing
The format can be:(for 3 literals)
2 // No of clauses and then each clause
2 3
1 -2
corresponding to
(b+c).(a+!b)
Oplossing
Toetsdekking is gewoonlik moeilik, die meeste van die kere vergeet jy net van 'n faktor of ander.
Ek gaan gewoonlik voort in 'n paar stappe:
- Maak seker dat dit 'n onbenullige probleem (of sommige) oplos
- Toetsrandgevalle/grensvoorwaardes:0 klousule byvoorbeeld
- Toetsfoutgevalle:swak geformateerde invoer, probleme met geen oplossing nie
- Toetsprestasie / Massa-inspuiting (kyk of die program nie onder las ineenstort nie, nie lek nie, ...)
2) en 3) is redelik uitruilbaar, 4) moet net kom as jy maniere het om hierdie soort inligting te ondersoek (benchmarking, geheuelekopsporing ...).
'n Belangrike punt is dat jy nie jou kode moet reverse engineer om die toetse te skryf nie, want jy sal uiteindelik jou kode toets, maar nie toets dat dit aan die spesifikasies voldoen nie.
As dit 'n tuisprojek is, is spesifikasies gewoonlik informeel, maar dit bestaan steeds (in jou kop) en dit is daarna dat jy die toetsgevalle moet produseer.
Ander wenke
Is hierdie benadering werk?
(a + b ).(a + !b)
Dit kan slegs satisified as 'n waar is.
(a + !b).(!a + !b)
Kan net tevrede wees as b is vals. Vandaar
(a + b ).(a + !b).(a + !b).(!a + !b)
Heeltemal spesifiseer waardes vir a en b. Ons kan dit nou uit te brei vir 'n aantal vasgekodeerde.
Om jou app
toets jou dalk ook teenstrydige requriements, vandaar iets met geen oplossing spesifiseer.