1. CNAS认可与软件测试三级代码入门指南第一次接触CNAS认可的朋友可能会觉得这个体系很复杂。其实简单来说CNAS就是中国合格评定国家认可委员会的英文缩写相当于给实验室颁发的一张能力证书。而在软件测试领域CNAS把不同类型的软件分成了14个大类每个大类下面又细分为三级代码。这些代码就像是软件的身份证号能快速告诉我们这个软件属于什么类型、需要做哪些测试。举个例子你去医院看病医生会根据你的症状开不同的检查单。软件测试也是一样不同类型的软件需要检查的项目也不同。比如140104代表的是行业应用软件下面又细分为金融、医疗、通信等不同行业的软件。这就好比同样是体检运动员和程序员需要检查的项目可能完全不同。我在实际工作中发现很多测试团队刚开始都不太重视这个代码体系觉得只要把测试用例跑完就行。但后来踩过几次坑才发现如果不按CNAS的三级代码来分类测试很容易漏掉一些行业特有的测试点。比如测试金融软件时如果不知道要关注交易完整性测试可能会酿成大错。2. 三级代码在金融行业的实战应用2.1 金融行业软件(14010403)的特殊要求金融软件可能是所有行业应用软件中要求最严格的。我参与过一个银行核心系统的测试项目代码分类是14010403。这类软件最看重的就是钱不能算错所以测试重点要放在交易完整性确保每一笔转账、存取款的数据都100%准确高并发处理双十一、春节红包这些场景下系统不能崩审计追踪任何操作都要留痕方便事后追查我们当时设计测试用例时特别增加了突增负载测试在1秒内突然增加10倍交易量观察系统反应。这个测试场景就是金融行业特有的其他行业可能根本不需要考虑。2.2 测试工具链的选择针对金融软件的特点我们的测试工具链是这样配置的功能测试SeleniumTestNG做自动化回归性能测试JMeter模拟高并发安全测试Burp Suite检查漏洞数据校验自研的对账工具这里有个实用建议金融行业的测试环境一定要和生成环境高度一致。我们曾经因为测试环境的数据库版本比生产环境新导致一些性能问题在测试时没被发现。3. 医疗行业软件(14010406)的测试要点3.1 医疗软件的特殊性医疗软件的分类代码是14010406这类软件最怕的就是把人治坏。我测试过一个影像诊断系统发现医疗软件有三大致命测试点数据准确性CT值差一点可能就会误诊实时性急救场景下响应必须够快可靠性7×24小时不能宕机我们做过一个压力测试连续72小时不间断发送检查请求同时监控系统资源使用情况。这个测试帮医院发现了一个内存泄漏问题避免了一场可能发生的医疗事故。3.2 合规性测试不可忽视医疗软件还要特别注意合规性测试包括符合《医疗器械软件注册技术审查指导原则》满足YY/T 0664等医疗行业标准通过FDA或CE认证(如果要出口)这里有个血泪教训有次我们以为功能测试都通过了结果在注册申报时才发现缺少必要的风险分析文档导致项目延期三个月。所以现在做医疗软件测试我们第一件事就是对照法规要求制定检查清单。4. 通信行业软件(14010403)的测试挑战4.1 通信协议测试是核心通信行业软件同样使用14010403代码但测试重点完全不同。这类软件最核心的就是协议测试比如# 示例测试SIP协议的基本流程 def test_sip_protocol(): # 1. 注册测试 assert register_response 200 OK # 2. 呼叫建立测试 assert invite_response 180 Ringing # 3. 媒体流测试 assert rtp_stream_quality 0.95我们曾经遇到过一个奇葩问题某设备在实验室测试一切正常但到现场就是无法注册。后来发现是因为现场网络存在NAT穿越问题而实验室环境太干净没测出来。所以现在做通信软件测试一定会模拟各种复杂的网络环境。4.2 性能测试的独特指标通信软件的测试指标也很特别比如呼叫建立成功率(99.9%)切换时延(50ms)最大并发会话数这些指标在其他行业可能听都没听过。我们设计测试用例时会特别关注边界条件比如在信号强度极弱的情况下测试通话质量。5. 嵌入式软件(140105)的测试之道5.1 实时性测试是关键嵌入式软件的代码是140105这类软件通常运行在硬件设备上比如智能家居控制器。最大的特点就是反应要快所以测试重点包括中断响应时间必须控制在微秒级内存使用不能有泄漏功耗测试对电池供电设备特别重要我们测试过一个智能门锁系统发现如果同时收到蓝牙、密码、指纹三种开锁请求时系统会出现死锁。这就是典型的嵌入式系统并发问题。5.2 硬件在环测试(HIL)嵌入式软件测试最特别的是需要硬件配合。我们常用的方法有硬件在环测试(HIL)快速控制原型(RCP)故障注入测试这里有个省钱的技巧早期可以用树莓派模拟目标硬件等软件稳定后再上真实设备测试。这样能节省大量硬件调试时间。6. 工业软件(140106)的测试秘籍6.1 工控系统的特殊需求工业软件的代码是140106这类软件控制着生产线、电力系统等关键设施。测试时最关注确定性响应必须在规定时间内完成控制故障安全出现异常时要安全停机抗干扰能力工厂环境电磁干扰很强我们测试过一个PLC控制系统发现当电压波动超过±10%时某些IO口会出现误动作。后来增加了电源波动测试用例确保系统在±15%波动下仍能正常工作。6.2 测试环境的搭建技巧工业软件测试最难的是搭建真实的测试环境。我们的经验是先用仿真软件测试逻辑正确性然后用小型实验装置测试基本功能最后在真实产线上做验证测试这样分阶段测试既能保证质量又能控制成本。曾经有个项目为了省事直接上产线测试结果一个bug导致整条线停产损失比测试预算还高。7. 如何根据三级代码制定测试方案7.1 代码到测试用例的映射在实际项目中我们会建立三级代码与测试项的对应关系表三级代码必测项推荐工具通过标准14010403(金融)交易完整性JMeter误差0.01元14010406(医疗)数据准确性DICOM验证工具误差1HU14010501(嵌入式)实时性逻辑分析仪延迟1ms这个表格可以帮助测试团队快速确定测试重点避免遗漏关键测试项。7.2 测试资源的合理分配根据代码分类分配测试资源也很重要。我们的经验法则是金融软件40%功能测试30%性能测试30%安全测试医疗软件50%功能测试20%性能测试30%合规测试嵌入式软件30%功能测试40%实时性测试30%可靠性测试这样分配既能保证测试覆盖率又能提高测试效率。曾经有个项目在金融软件上花了太多时间做UI测试反而忽略了更重要的并发测试结果上线后出现严重的性能问题。
CNAS认可指南|软件测试三级代码的行业应用解析
1. CNAS认可与软件测试三级代码入门指南第一次接触CNAS认可的朋友可能会觉得这个体系很复杂。其实简单来说CNAS就是中国合格评定国家认可委员会的英文缩写相当于给实验室颁发的一张能力证书。而在软件测试领域CNAS把不同类型的软件分成了14个大类每个大类下面又细分为三级代码。这些代码就像是软件的身份证号能快速告诉我们这个软件属于什么类型、需要做哪些测试。举个例子你去医院看病医生会根据你的症状开不同的检查单。软件测试也是一样不同类型的软件需要检查的项目也不同。比如140104代表的是行业应用软件下面又细分为金融、医疗、通信等不同行业的软件。这就好比同样是体检运动员和程序员需要检查的项目可能完全不同。我在实际工作中发现很多测试团队刚开始都不太重视这个代码体系觉得只要把测试用例跑完就行。但后来踩过几次坑才发现如果不按CNAS的三级代码来分类测试很容易漏掉一些行业特有的测试点。比如测试金融软件时如果不知道要关注交易完整性测试可能会酿成大错。2. 三级代码在金融行业的实战应用2.1 金融行业软件(14010403)的特殊要求金融软件可能是所有行业应用软件中要求最严格的。我参与过一个银行核心系统的测试项目代码分类是14010403。这类软件最看重的就是钱不能算错所以测试重点要放在交易完整性确保每一笔转账、存取款的数据都100%准确高并发处理双十一、春节红包这些场景下系统不能崩审计追踪任何操作都要留痕方便事后追查我们当时设计测试用例时特别增加了突增负载测试在1秒内突然增加10倍交易量观察系统反应。这个测试场景就是金融行业特有的其他行业可能根本不需要考虑。2.2 测试工具链的选择针对金融软件的特点我们的测试工具链是这样配置的功能测试SeleniumTestNG做自动化回归性能测试JMeter模拟高并发安全测试Burp Suite检查漏洞数据校验自研的对账工具这里有个实用建议金融行业的测试环境一定要和生成环境高度一致。我们曾经因为测试环境的数据库版本比生产环境新导致一些性能问题在测试时没被发现。3. 医疗行业软件(14010406)的测试要点3.1 医疗软件的特殊性医疗软件的分类代码是14010406这类软件最怕的就是把人治坏。我测试过一个影像诊断系统发现医疗软件有三大致命测试点数据准确性CT值差一点可能就会误诊实时性急救场景下响应必须够快可靠性7×24小时不能宕机我们做过一个压力测试连续72小时不间断发送检查请求同时监控系统资源使用情况。这个测试帮医院发现了一个内存泄漏问题避免了一场可能发生的医疗事故。3.2 合规性测试不可忽视医疗软件还要特别注意合规性测试包括符合《医疗器械软件注册技术审查指导原则》满足YY/T 0664等医疗行业标准通过FDA或CE认证(如果要出口)这里有个血泪教训有次我们以为功能测试都通过了结果在注册申报时才发现缺少必要的风险分析文档导致项目延期三个月。所以现在做医疗软件测试我们第一件事就是对照法规要求制定检查清单。4. 通信行业软件(14010403)的测试挑战4.1 通信协议测试是核心通信行业软件同样使用14010403代码但测试重点完全不同。这类软件最核心的就是协议测试比如# 示例测试SIP协议的基本流程 def test_sip_protocol(): # 1. 注册测试 assert register_response 200 OK # 2. 呼叫建立测试 assert invite_response 180 Ringing # 3. 媒体流测试 assert rtp_stream_quality 0.95我们曾经遇到过一个奇葩问题某设备在实验室测试一切正常但到现场就是无法注册。后来发现是因为现场网络存在NAT穿越问题而实验室环境太干净没测出来。所以现在做通信软件测试一定会模拟各种复杂的网络环境。4.2 性能测试的独特指标通信软件的测试指标也很特别比如呼叫建立成功率(99.9%)切换时延(50ms)最大并发会话数这些指标在其他行业可能听都没听过。我们设计测试用例时会特别关注边界条件比如在信号强度极弱的情况下测试通话质量。5. 嵌入式软件(140105)的测试之道5.1 实时性测试是关键嵌入式软件的代码是140105这类软件通常运行在硬件设备上比如智能家居控制器。最大的特点就是反应要快所以测试重点包括中断响应时间必须控制在微秒级内存使用不能有泄漏功耗测试对电池供电设备特别重要我们测试过一个智能门锁系统发现如果同时收到蓝牙、密码、指纹三种开锁请求时系统会出现死锁。这就是典型的嵌入式系统并发问题。5.2 硬件在环测试(HIL)嵌入式软件测试最特别的是需要硬件配合。我们常用的方法有硬件在环测试(HIL)快速控制原型(RCP)故障注入测试这里有个省钱的技巧早期可以用树莓派模拟目标硬件等软件稳定后再上真实设备测试。这样能节省大量硬件调试时间。6. 工业软件(140106)的测试秘籍6.1 工控系统的特殊需求工业软件的代码是140106这类软件控制着生产线、电力系统等关键设施。测试时最关注确定性响应必须在规定时间内完成控制故障安全出现异常时要安全停机抗干扰能力工厂环境电磁干扰很强我们测试过一个PLC控制系统发现当电压波动超过±10%时某些IO口会出现误动作。后来增加了电源波动测试用例确保系统在±15%波动下仍能正常工作。6.2 测试环境的搭建技巧工业软件测试最难的是搭建真实的测试环境。我们的经验是先用仿真软件测试逻辑正确性然后用小型实验装置测试基本功能最后在真实产线上做验证测试这样分阶段测试既能保证质量又能控制成本。曾经有个项目为了省事直接上产线测试结果一个bug导致整条线停产损失比测试预算还高。7. 如何根据三级代码制定测试方案7.1 代码到测试用例的映射在实际项目中我们会建立三级代码与测试项的对应关系表三级代码必测项推荐工具通过标准14010403(金融)交易完整性JMeter误差0.01元14010406(医疗)数据准确性DICOM验证工具误差1HU14010501(嵌入式)实时性逻辑分析仪延迟1ms这个表格可以帮助测试团队快速确定测试重点避免遗漏关键测试项。7.2 测试资源的合理分配根据代码分类分配测试资源也很重要。我们的经验法则是金融软件40%功能测试30%性能测试30%安全测试医疗软件50%功能测试20%性能测试30%合规测试嵌入式软件30%功能测试40%实时性测试30%可靠性测试这样分配既能保证测试覆盖率又能提高测试效率。曾经有个项目在金融软件上花了太多时间做UI测试反而忽略了更重要的并发测试结果上线后出现严重的性能问题。