Testing is not something you bolt on to your development. Your software developer that is off site needs to be an integral part in this, picture this model:
The V-model, although by some industries criticized ("go Agile!"), but for hardware purposes it works quite well.
I suppose you're think you are at the integration test or system test stage.
But can/did you do unit testing? Yes you can. If you have the code that is, or the software dev is willing to do this.
You could:
- Test all the code in your timer callback. Do the 'accelerated life' testing on a machine. Call the callback worth 10 or 100 days of time passed, then assert that indeed 10 or 100 has been added to the aging variables.
- Test the formulas for calculating increased light intensities due to aging. This should be a rather simple, "give this input [age], expect this output [light PWM modifier]" test.
- You could also combine these 2 units and write an integration test for this, that calls the timer callback worth 100 days, and then asserts that your light output is indeed increased. But testing the same parameter twice on 2 different places sucks, because more maintenance if you change 1 single business rule.
- You can also test a "virtualized sun" and on a mocked timebase, such that you can test if the night scheduling works correctly.
Personally I wouldn't really trust the interval /100 test on real hardware. This could work, but it really depends on how the software is written. It could exhibit bugs only present in this /100 test interval. You will never really know, until you spend hours debugging faults you have seen in "special firmware builds". What you're basically doing here is making the real-time application 100x faster, which may change some small timing detail in your software that could make or break things.
Timing is absolutely the worst thing to test. But you can unit test all software 'modules' that describe the functionality and behaviour, given a set of test vectors.