科技探索的每一次进步,不只拓展着人类认知的疆界,也为经济社会发展带来了强大的动力,几次重大的科技革命带来机械化、电气化、自动化、信息化等多次产业革命,世界发展面貌和格局之深刻改变。
DUT ~ 计算机科学与技术 ~ 殷祺云
一、质量意识
(1)项目管理三要素
(2)Bug修复完整流程
测试人员发现bug并将其置为激活状态,开发人员收到激活的Bug并进行修复,Bug的状态变为处理中,随后开发人员修复完成将Bug置为解决状态交给测试人员验证,若修改通过,测试人员将Bug解关闭,若未通过,则继续修复,直到验证通过。Bug的五种状态:
(3)Bug提交反馈渠道
(4)Bug提交格式要求
(5)项目开发整体路径
(6)质量保证在项目各阶段的实现
(7)自动化开发
(8)众包测试
二、代码单元测试总体介绍
(1)单元测试
单元测试指一段代码调用另一段代码,随后检验一些假设的正确性,以减少后续工作的负担,从而提升整体生产力(2)优秀单元测试原则
(3)单元测试好处
三、Python单元测试
(1)单元测试框架
(2)Unitest框架中TestFixture的执行顺序
(3)单元测试的规范
所有单元测试必须使用断言assert判断结果,禁止出现无断言的测试用例。(4)统计覆盖率(判断单元测试效果)的方法
Coverage工具使用。(5)Mock工具——简化单元测试(模拟逻辑)
- 改变函数逻辑,强行让其返回我们想要的返回值,使其结果可以预知。
- Mock工具可以构造一个相对稳定的模块,从而规避其他模块的问题,降低依赖性。
(6)Mock工具应用场景
- 通过retrun value可强行修改返回值。
- 将前一个例子的实例名改为类名,可实现替换类方法的返回值
- 根据调用次数返回想要的结果。
- 修改函数逻辑,根据参数返回想要的结果。
- 抛出想要的异常或错误。
- 获取调用信息。
- 在返回值改变的同时,确保api不会因mock而改变。
- 从零构造依赖模块。
- 替换函数调用链。
四、单元测试实践
(1)Unittest应用
待测试代码:class Person(object):
def init_(self,name):
self.name=name
def get_name(self):
"""获取姓名"""
return self.name
测试代码:
import unttest
import person
#继承
class PersonTestCase(unittestTestCase):
"”针对Person类的测试"""
#实例化
def srtUp(self):
selfp1=person.Person('zhang san')
selfp2=person.Person('li si')
#做断言
def Test get name(self)
"""获取人的名字"""
self.assertEqual(selfp1get_name()'zhang san')
self.assertEqual(self.p2.get name()'li si')
(2)运行测试集
def MyTestSuite():
"""构造测试集"""
suite=unittest.TestSuite()#生成测试集
#将测试用例加入到测试集中
suite.addTest(Person TestCase(test getname))
suite.addTest(CompayTestCase(test who_is boss))
retum suite
if name==' main '
#将要测试的函数放入
unittest.main(defaultTest='MyTestSuite')