"测试用例设计与jUnit单元测试" 实验心得
来源:互联网 发布:美国 数据分析专业 编辑:程序博客网 时间:2024/05/21 11:08
实验内容
l 针对Lab4评审和优化过的程序,设计白盒测试用例;
l 针对Lab1中包含的需求,设计黑盒测试用例;
l 在jUnit环境下撰写测试代码并执行测试;
l 私用Infinitest进行持续测试;
l 使用EclEmma统计测试的覆盖度;
l 让自己的GitHub项目具备持续集成的能力(Travis CI)
实验心得
(1) “编写测试代码”指的是在刚编写完程序或者程序的某一个单元时,通过编写代码、使用软件的方式,来测试程序或者其中某一单元的性能。而“编写代码”则是一个更加宽泛的概念,作为一个程序员,我们需要编写的代码种类会有很多,测试代码只是其中之一,还有诸如实现程序功能的代码等。可以说,因为“代码”中包含了“测试代码”,所以“编写代码”包含了“编写测试代码”。
(2) “设计测试用例”是指我们针对被测试的代码段或程序,设计出的一系列方案,尽可能的通过少量有代表性的输入数据,来模拟现实中的所有输入种类,然后通过比较实际输出和期望输出,来评判程序是否符合要求。而“编写测试代码”就是把我们所设计的测试用例,用代码的形式表现出来,以便使用JUnit等工具进行更加专业的代码测试。可以说,“设计测试用例”是我们关于如何测试程序的想法,而“编写测试代码”就是把我们的想法翻译成能被测试工具识别的语言。
(3) 黑盒方法中,我们并不关心具体的代码,因此我们设计的测试用例仅仅依靠于我们事先划分好的测试等价类,我们尽可能的让我们的测试用例覆盖所有的测试等价类。对于每一个等价类而言,我们往往只选取少量具有代表性的测试用例,但是可能在某一些等价类内部,不同的输入在程序内的运行方式可以大相径庭,可能某一等价类中的部分输入可以被正确执行,而其它输入则会引发错误,这是我们在黑盒测试中难以避免的。
而在白盒测试中,我们可以看到程序的代码实现。因此,我们可以以代码为根据来设计测试用例,使得测试用例尽可能覆盖每一行代码,甚至是每一个分支、每一种判定等。这会导致我们的测试用例数量大大增加,但也会让我们的测试结果更加全面、更加有效。
总的说来,黑盒方法中的测试用例,覆盖的是我们设计的各个输入等价类;而白盒方法中的测试用例,覆盖的是程序代码中的语句、分支、判定及其组合。相对而言,白盒测试中的测试用例的“测试覆盖度”应该更高一些,但是黑盒方法无疑更加简洁。
(4) 我愿意养成主动设计测试用例、编写测试代码,并让我自己的代码通过测试的习惯。在我看来,这是十分重要的,看似耗费了更多的时间,但却可以时刻保证我们所写下的每一段代码的正确性。当我们最终将所有代码拼接在一起,实现一个复杂的功能时,可以更加方便快速完成整个程序的整合,而不是每发现一个错误,再去每个代码段中挨个排查。总体而言,我相信这可以为我们节省大量的时间,也可以为我们避免很多不必要的麻烦。
我不认为代码测试应该是专职的测试人员的工作,我认为代码测试应该是程序员在编写完代码时同步完成的。首先,如果测试人员不是代码的编写者,他需要先去理解代码的逻辑,才能去更加有效的设计测试用例,这会浪费大量的时间,更会产生很多误会;其次,如果两个人的编码习惯不同,这会给测试人员带来很大的麻烦,同时,测试人员不断提出代码的漏洞和错误,也会导致测试人员和编写者之间产生矛盾;最后,如果每次编写好代码之后不参与测试,将会很难记住自己代码中的错误,难以获得提升,甚至他们的代码中会重复出现相同的错误,浪费很多的人力物力。所以,我认为代码编写人员应该进行代码测试,至少是参与代码测试。
(5) 从实验过程来说,我认为“白盒测试”的难度相对更高一些,因为在设计测试用例时,我们需要考虑代码实现的细节,根据每一条代码,来设计具体的测试用例,尽可能的覆盖更多地分支和判定以及其组合。而在黑盒测试中,我们只需要根据输入的要求,划分不同的输入等价类,然后依据等价类设计测试用例即可。无论是从复杂程度上,还是测试用例的数量上,“白盒测试”的难度会更高一些。
(6) 通过这次实验,我们对自己编写的代码进行了测试,了解了黑盒测试和白盒测试的流程,也熟悉了jUnit等工具的使用,掌握了设计测试用例、编写测试代码的技能。我们认识到,测试代码也是一个复杂的过程,甚至可以说是一门艺术,好的测试用例可以用最少的代价覆盖最多的可能性,既可以很高效的完成测试代码的工作,让自己更加清晰的了解我们的作品,也可以为我们节约更多的时间。因此,我们需要在平时编写代码时就坚持进行代码测试,提高我们的代码测试水平。
- "测试用例设计与jUnit单元测试" 实验心得
- Android测试:单元测试Junit
- 测试用例设计心得
- Spring JUnit单元测试用例
- 认识单元测试与JUNIT
- 单元测试与JUNIT
- 单元测试与Junit
- 软件测试(java JUnit单元测试)
- 软件测试(JUnit实施单元测试)
- junit 单元测试,测试上传相片
- 软件测试之JUnit单元测试
- Junit单元测试写多线程测试
- Android 单元测试01--JUnit测试
- 单元测试之Junit测试框架
- junit单元测试不支持多线程测试
- python 单元测试与测试用例
- 测试用例的设计心得
- 软件测试用例设计心得
- jquery实现拖拽进度条并显示百分比的特...
- freetype的使用及总结
- Java集合类详解
- VS2015创建C语言工程
- SpringMVC 多视图解析器配置以及问题
- "测试用例设计与jUnit单元测试" 实验心得
- UVa11592 Strange Tax Calculation
- Xcode7 真机调试(无需证书)详解
- QEMU中如何定义所有Device的基类和BUS的基类
- C# DateTime日期格式化
- 算法相关资源
- UVA 10779 Collectors Problem (最大流)
- MySQL的双表多表联查
- android获取手机通讯录