Testing in a microcontroller world

Angelo Compagnucci - IDEA SOC COOP – 04/12/2013
Misunderstanding?
What's going on here?
Are we building the right product?
Testing

Are we building the product right?
Testing never proves
the absence of faults,
it only shows their
presence.
Edsg...
Black box testing
Functional Testing
●
Fuzzy testing
●
White-box Testing
Test Case: esecuzione volta ad evidenziare la presenza di un
guasto
●
Test suite: insieme di casi di tes...
Testing example in python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

import random
imp...
PICUNIT

Free Software under the MIT license,
designed by us!
http://github.com/idea-on-line/picunit
PICUNIT

1. Start a new project
2. Import .h files
3. Make a new PICUNIT configuration
4. Select simulator
5. Write your t...
Continuous Integration

http://jenkins-ci.org/
Continuous Integration (CI) is a development practice that
requires develop...
Continuous Integration

PICUNIT is Jenkins enabled!
CI folder in repo
Modify build_conf.sh and check_tests.sh to suite you...
Testing in a microcontroller world
Upcoming SlideShare
Loading in …5
×

Testing in a microcontroller world

1,007 views

Published on

Il testing è un aspetto fondamentale nello sviluppo software particolarmente in ambienti critici quali quelli a micrcontrollore. Generalmente il solo testing che viene eseguito è quello di tipo funzionale, ma a volte può non bastare.

Abbiamo messo a punto un sistema di unit test su microcontrollore che può essere usato per validare il codice dall'interno e simulare percorsi di esecuzione di difficile esplorazione.

Nel tempo a disposizione cercheremo di analizzare le problematiche maggiori e di mostrare con un caso pratico, come si possa scrivere ed automatizzare l'esecuzione del testing.

Per farlo mostreremo l'uso di uno strumento da noi ideato su architettura PIC, l'intergazione con l'IDE MPLABX, la simulazione del testing con il simulatore Microchip ed infine l'integrazione del testing con lo strumento di continuous integration Jenkins.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,007
On SlideShare
0
From Embeds
0
Number of Embeds
45
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Testing in a microcontroller world

  1. 1. Testing in a microcontroller world Angelo Compagnucci - IDEA SOC COOP – 04/12/2013
  2. 2. Misunderstanding?
  3. 3. What's going on here?
  4. 4. Are we building the right product?
  5. 5. Testing Are we building the product right? Testing never proves the absence of faults, it only shows their presence. Edsger W. Dijkstra
  6. 6. Black box testing Functional Testing ● Fuzzy testing ●
  7. 7. White-box Testing Test Case: esecuzione volta ad evidenziare la presenza di un guasto ● Test suite: insieme di casi di test ● Driver: strumento utilizzato per eseguire i test sul sistema ● Sistem Under Test (SUT): il sistema che in un certo momento è sottoposto al test ● Stubs: oggetti necessari a riprodurre componenti mancanti al fine del test di integrazione ● Oracolo del Test: entità capace di valutare i risultati del test ● Workload: carico di lavoro a cui un SUT viene sottoposto tipicamente per evidenziare guasti dovuti a errori nel progetto della concorrenza o per evidenziare degradi di QoS ●
  8. 8. Testing example in python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import random import unittest class TestSequenceFunctions(unittest.TestCase): def setUp(self): self.seq = list(range(10)) def test_shuffle(self): # make sure the shuffled sequence does not lose any elements random.shuffle(self.seq) self.seq.sort() self.assertEqual(self.seq, list(range(10))) # should raise an exception for an immutable sequence self.assertRaises(TypeError, random.shuffle, (1,2,3)) def test_choice(self): element = random.choice(self.seq) self.assertTrue(element in self.seq) def test_sample(self): with self.assertRaises(ValueError): random.sample(self.seq, 20) for element in random.sample(self.seq, 5): self.assertTrue(element in self.seq) if __name__ == '__main__': unittest.main()
  9. 9. PICUNIT Free Software under the MIT license, designed by us! http://github.com/idea-on-line/picunit
  10. 10. PICUNIT 1. Start a new project 2. Import .h files 3. Make a new PICUNIT configuration 4. Select simulator 5. Write your testing functions!
  11. 11. Continuous Integration http://jenkins-ci.org/ Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. By integrating regularly, you can detect errors quickly, and locate them more easily.
  12. 12. Continuous Integration PICUNIT is Jenkins enabled! CI folder in repo Modify build_conf.sh and check_tests.sh to suite your needs

×