<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Ah great! And thanks for participating as tester!<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 9 Nov 2017, at 06:25, Christoph Atteneder <<a href="mailto:christoph.atteneder@gmail.com" class="">christoph.atteneder@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I’ve just created a Spreadsheet as a starting point for our tests. We can easily extend it based on our requirements: <a href="https://docs.google.com/spreadsheets/d/18n6wV0g5MPTs9Xni0cFji8U34xV3O1IRPDEYZrluBuU/edit?usp=sharing" class="">https://docs.google.com/spreadsheets/d/18n6wV0g5MPTs9Xni0cFji8U34xV3O1IRPDEYZrluBuU/edit?usp=sharing</a><div class=""><br class=""></div><div class="">Best,</div><div class=""><br class=""></div><div class="">Christoph<br class=""><div class=""><br class=""><div class=""><div class=""><div class=""><blockquote type="cite" class=""><div class="">Am 09.11.2017 um 11:03 schrieb Christoph Atteneder <<a href="mailto:christoph.atteneder@gmail.com" class="">christoph.atteneder@gmail.com</a>>:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Manfred!<div class=""><br class=""></div><div class="">I know testing is always a pain-in-the-ass for every dev so we came up with a QA department ;-). To make it less sucking I’ll jump in to take a couple of the most common </div><div class="">test scenarios and will update the click-prototypes and create new ones for the other cases in parallel. What about putting the scenarios into a Google Spreadsheet? I could set something up, so we can use it for future releases as well. Who else want to help out? :-)</div><div class=""><br class=""></div><div class="">Best,</div><div class=""><br class=""></div><div class="">Christoph</div><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">Am 09.11.2017 um 00:35 schrieb Manfred Karrer <<a href="mailto:mk@nucleo.io" class="">mk@nucleo.io</a>>:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">The next release v0.6. gets ready for testing (Development branch). I would like that we do a profound testing because there are a lot of new features and it could easily break something.</div><div class="">I would like to get a few contributors to help testing as more eyes will spot more and in the past we had a few times the issue that I needed to deploy a hotfix release to fix bugs I missed.</div><div class=""><br class=""></div><div class="">To give a better idea about the task I would like to lay out a bit the test situation, challenges and a suggestion for a test plan.</div><div class=""><br class=""></div><div class="">The complexity of testing Bisq lies mainly in the combination of the P2P network, Bitcoin network, user interaction and dealing with backward compatibility and different types of "consensus”. </div><div class="">All that makes unit test based testing very difficult (thats my main excuse why we have so few unit tests :-)). </div><div class=""><br class=""></div><div class="">One of the big challenges are the different levels of “consensus” and backward compatibility. There are several areas where code changes break verifications like in the P2P network data we use a hash of the data which gets signed and the signature need to match. If one user has a newer version with a new field added to such a class the hash of the object would be different and therefore the sig check would fail. That is just one example where we need to take care that changes are not breaking older version or make interactions between old and new clients incompatible. In the trade process there is a similar issue as the trade contract (json) gets hashed and verified by the peer. Any change here would let a trade fail. That caused for instance a problem in v.0.5.2 (email in some payment accounts was empty string in old version and omitted in new version because it was null causing a contract hash check failure). </div><div class="">Protobuffer is another area where we need to take care. Not handling new added fields correctly would also lead to problems.</div><div class=""><br class=""></div><div class="">So how can we test such a beast without spending 2 years on writing a highly complex test environment?</div><div class=""><br class=""></div><div class="">I do it with manually testing most of the possible use cases in many variants.</div><div class="">Starting with the trade process between 2 peers and then going in more complex variations and other use cases.</div><div class=""><br class=""></div><div class="">I start with RegTest only testing as that is the fastest. I also use first the DevEnv flags (DEV_MODE and USE_DEV_PRIVILEGE_KEYS) to make testing faster by avoiding popups and pre-filling some input fields like trade amount and price. Later I test without those flags to be sure to not miss important issues. I also start with a new data directory to have all reset.</div><div class="">Later when I don’t find any more issues I move to Testnet or Mainnet. Testnet I did not use much because it was so unreliable with confirmation times but might be good as it comes with extreme situations (sometimes every few seconds new blocks, deep reorgs, people are testing new BTC features there,…).</div><div class=""><br class=""></div><div class="">Important test variations are:</div><div class="">- users are online or offline during trade</div><div class="">- maker as buyers or seller</div><div class="">- normal trade, disputed trade</div><div class="">- interaction with user with older version</div><div class="">- using Tor vs. not Tor (BitcoinJ)</div><div class="">- RegTest, Testnet, Mainnet</div><div class="">- Fiat trade, Altcoin trade</div><div class="">- using password protection or not (was once a reason or a required hotfix as I did not test with pw protection)</div><div class="">- funding a trade from internal wallet or external wallet (though that has never caused issues so far)</div><div class=""><br class=""></div><div class="">Here is a list of the most important test scenarios:</div><div class=""><div class="">- Alice maker as buyer trades with Bob taker as seller, both are online all the time</div></div><div class=""><div class="">- Alice maker as seller trades with Bob taker as buyer, both are online all the time</div></div><div class="">- Next is to test both cases that they are offline during the trade steps.</div><div class=""><div class=""><div class="">- Next is that they open a dispute both with the online and offline cases</div></div><div class=""><div class="">- Next is to use one peer with an old version, one with a new version</div></div><div class="">- Beside the trade use case I visit all screens and if there are some relevant user activities possible like setting up an account I test that. If there have been changes in the payment accounts it is needed to test setting up all the possible fiat accounts.</div><div class="">- Testing the account screens. Password, backup, seed words,…</div><div class=""><br class=""></div><div class="">Of course I try to focus on those areas where we changed something, but the basic use cases (trade, dispute) need to be tested always.</div><div class="">When testing on Mainnet you need to take care to not interfere with real traders. I used usually payment methods or altcoins which are not used like Alipay or using very bad prices.</div><div class=""><br class=""></div><div class="">So how could we distribute the testing to avoid that bugs slip through?</div><div class=""><br class=""></div><div class="">I would like to have at least 2 devs who help me testing and do basically what I described above in their own style. Any input of ideas to make that less painful are welcome. </div><div class="">Automating those tests will be very hard and is not feasible for the near future but as soon we have enough resources it might of course become a topic. </div><div class=""><br class=""></div><div class="">So my question is who is willing to help me testing? With no B2X we have less time pressure but I want to get that release out in the next days anyway to get back to DAO work.</div><div class=""><br class=""></div><div class="">Here I have written up summaries for describing and testing the big features:</div><div class=""><a href="https://github.com/bisq-network/exchange/issues/998" class="">https://github.com/bisq-network/exchange/issues/998</a></div><div class=""><a href="https://github.com/bisq-network/exchange/issues/999" class="">https://github.com/bisq-network/exchange/issues/999</a> </div><div class=""><a href="https://github.com/bisq-network/exchange/issues/1000" class="">https://github.com/bisq-network/exchange/issues/1000</a> </div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Here are the current release notes:</div><div class=""><br class=""></div><div class="">Big features:</div><div class="">* Add support for Tor bridges and pluggable transports (<a href="https://github.com/bisq-network/exchange/issues/998" class="">https://github.com/bisq-network/exchange/issues/998</a>)</div><div class="">* Provide Bitcoin full nodes from Bisq developers (<a href="https://github.com/bisq-network/roles/issues/39" class="">https://github.com/bisq-network/roles/issues/39</a>) to protect against BitcoinJ vulernatibilty regarding B2X (BitcoinJ is blindly following longest PoW chain and not checking consensus rule violations). That also avoids the privacy issues with bloom filters. (<a href="https://github.com/bisq-network/exchange/issues/999" class="">https://github.com/bisq-network/exchange/issues/999</a>)</div><div class="">* Add account age verification scheme (<a href="https://github.com/bisq-network/proposals/blob/master/payment-account-age-witness.adoc" class="">https://github.com/bisq-network/proposals/blob/master/payment-account-age-witness.adoc</a>, <a href="https://github.com/bisq-network/exchange/issues/1000" class="">https://github.com/bisq-network/exchange/issues/1000</a>)</div><div class=""><br class=""></div><div class="">Changed fees, limits, security deposit:</div><div class="">* Reduce DEFAULT_TAKER_FEE_IN_BASE_CUR from 0.003 BTC to 0.002 BTC (that is the base for a 1 BTC trade)</div><div class="">* Lower miner fees by ee estiamtion adjustments (using maxDelay 20 instead of 10 and taking average of 12 last fee results)</div><div class="">* Lower miner fee by transaction size calculation. Instead of using 600 bytes as estimation of trade fee tx we create a dummy tx to get the exact size id funds are on the wallet, otherwise we use 260 bytes for maker and 320 bytes for taker (deposit and payout tx are larger).</div><div class="">* Reduce security deposit: DEFAULT_BUYER_SECURITY_DEPOSIT from 0.03 BTC to 0.01 BTC; MAX_BUYER_SECURITY_DEPOSIT from 0.2 BTC 0.05 BTC, MIN_BUYER_SECURITY_DEPOSIT from 0.001 BTC to 0.0005 BTC; SELLER_SECURITY_DEPOSIT from 0.01 BTC to 0.003 BTC</div><div class="">* Use new trade limits to reflect higher BTC price</div><div class="">    Bank transfers: 0.25 BTC</div><div class="">    Swish, OKPay, PerfectMoney, AliPay: 0.5 BTC</div><div class="">    Altcoins 1 BTC (exception SiaFund as their price is about 3 BCT and it is not dividable, so we allow 4 BTC there)</div><div class="">* Use new seed nodes and price relay nodes operated by different Bisq developers and bonded by BSQ</div><div class=""><br class=""></div><div class="">Other features:</div><div class="">* Show latest trade price in case no price from external market price providers is available. To be used only for informational purpose not for % based offers due price manipulation risks.</div><div class="">* Enable Bisq DAO phase 1 on Bitcoin Testnet: BSQ genesis distribution, BSQ trading, BSQ used for paying trade fee, BSQ wallet with send, receive and tx list screens, dashboard</div><div class="">* Add new languages: Chinese, Hungarian, Romanian, Russian, French, Turkish</div><div class="">* Added new Altcoins: DECENT, Pranacoin, WACoins, ZenCash, Ellaism, Cryptonite, Terracoin, Internext</div><div class="">* Add all missing countries (all global countries taken from <a href="https://restcountries.eu/rest/v2/all?fields=name;region;subregion;alpha2Code;languages" class="">https://restcountries.eu/rest/v2/all?fields=name;region;subregion;alpha2Code;languages</a>)</div><div class="">* Add OXT as BTC blockexplorer</div><div class="">* Add filter for arbitrators, seed nodes and price relay nodes</div><div class="">* Change pw length restriction</div><div class="">* Change name of IOP to "Internet Of People"</div><div class="">* Remove DOGE as base currency (zero trade activity)</div><div class="">* Reduce number of seed nodes for LTC and DASH (very low trade activity)</div><div class="">* Removed never-traded altcoins: Advanced Internet Blocks (AIB), Anoncoin (ANC), Anti (ANTI), AquariusCoin (ARCO), Argentum (ARG), Augur (REP), Battlestars (BATL), BigUp (BIGUP), BitAUD (BITAUD), BitCHF (BITCHF), BitCNY (BITCNY), BitEUR (BITEUR), BitGBP (BITGBP), BitHKD (BITHKD), BitNZD (BITNZD), BitSEK (BITSEK), BitSGD (BITSGD), BitSYNQ (SYNQ), BitShares (BTS), BitUSD (BITUSD), Blackcoin (BLK), Clams (CLAM), CloakCoin (CLOAK), Comet (CMT), Creditbit (CRBIT), Crown (CRW), Crypto Bullion (CBX), DIBCOIN (DIBC), Digibyte (DGB), Digital Rupees (DRS), DigixDAO Tokens (DGD), EOS (EOS), EUR Tether (EURT), Emercoin (EMC), Eternity (ENT), Europecoin (ERC), EverGreenCoin (EGC), Factom (FCT), FairCoin (FAIR), FlorinCoin (FLO), GameCredits (GAME), Gemz (GEMZ), Groestlcoin (GRS), Gulden (NLG), HOdlcoin (HODL), HunCoin (HNC), I/O Coin (IOC), JPY Tether (JPYT), Janus (JNS), Jumbucks (JBS), LTBcoin (LTBC), Maker (MKR), MarteXcoin (MXT), Moin (MOIN), Myriadcoin (XMY), NEM (XEM), Nevacoin (NEVA), NuShares (NSR), OKCash (OK), Omni (OMNI), Opal (OPAL), Particl (PART), Peercoin (PPC), Pinkcoin (PINK), PlatinumBar (XPTX), Plutons (PLU), PotCoin (POT), Primecoin (XPM), Radium (RADS), RealEst. Coin (REALEST), Ripple (XRP), Shift (SHIFT), Smileycoin (SMLY), SolarCoin (SLR), Steem Dollars (STEEMUSD), Stellar Lumens (XLM), StorjcoinX (SJCX), Stratis (STRAT), Swarm City Token (SWT), Syndicate (SYNX), Synereo (AMP), Triangles (TRI), USD Tether (USDT), VCoin (VCN), VPNCoin (VPN), Verge (XVG), VeriCoin (VRC), Waves (WAVES), Worldcoin (WDC), Xaurum (XAUR), YACCoin (YACC), YbCoin (YBC)</div><div class="">* Many smaller improvements in the UI</div><div class=""><br class=""></div><div class="">Bug fixes, code improvements:</div><div class="">* Fix wrong date handlin gin trade statistics charts</div><div class="">* Listen to bitcoin network for deposit and payout transaction in case the P2P message did not arrive</div><div class="">* Support different keys for code signing in download-tool</div><div class="">* Fix bug with missing MultiSigKey (findKeyFromPubKeyHash call was used instead of findKeyFromPubKey)</div><div class="">* Fix missing persistence for trade statistic object in seed nodes</div><div class="">* Fix but with offer sorting</div><div class="">* Use smaller font and witdh for TAC window on very small screens </div><div class="">* Use netlayer Tor library (<a href="https://github.com/JesusMcCloud/netlayer/" class="">https://github.com/JesusMcCloud/netlayer/</a>)</div><div class="">* Improved build system </div></div><div class=""><br class=""></div><div class="">Br,</div><div class="">Manfred</div></div>_______________________________________________<br class="">bisq-contrib mailing list<br class=""><a href="mailto:bisq-contrib@lists.bisq.network" class="">bisq-contrib@lists.bisq.network</a><br class=""><a href="https://lists.bisq.network/listinfo/bisq-contrib" class="">https://lists.bisq.network/listinfo/bisq-contrib</a><br class=""></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></div></div></div></div></blockquote></div><br class=""></div></body></html>