Author

Topic: Bitcoin Quality Assurance (Read 946 times)

legendary
Activity: 994
Merit: 1035
January 02, 2016, 10:23:03 PM
#9
Has the bitcoin been tested throughly?

Sometimes I am blown away by how thorough Pieter Wuille is ...

https://github.com/bitcoin/bitcoin/pull/6954#issuecomment-167126321

For all of the above, we have: * High test coverage (the only missing parts are cryptographically improbable to reach ones). * Hand verifiable proof of correctness for the field multiplication algorithm (provably no overflow, and provably equivalent to the correct response assuming no overflow). * Computer verified proof of correctness for group addition formulae (computer algebra system can prove polynomial equivalence between implementation and mathematical expressions for the result). * Special compilable mode that changes a constant to end up with a very small group, and exhaustive tests that all assumptions remain true (in progress, by Andrew Poelstra). * Test cases for the scalar code that were extracted from a set of 1 trillion randomly generated tests which give very high coverage, and work in progress to algebraically derive cases that trigger the (nearly) unreachable remaining ones. Furthermore: * An old build mode which used OpenSSL's bignum code for integer operations helped discover a bug in OpenSSL square code (CVE-2014-3570). * During tested we discovered an platform inconsistency in OpenSSL's signature parsing code (fixed by BIP66). * Our ECDSA signature fuzzer pointed out several types of previously unknown invalid signature types that OpenSSL accepted (discovered after BIP66 took effect).
staff
Activity: 3458
Merit: 6793
Just writing some code
January 02, 2016, 06:32:51 PM
#8

Edge cases would be scenarios that include something completely absurd that normally wouldn't happen but could happen. Those cases still need to be considered as part of the testing


This is part of the reason why I trust bitcoin more than almost all altcoins (where extensive QA and edge case scenarios are not considered).

The more QA the better.

Has the bitcoin been tested throughly?
Yes. For every single feature that gets added there are tests for it. Anything new pull request for a feature that does not have a test is not merged until the person who opened the request creates tests for it. It is quite thorough.
hero member
Activity: 588
Merit: 500
January 02, 2016, 04:39:47 PM
#7

Edge cases would be scenarios that include something completely absurd that normally wouldn't happen but could happen. Those cases still need to be considered as part of the testing


This is part of the reason why I trust bitcoin more than almost all altcoins (where extensive QA and edge case scenarios are not considered).

The more QA the better.

Has the bitcoin been tested throughly?
hero member
Activity: 714
Merit: 500
December 31, 2015, 07:58:42 AM
#6

Edge cases would be scenarios that include something completely absurd that normally wouldn't happen but could happen. Those cases still need to be considered as part of the testing


This is part of the reason why I trust bitcoin more than almost all altcoins (where extensive QA and edge case scenarios are not considered).

The more QA the better.

Yes exactly Bitcoin is more secure than any other crypto and they are doing there best to keep the scammers at the bay.
legendary
Activity: 1750
Merit: 1115
Providing AI/ChatGpt Services - PM!
December 31, 2015, 03:37:29 AM
#5
Testing is an important aspect of any Software Development Methodology .If you would you read about testing we have different types of testing conducted on different application models:

Unit Testing : Refers to test which are conducted on all the units as one.For example,entire block is being tested as one unit or entire chain is tested as one unit.We have to write the test cases to check if the software or application we're writing will be efficient to all the number of inputs by the users.

Consider a simple example of a calculator : We write a program to add two numbers .Now we will conduct different test cases with n number of inputs like adding two positive numbers/adding two negative numbers/adding a fraction and check in all those scenarios if we're getting the accurate answers from the program.If particular test is unsatisfied we can go ahead and improve the code.

We also perform black box /white box testing on various modules.Its interesting to learn.You could google these concepts . Smiley
sr. member
Activity: 308
Merit: 250
December 30, 2015, 11:44:49 PM
#4

Edge cases would be scenarios that include something completely absurd that normally wouldn't happen but could happen. Those cases still need to be considered as part of the testing


This is part of the reason why I trust bitcoin more than almost all altcoins (where extensive QA and edge case scenarios are not considered).

The more QA the better.
staff
Activity: 3458
Merit: 6793
Just writing some code
December 30, 2015, 07:27:38 PM
#2
Part of the QA is the testing to make sure that the software does what it is supposed to. Valid inputs produce valid results and invalid inputs produce invalid results. The test cases are usually a couple of scenarios that are supposed to work and some that aren't. If the software is doing everything correctly, then the ones that should work will work and the ones that shouldn't won't work.

Edge cases would be scenarios that include something completely absurd that normally wouldn't happen but could happen. Those cases still need to be considered as part of the testing in the off chance that someone does something incredibly stupid to cause those cases to happen.

Unit testing just means testing specific functions of the program individually.

A test plan is basically the plan for testing a certain function. It includes the starting point, what you do, and what to expect. A test scenario is pretty much the same thing but I think it also includes the code implementation for the test.
member
Activity: 65
Merit: 10
December 30, 2015, 06:35:37 PM
#1
While looking through the Bitcoin Github I stumbled across this page about Bitcoin Quality Assurance.

https://github.com/bitcoin/QA/

After some Googling I discovered that as part of Quality Assurance Bitcoin has Unit testing conducted on its code, and Edge cases are considered.

In simple terms what is Unit testing, and what are Edge cases?

Some other terms I don't understand concern writing test plans, writing test scenarios, and critical path testcases?

What do those terms mean, and what are they used for?
Jump to: