240 likes | 376 Views
Combinatorial Testing on ID3v2 Tags of MP3 Files. Zhiqiang Zhang 1 , Xiaojian Liu 2 , Jian Zhang 1 1 Institute of Software, Chinese Academy of Sciences 2 Institute of Automation, Shandong Academy of Sciences. Introduction.
E N D
Combinatorial Testing onID3v2 Tags of MP3 Files Zhiqiang Zhang1, Xiaojian Liu2, Jian Zhang1 1 Institute of Software, Chinese Academy of Sciences 2 Institute of Automation, Shandong Academy of Sciences
Introduction • MP3 (MPEG-1 or MPEG-2 audio layer III) is an audio file format developed by the Moving Pictures Experts Group (MPEG) • One of the most popular audio formats • Supported by almost all audio players • Usually, an MP3 file comes with an ID3 tag, which stores audio information such as: • Title, artist, album, … • ID3 has two unrelated versions: • ID3v1 & ID3v2
Overview • ID3v2 tag format • Test goals • Modeling • Experiments &Results • Conclusion
Combinatorial Testing • Considerably high fault coverage • Model the system under test (SUT) as a parameterized black box • Usually use a covering array as the test set • Small # of test cases
MP3 frames& ID3v2 tags • An MP3 file is built up from a sequence of MP3 frames (MPEG frames) • A short segment of audio data • The first 11 or 12 bits are always set, can be used for synchronization • Sometimes MP3 frames depend on each other, and cannot be freely cut • ID3v2 tag: • A metadata container for audio file information • Located at the beginning of an MP3 file
ID3v2 tag format • In our work, we consider a subset of the ID3v2 tag format • An ID3v2 header • Several ID3v2 frames • ID3v2 header format: ID3v2/file identifier “ID3” ID3v2 version $03 00 ID3v2 flags %abc00000 ID3v2 size 4 * %0xxxxxxx Tag size
ID3v2 Frames • An ID3v2 frame consists of a frame header and the frame content • Frame header Frame ID $xx xxxxxx (four characters) Size $xx xxxxxx Flags $xx xx • Text information frames Text encoding $xx Information <text string> Frame size
Text Encodings • Encodings commonly used in China: • $00: ASCII or GBK • $01: Unicode (UTF-16) • Little-endian (LE) • Big-endian (BE) • $02: Unicode BE • $03: UTF-8
Test Goals • Usually, tag processing and audio playing are performed by separate modules of MP3 players • Audio playing is often done by a decoder (out of the scope of our work) • ID3v2 tag processing • Goal I: text information recognition and display • Text encodings of some frames may influence the processing of other frames • Goal II: robustness against bad header & frame sizes • Offset related • May cause buffer overflow or vulnerable read operations
Modeling (Test Goal I) • Six types of text information frames • TIT2 (title), TPE1 (artist), TALB(album), TRCK (track number), TCON (genre) and TYER(year) • The model:
Modeling (Test Goal II) • The sizes indicated by the ID3v2 header & frame size bytes might be faulty • May cause critical failures • For building each test case • Set the header and frame size bytes • Set the actual header and frame sizes • Build an ID3v2 frame • Build an ID3v2 tag by filling the content with frames • Attach MP3 frames
Modeling (Test Goal II) • Building an ID3v2 frame • Building an ID3v2 tag Frame size bytes Tag size bytes Actual frame size Actual tag size
Modeling (Test Goal II) • Building a complete MP3 file • Attach a sequence of MP3 frames after the ID3v2 tag • In some cases, the actual tag size is not an integral multiple of the total frame size • To fill the remaining space: 4 filling modes
Filling Modes Tag size Tag size Tag size Tag size ID3v2 frame ID3v2 frame ID3v2 frame ID3v2 frame $00 00 00… ID3v2 frame ID3v2 frame MP3 frames MP3 frames MP3 frames MP3 frames Safe Overflow None Cut
Modeling (Test Goal II) • TS: tag size indicated by the ID3v2 header size bytes • TSD: difference of the actual tag size compared with TS • FS: frame size indicated by the frame header size bytes • FSD: difference of the actual frame size compared with FS • FM: filling mode • ATCHMP3: whether MP3 frames are attached or not
Modeling (Test Goal II) • Normal constraints • IF TS=0KB THEN TSD<>-1KB • IF FS=0KB THEN FSD<>-64B • When TS=0KB and TSD=0KB, the actual tag size is 0KB. So no frames will be filled. Thus FS, FSD and FM are invalid parameters • Introduce a special parameter value ‘#’ for invalid parameters • IF TS=0KB AND TSD=0KBTHEN FS=# AND FSD=# AND FM=# • IF TS<>0KB OR TSD<>0KB THENFS<># AND FSD<># AND FM<>#
Experiments • Test subjects: • I: an on-vehicle leisure and entertainment system • II: a portable MP3 player • Test generation: • Use Microsoft’s PICT • Test Goal I: 57 test cases (strength=2) • Test Goal II: 59 test cases (strength=3)
Experimental Results(Test Goal I, Subject I) • 2 passed, 55 failed • Actually, only ASCII text can be displayed
Experimental Results(Test Goal I, Subject II) • 33 passed, 24 failed • Problem when processing two encodings • Failures caused by 1-2 parameters
Experimental Results(Test Goal II, Subject I) • 52 passed, 7 failed • Failures caused by 4 parameters
Experimental Results(Test Goal II, Subject II) • All test cases passed • We occasionally found a bug • When ATCHMP3=NO, the subject • Displays that the file is damaged for a few seconds • Proceeds to the next file. • Just between this two moments, it is not possible to play back to the previous file • Not Discovered by CT!!
Conclusion • Benefit from CT: • Small test suite • Test Goal I: 57 out of 7323=2744 exhaustive test cases • Test Goal II: 59 out of 3442=648 exhaustive test cases (including test cases not satisfying the constraints) • Interaction faults discovered • Failures are caused by 1-4 parameters
Additional Results • Experiments are conducted on two PC audio players • PC audio player I perfectly passes all the tests • PC audio player II: • Test Goal I: similar failures as subject I • Test Goal II: • When all test cases are added to the player playlist, the player’s UI begin to respond slowly • The player got stuck when playing 4 test cases