质量源于“设计” 做好临床试验方案设计才能事半功倍?

需求,是软件设计与测试的来源,但是需求除了终端用户的功能需求外,还有设计性需求、可靠性需求、可测试性需求、性能需求、安全性需求等
对于测试工作而言,所有的需求最后都需转化为测试需求。之后分析这些需求,并以此为根据来制定测试策略,合理选择各种测试技术。
比如是否需要自动化测试?是否需要性能测试?回归测试的范围是什么?是否需要专项测试?黑盒测试能否满足,要不要白盒测试或者黑盒测试?

50%以上的错误来源于需求的错误
项目组成员要积极参与需求评审,在评审会议上发现更多的需求缺陷。需求一旦确定,后期进行修改会给我们带来很大的成本。
测试需求的识别是后续的测试工作的基础,也是起点。测试需求主要来源于业务需求。我们在拿到需求后,要能识别测试需求,接着是分析此测试需求,最后确定并提取出测试对象。
提取出了测试对象后,接下来需要确定对每一对象如何进行测试,拿出具体的方法及措施出来,这便是测试策略制定的问题。

完整的需求文档包括以下内容:

  • 不断变化的需求需要及时的收集和整理
  • 没有需求文档时,需要测试人员不断的收集原始的客户需求
  • 应有质疑、坚持精神,当需求不明确时,我们可以将需求追溯到终端客户

1、快速理解需求的捷径:需求串讲
主要解决问题:需求理解不一致
方式:介绍需求背景、内容,进行答疑

需求要求注册时姓名可以输入16个字符 开发理解:16个字符,也就是英文16个,中文8个。 测试理解:无论英文、中文或其他语言都是16个。

需求文档也需要测试:正确性,必要性,完整性,一致性等
3、从设计需求中提取测试需求
软件需求是软件测试需求的主要来源,但不是全部来源,软件设计需求、软件概要设计、详细设计也都是测试需求的分析对象,是对测试需求的一种有力的补充。对于黑盒功能测试,几乎98%的需求都是来源于需求说明书,但有那么一小部分需求来自设计需求或概要设计、详细设计。也就那么小部分需求,如果我们没有意识到,就会给用户带来隐患。

在分析了需求之后,我们要确认测试业务涉及的测试类别

  • 兼容性测试(自动化测试)
一个全新上线的app需要做哪些测试? 一个增加了新功能的app需要做哪些测试? 一个只修改了页面广告的app需要做哪些测试?

测试策略需要确认测试使用的测试技术、测试过程的管理和控制、测试团队的组建
根据测试的需要,选择测试技术:
1、需不需要白盒测试?
2、自动化测试采用哪种工具?针对接口测试还是UI测试?
4、兼容性测试如何做?手工测试还是使用平台测试?

  • 在测试方案中,我们也需要确认测试过程如何管理,确认管理使用的工具和方法,比如:用例的管理方式、bug的管理方式和工具。
  • 在没有固定测试团队的企业,还需要考虑团队的组建,比如测试的人数,高中低级的配比,入场出厂时间等等。
  • 确认测试资源,需要多少资源?资源是否到位?
  • 根据不同的开发模式,确认测试计划,计划主要包括:什么人、什么时间、做什么事情。 测试的目标要明确,同时要确认跟踪机制。
  • 测试计划评审通过后,测试组需严格按计划中的时间完成各项任务。

测试方案主要包括以下内容:
1、测试范围:由需求分析而来
2、测试策略:包括针对不同部分的测试方法、测试用例
3、测试控制:包括测试流程,测试执行,缺陷跟踪
4、其他:环境、版本管理等

良好的管理是能在问题发生之前,就可以进行预警
分析风险的目的是及时的调整测试内容和测试方案

软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。
软件项目的风险主要来源于需求、技术、成本和进度。

  • 已经纳入基线的需求在继续变更
  • 需求定义不准确,进一步的定义会扩展项目范畴
  • 产品定义含混的部分比预期需要更多的时间
  • 在做需求中客户参与不够
  • 缺少有效的需求变化管理过程
  • 计划、资源和产品定义全凭客户或上层领导口头指令,并且不完全一致
  • 计划是优化的,是"最佳状态",但计划不现实,只能算是"期望状态"
  • 计划基于使用特定的小组成员,而那个特定的小组成员其实指望不上
  • 产品规模(代码行数、功能点、与前一产品规模的百分比)比估计的要大
  • 完成目标日期提前,但没有相应地调整产品范围或可用资源
  • 涉足不熟悉的产品领域,花费在设计和实现上的时间比预期的要多
  • 仅由管理层或市场人员进行技术决策,导致计划进度缓慢,计划时间延长
  • 低效的项目组结构降低生产率
  • 管理层审查决策的周期比预期的时间长
  • 预算削减,打乱项目计划
  • 管理层作出了打击项目组织积极性的决定
  • 缺乏必要的规范,导至工作失误与重复工作
  • 非技术的第三方的工作(预算批准、设备采购批准、法律方面的审查、安全保证等)时间比预期的延长
  • 作为先决条件的任务(如培训及其他项目)不能按时完成
  • 开发人员和管理层之间关系不佳,导致决策缓慢,影响全局
  • 缺乏激励措施,士气低下,降低了生产能力
  • 某些人员需要更多的时间适应还不熟悉的软件工具和环境
  • 项目后期加入新的开发人员,需进行培训并逐渐与现有成员沟通,从而使现有成员的工作效率降低
  • 由于项目组成员之间发生冲突,导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作
  • 不适应工作的成员没有调离项目组,影响了项目组其他成员的积极性
  • 没有找到项目急需的具有特定技能的人
  • 设施虽到位,但不配套,如没有电话、网线、办公用品等
  • 设施拥挤、杂乱或者破损
  • 开发工具不如期望的那样有效,开发人员需要时间创建工作环境或者切换新的工具
  • 新的开发工具的学习期比预期的长,内容繁多
  • 客户对于最后交付的产品不满意,要求重新设计和重做
  • 客户的意见未被采纳,造成产品最终无法满足用户要求,因而必须重做
  • 客户对规划、原型和规格的审核决策周期比预期的要长
  • 客户没有或不能参与规划、原型和规格阶段的审核,导致需求不稳定和产品生产周期的变更
  • 客户答复的时间(如回答或澄清与需求相关问题的时间)比预期长
  • 客户提供的组件质量欠佳,导致额外的测试、设计和集成工作,以及额外的客户关系管理工作
  • 矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作
  • 开发额外的不需要的功能(镀金),延长了计划进度
  • 严格要求与现有系统兼容,需要进行比预期更多的测试、设计和实现工作
  • 要求与其他系统或不受本项目组控制的系统相连,导致无法预料的设计、实现和测试工作
  • 在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题
  • 开发一种全新的模块将比预期花费更长的时间
  • 依赖正在开发中的技术将延长计划进度
  • 设计质量低下,导致重复设计;
  • 一些必要的功能无法使用现有的代码库实现,开发人员必须使用新的库或者自行开发新的功能
  • 代码库质量低下,导致需要进行额外的测试,修正错误,或重新制作
  • 过高估计了增强型工具对计划进度的节省
  • 分别开发的模块无法有效集成,需要重新设计或制作
  • 大量的纸面工作导致进程比预期的慢;
  • 前期的质量保证行为不真实,导致后期的重复工作
  • 太不正规(缺乏对软件开发策略和标准的遵循),导致沟通不足,质量欠佳,甚至需重新开发
  • 过于正规(教条地坚持软件开发策略和标准),导致过多耗时于无用的工作
  • 向管理层撰写进程报告占用开发人员的时间比预期的多
  • 风险管理粗心,导致未能发现重大的项目风险

根据项目特性制定适合项目的测试执行流程。可以在公司要求的流程上进行裁剪。
测试方案与用例的设计,是属于纯测试技术上的设计,但对于整个项目的测试过程,光有技术还不够,需要配合合适的测试流程,策划什么时候做什么事,达到什么要求。好的策划可以对项目的测试起到事半功倍的作用。

基于需求的测试方法是基本的测试方法,而需求的质量直接影响到后续的开发和测试工作。

  • 测试设计中进行需求测试
  • 需求测试要素:正确性,必要性,完整性,一致性

内部发布版本测试(冒烟测试)

  • 版本测试中信息传递:修改内容,风险分析,配置管理
  • 根据测试用例一条一条的执行
  • 确认回归的方式:手工、自动化
  • 回归测试是自动化测试最好的用处
  • 测试的枯燥性、重复性,引起的惰性
  • 交叉测试多在测试的后期,功能基本稳定时进行

在项目测试完毕后,需要出具测试报告

需求分析(需求串讲、验证、从设计需求中提取)--测试计划(测试方案、测试策略)-测试用例编写(需求测试)--测试执行(冒烟测试、系统测试、回归测试,交叉测试、自由测试)--测试报告(缺陷分析、测试结论)

先介绍一下我们公司,我司是一个公司规模近200,研发占一半的创业公司 Worktile。

我们的团队一起开始也只有不到10个人,基本都是研发出身。对于研发管理这块,多年来我们也总结了一些经验,在这里和大家分享一下。

作为致力于团队协作的公司,我们研究了很多国内和海外牛逼公司的研发模式和研发管理,例如OKR在谷歌、Facebook的应用,Uber的高效会议制度,阿里的绩效体系,腾讯的产品流程。除了在自身团队做了N次不同的试验和反思,我们也将很多不错的经验分享到客户和用户,所以本文试图将Worktile的研发管理全景图做一个概括性的阐述。

要谈清楚方法,就先了解清楚问题,研发管理之所以令人头疼,核心的问题无外乎以下一些方面。

任正非有句名言:钱分好了,管理的大部分问题就解决了。我对此深表同意,可问题是,怎么能分好钱确实非常考验能力、经验和智力的。研发之难,恰恰难在无法KPI化工作本身,所有那些试图KPI化工程师和码农的做法,最终结果都啼笑皆非、面目可憎、吃力不讨好。在我过去经历,还有客户实际的研发管理里,试图KPI化研发工作一直是不同团队努力的尝试,包括和不限于以下方式:

  • 加班,007就比996牛逼,996就比955更值得奖励

这些看起来可以数字化的指标,除了证明研发管理者通过偷懒的方式做绩效考核外,可以说毫无价值,也无法给公司和组织带来正向的激励。

离代码很近,离用户很远

另外一个现实且无奈的问题是,工程师和产品经理好像是在象牙塔里做产品和研发,和用户往往离得太远太远。这种问题带来的伤害可能远比其他事情来得更加彻底,但本质上这是研发规则上没有解决好的问题,导致工程师本身并没有任何的目标和动力去贴近用户和客户场景。

我们常常说要做用户喜欢的产品,但那些反人类智商的产品,往往是产品经理和工程师合谋的结果。如果说研发管理的目标是提高效能,那么首先同步研发团队朝着统一的目标,就是效能管理最重要的第一步。

因此,以什么样的制度去驱动研发抬起头来看客户场景,是一切研发管理的核心工作之一。

因为低头干活,所以往往研发团队的目标和业务团队的目标并不是一致的,研发体系和业务体系的跨部门战争,简直罄竹难书:

  • 业务认为,怎么这么多bug,一个小问题需要花这么久的时间才能修复
  • 而研发认为业务的智商不够用,这么好的产品就是无法准确传达给客户
  • 业务面对客户点头哈腰;而研发觉得客户是业务的客户,不是研发的客户
  • 业务对需求排期是12345;而研发对需求排期往往是54321
  • 业务给客户承诺就像谈恋爱,把星星摘下来也敢接着;研发认为你承诺的,你去写代码实现吧
  • 业务认为研发高工资吹着冷气,自己天天跑在外面晒太阳;研发认为,业务提成那么高,这产品是我做的,我咋没提成呢

这种剪不断、理还乱的关系,是很多公司的普遍现象。因为跨部门的不理解,必然带来团队之间的内耗,信息的折扣和效率低下自然产生。而更重要的影响是跨部门战争造成对客户服务与理解的偏差与推诿,没有任何公司或者团队能在一个不流畅的环境下成就对客户的100%满意度。

下面的研发全景图,是我们团队过去几年逐步形成的研发管理经验,其中主要包括以下内容:

  • 研发管理的的核心是构建一个开放、自学习、自驱动的组织文化和仪式感,这是打造高效研发团队最内核的基础。
  • 左边是工具和方法,主要包括:以OKR驱动的目标管理,基于Scrum的敏捷,和逐步完善的DevOps。
  • 右边是制度和规则,核心包含:研发团队的绩效和考核、跨部门合作、其他仪式感驱动的各种规则,尤其是构建自学习的环境与分享机制。

打造开放与竞合的组织架构和文化

一个组织要焕发活力、自驱动、使命必达的信念,开放而透明的文化是绩效管理的核武器。总体来说,不管你的方法和制度多么丰富和完善,无论如何也不可能驱动僵化、死板、没有活力的团队产生极其高效的价值。所以,我们在谈研发效能的时候,注意力总集中在别人家的团队是符合管理的,而忽略了团队激活的核心首先是塑造超强自由度、透明度和使命感的团队文化。

从效率这个角度去看,没有透明度的提效都是打折扣的,在一个组织里效率低下的首要原因并不是执行力,而是透明度。需要层层审批和报备的组织,设定层层关卡和信息围墙的团队,效率一定是非常低下的,单点的执行力提升并不改变整个团队的低效基因。

所以,打造开放与竞合的组织架构和文化,至关重要。

如何设计研发团队的组织架构,是个大大的思考题。我们团队经历过好几次不同的组织形态,也经常性的将研发团队,简单说,一个研发团队的角色主要是以下几类:

以什么样的组织方式调配以上资源,是个非常考验团队管理的事情,例如很多公司会将设计团队作为完全独立的部门,其他团队和项目按需调配设计资源,设计团队就像公司的乙方角色,通过资源调配来匹配执行。而另一种形态则是广泛存在于Facebook等互联网公司的方式,设计、产品经理、开发、测试组成短小精悍的特种部队,在研发团队中以小组形态组合,就像一个研发业务的接口一样,有清晰的输入和清晰的输出,有清晰的目标和清晰的边界。显然,打起仗来,特种部队方式的小组,从执行到目标都是超级强悍的,也同时能方便研发组织绩效考核的落地与激励。

特种部队的另一个好处是,每个小组的职能和目标是固定的,在产品研发大架构下执行一个精确的目标和单元。但小组成员可以转岗或者调配到其他小组,从而避免了研发人员的枯燥和无挑战的问题。

仪式感是团队管理的调味品,也是必需品,就像你吃饭离不开盐一样。研发团队管理者,例如CTO角色的人,需要有意识的在团队中设计有价值的仪式感,来增加团队磨合、默契与调味。好的仪式感,就像宗教仪式一样,能不断加强团队目标的执行、文化的塑造以及阶段的激励。

例如,我们自己团队就有很大仪式性的东西在执行:

  • 把重大版本发布变成研发团队的阶段激励
  • 管理层的固定One One访谈
  • 研发人员的每月访谈,同步到公司月报
  • 走出去,参加各种外部的技术大会

还有很多其他的仪式和规则,并且以上几乎每个规则都值得拿出来说道说道。

在Worktile团队,我们建立了组织架构之外的一些虚拟组织,虚拟组织的设计可以很好解决跨部门沟通与信息同步的问题,以用户体验委员会为例,将公司里研发、设计、产品、销售、客户成功的同事组成一个虚拟委员会。委员会主席本质上就是这个组织的秘书,通过定期的会议或者讨论,将解决用户体验上的问题作为核心目标来解决。委员会的茶话会,每次都能高效推进很多方面的事情:

  • 就用户体验的重大问题充分讨论,产品和研发从不同视角收听意见,销售和客户成功更多代表了来自一线用户的建议。
  • 促进跨部门的彼此理解,很多时候跨部门的战争,来自于互相的不理解和看不起。例如,我们在某次茶会中,就一个很久以来的核心需求做了讨论,销售端原本以为是一个简单的需求,结果讨论下来发现,这个简单需求其实在客户方也有非常不同的理解,完全推翻了产品已经草创的设计方案。反过来,销售同事也完全理解了为何产品方案是如此之难的原因。
  • 指定行动方案,快速驱动产品研发落实改进方案。用户体验委员会不是只讨论,更重要的是驱动行动方案,快速解决用户关心的体验问题。

同样在研发团队,我们通过技术委员会来实现跨研发团队的技术沟通、分享和技术选型。技术委员会保证了公司始终以科技驱动商业的基础不被稀释,汇聚团队中技术能力最强的圈子更加自驱动的投入技术贡献,主要的工作目标包括:

  • 研发岗的职级评审,技术委员会承担对技术能力的职级评估
  • 驱动公司技术进步和学习,例如组织黑客马拉松、技术分享、对外技术输出
  • 向市场和销售输出技术内容

研发下乡就是让研发走向客户,贴近客户需求,了解客户状况,然后回来完善产品以满足客户需求。Worktile本身是企业服务产品,客户需求在B端是及其复杂而多样的,憋在办公室是无法做出好产品的,所以需要从制度上驱动研发、产品和设计走向客户,而不是待在象牙塔。

研发下乡给了每个研发人员固定的指标,需要下乡到客户现场,所以销售和客户成功有了正当的理由要求研发同事完成指标,从另一个方面也加强了研发和业务部门的配合与协作,因为双方有了共同KPI的时候,大家绑在一起去做好一件事的动力就变得很强。

Polish Week是来自硅谷的流行文化,让研发团队在一个紧张迭代之后,有足够的时间可以休息一下,然后集中火力解决来自客户的需求或者问题,这种制度设计是非常高效的方法,可以短时间集中兵力解决遗留问题。

5年下来,我们技术团队每周分享已经正常进行了几百次,研发团队中的每个人都或多或少完成过对于所在部门的技术分享。新人来到团队,可以从过去数百次分享留下来的知识收获非常多的遗留知识。

(在研发体系共享的技术分享池)

另外一方面,worktile 的核心客户本来就是研发团队和工程师,市场维度需要研发人员能够不断共享有价值的技术内容,而技术分享机制恰恰提供了驱动工程师内容创作的土壤。每次内部分享的内容,其实完全可以继续优化成外部可以传播的内容,通过市场手段实现二次传播,同时也能够将团队中有活力和分享精神的小伙伴,推到前台去技术大会或者公司组织的技术分享大会分享。

源于业务关系,我们在N个不同的客户场景做过测试,就是把团队老大的目标在公司群里做个调研,比较打脸的现实是,99%的情况下老大想的目标和执行层理解的目标不是一回事,而且大部分时候差别都非常大。因此,回到在研发团队或者公司层执行OKR,本质上要解决的核心问题是:上下同欲。

俗话说,上下同欲者胜。如果目标这件事都没法达成一致,那么一切效能和效率的优化都是无稽之谈。因为你效率越高,但方向不对,可能偏离方向跑的更远,这不是很尴尬的事情么?

因此,我们可以通过了解OKR来在团队形成一个基本的能力,这就是战略同步和战略沟通,从而实现目标统一这件事。

(OKR是战略同步和战略沟通工具,服务于团队的使命和愿景)

1. 写好O和KR是执行OKR最难的第一步

在研发团队落地OKR,本身并不是一件特别容易的事情,Worktile 团队经历了将近3年的反复尝试才逐渐找到OKR执行的感觉,而所有难点中,在开始阶段是如何写好你的O(目标)和KR(关键结果)。

(一个典型的研发O和KR定义)

所以,开始阶段需要不断在形式上保证OKR的执行,这个是非常必要且需要坚持的事情,然后不断打磨每个周期里的O和KR的定义。下面是一些OKR模板大全,看看优秀团队OKR是如何定义的:

本文并不能将Scrum展开来讨论,因为这实在是一个大大大的话题,在我们团队实施Scrum有个大图景,其中包括了:敏捷开发、代码托管、持续集成、持续部署和持续发布。

下面这张图是以最基础的敏捷开发为例,从如何开会、如何定义团队规模、如何角色划分、如何迭代、如何测试,有非常专业且详细的管理细节。

不过,回到落地Scrum,同时又关注OKR的研发团队来说,Scrum + OKR是一个及其有价值的组合工具,我们自己的经验是以以下方式结合的:

  • 部门级OKR驱动 + 部门内敏捷驱动,OKR不到个人层级,但团队中的牛人可以OKR驱动

我们总体在公司层将OKR执行的单元控制在部门层级,并没有强制个人制定个人的O和KR,所以回到研发团队管理上,部门的大方向和大目标靠OKR保证。而部门内的迭代,Product Backlog和Sprint Backlog则以敏捷的周期和原则执行。

大方向由OKR保证,并且影响优先级,小迭代和任务计划,基于敏捷的原则执行,简直是完美配搭。

Worktile研发团队,通常会定期在每周五的上午有一个非常长的同步会议,核心内容是基于Scrum的一个Sprint迭代来复盘进度和异议解决,产品和研发在一起高效沟通当前版本的进度和问题,并快速协商解决方案,指定执行人。

而另一方面,我们会在例会中共同复盘和更新研发团队的目标树,投影将打出两个页面,一个是迭代的故事板,一个是OKR的目标树。

对研发团队而言,通过OKR例会和Scrum例会,很好的规范了每次会议的核心内容,效率自然非同反响。

(例行的Scrum会议,同时复盘迭代的进度和OKR目标达成)

每日15分钟的站立会议,是敏捷型研发团队的必修课。快速交流昨日进展和问题,快速商议解决,然后快速计划今天的工作安排,每天花很小的时间复盘,这才是小步迭代。

当然,如果对着Worktile的迭代故事板去讨论,就免去了在墙上贴一大堆的标签,感觉很爽很到位。

(每天发生的短小精悍的站立会议)

执行OKR,一些坑是初次体验的团队常常犯的问题,总结下来主要是以下方面:

  • HR负责,而不是团队老大

OKR不是灵丹妙药,更像一个二把刀大夫,你信就能行,你不信就不行。OKR提供了基本的方法论、仪式、流程和规则,能够为团队构建基本的目标同步框架,实际落地需要公司决策层有坚持走下去的决心,尝试一次不行,要再调整然后接着来。我们自己团队从开始接触到今天,OKR的尝试上已经是第三次才逐渐找到感觉。

工欲善其事必先利其器,这是真理。工具的核心价值,不是仅仅通过工具提高效率,更重要的是,利用工具能够为团队修好水渠。

研发团队本身的管理、绩效、工作流程有很多可以水渠化的事情,所以用一个好的工具能够最有效的帮助研发团队修好水渠,然后达成团队的目标。

当然,主要推荐的是我们自己在用,并且很有效的自家工具:Worktile。核心原因是对研发团队而言,Worktile能够帮助解决的主要是以下两个方面:

  • 基于敏捷的全流程项目管理

目前已经有几十万团队通过Worktile协同工作,其中研发团队占比是最高的,源于我们提供了对敏捷全流程的完整工具链支持,以及更好的产品体验:

  • 基于敏捷方法论的完整迭代、故事板、需求、任务和缺陷管理
  • 丰富的报表和数据统计,对研发决策管理一目了然
  • 打通研发和业务,更好的跨部门协作支持

落地敏捷,需要能够支撑全流程的简单工具,Worktile为你提供了所需的一切。

Worktile是国内首家将OKR落地到工具化的产品,为团队执行OKR提供了更好,更方便,更数据化的支持,主要包括:

  • OKR的执行全流程管理,从启动、周期、打分和评审
  • 基于公司、部门和个人分级的O和KR管理
  • 一个基于目标体系的目标树
  • 基于目标执行的自动化运营分析,同统计报表告知团队OKR执行和更新的情况
(在Worktile以更有效的方式定义OKR)

OKR是个简单的方法论,工具本身并不复杂,但自动化方式显然好过Excel共享方式带给团队的价值。这些都是Worktile已经修好的水渠,你只需将水引入即可。

最后,每个团队都是独特而与众不同的,所以经验和方法也不一定适合所有,只是希望一些可能的思路,能带给你的团队一些转折和启发。

也欢迎你贡献你们团队的经验,私信我,或者留言,咱们看看还有什么更好的办法,解放天下程序员。


时隔近一年,再回过头看现在的内容,越发感慨。而今,我们的研发管理工具PingCode也已发布。和我们计划的一样,它包含Agile(敏捷开发)、Testhub(测试管理)、Plan(项目集)、Wiki(知识库)四个子产品以及应用市场。覆盖项目、任务、需求、缺陷、迭代规划、测试、目标管理的研发管理全流程。

我们不认为自己做出来的就是最好的,但就像之前说的,我们正走在解放自己的路上。欢迎大家参与试用,欢迎大家贡献你们团队的经验,私信我,或者留言。让我们一起打造属于中国的“Jira”。

我要回帖

更多关于 临床试验方案应包括哪些内容 的文章

 

随机推荐