Question: How can we increase block.number on Ganache for testing purpose ?
If not possible do you know an alternative like passing X fake transactions to artificially increase block.number.

Or if we have to use a private chain: is it possible to change the time between blocks for faster testing ?

Best regards

Answer: 
In addition to goodvibration's answer, OpenZeppelin recently released their [`openzeppelin-test-helpers` package](https://github.com/OpenZeppelin/openzeppelin-test-helpers). This library contains all kinds of helpers for testing smart contracts, including methods to increase the block number or timestamp, such as:

```js
async time.advanceBlock()
async time.increase(duration)
async time.increaseTo(target)

```

I haven't used the library myself, but it sounds like it might be useful for you.
With ethers, you can increase the next block timestamp using:

```
await ethers.provider.send("evm_increaseTime", [numSecondsToIncreaseBy]);
await ethers.provider.send("evm_mine");

```

or you can choose the next block timestamp as follows (this may be important if you need exact block timestamps, since the above method may result in a timestamp larger than intended, if other blocks are mined before your next contract function call). The new timestamp must be greater than the current block timestamp:

```
  const currTimestamp =
          (await ethers.provider.getBlock(contract.deployTransaction.blockNumber))
          .timestamp;
  await ethers.provider.send("evm_setNextBlockTimestamp", [currTimestamp + 3600]);
  await ethers.provider.send("evm_mine");

```

You can also increase the block number by repeatedly sending an `evm_mine` transaction (but I don't know if there's a way to increase the block number by an arbitrary number of blocks with one call).