Bitcoin Forum
May 07, 2024, 03:47:19 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitcoin Quality Assurance  (Read 921 times)
origin12 (OP)
Member
**
Offline Offline

Activity: 65
Merit: 10


View Profile
December 30, 2015, 11: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?
1715053639
Hero Member
*
Offline Offline

Posts: 1715053639

View Profile Personal Message (Offline)

Ignore
1715053639
Reply with quote  #2

1715053639
Report to moderator
1715053639
Hero Member
*
Offline Offline

Posts: 1715053639

View Profile Personal Message (Offline)

Ignore
1715053639
Reply with quote  #2

1715053639
Report to moderator
1715053639
Hero Member
*
Offline Offline

Posts: 1715053639

View Profile Personal Message (Offline)

Ignore
1715053639
Reply with quote  #2

1715053639
Report to moderator
Activity + Trust + Earned Merit == The Most Recognized Users on Bitcointalk
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715053639
Hero Member
*
Offline Offline

Posts: 1715053639

View Profile Personal Message (Offline)

Ignore
1715053639
Reply with quote  #2

1715053639
Report to moderator
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3388
Merit: 6587


Just writing some code


View Profile WWW
December 31, 2015, 12:27:38 AM
 #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.

cr1776
Legendary
*
Offline Offline

Activity: 4032
Merit: 1299


View Profile
December 31, 2015, 12:59:59 AM
 #3

Some useful links:

https://en.m.wikipedia.org/wiki/Edge_case

https://en.m.wikipedia.org/wiki/Corner_case

http://www.cs.cmu.edu/~rjsimmon/15122-s13/rec/07.pdf

:-)
letsplayagame
Sr. Member
****
Offline Offline

Activity: 308
Merit: 250


View Profile
December 31, 2015, 04:44:49 AM
 #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.

Chess, Bitcoin, Privacy and Freedom
Code:
 Make BTC Donations via XMR.TO or Shapeshift XMR: 47nMGDMQxEB8CWpWT7QgBLDmTSxgjm9831dVeu24ebCeH8gNPG9RvZAYoPxW2JniKjeq5LXZafwdPWH7AmX2NVji3yYKy76 
Patatas
Legendary
*
Offline Offline

Activity: 1750
Merit: 1115

Providing AI/ChatGpt Services - PM!


View Profile
December 31, 2015, 08: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
greBit
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
December 31, 2015, 12:58:42 PM
 #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.
Oralmat
Hero Member
*****
Offline Offline

Activity: 588
Merit: 500



View Profile
January 02, 2016, 09: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?
achow101
Moderator
Legendary
*
expert
Offline Offline

Activity: 3388
Merit: 6587


Just writing some code


View Profile WWW
January 02, 2016, 11: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.

BitUsher
Legendary
*
Offline Offline

Activity: 994
Merit: 1034


View Profile
January 03, 2016, 03:23:03 AM
 #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).
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!