@startuml
hide footbox
actor User
activate User
note left of User
编写测试用例
end note
User --> RF: Run
deactivate User
activate RF
note left of RF
1、将RetrieveData
翻译为测试脚本
2、将Check记录为
CheckList
end note
RF --> PSTT: SendScript
deactivate RF
PSTT --> RF: ScriptRecieved
RF --> PSTT: Start
PSTT --> RF: Started
activate PSTT
note right of PSTT
1、加载所有的获取数据的规则与方法
2、开始执行脚本
3、执行过程中,按照获取数据的规则
与方法保存数据
4、汇总获取到的数据,形成测试报告
5、获取数据的规则与方法在PSTT中
定义,RF可以按照方法名称调用
end note
PSTT --> RF: Report
deactivate PSTT
activate RF
note left of RF
1、记录各个PSTT的
测试报告
2、按照CheckList
中的检查规则,检查
测试是否每个Check
项目是否为True
3、所有检查项为True则
测试通过
end note
RF --> User: Test Result(Pass/Fail/Error)
deactivate RF
@enduml
SEQUENCE DIAGRAM
4710709661270016
Funcionário:Interface:Controlador:ChamadoConsultar chamadoConsultar chamadoloop[Para cada chamado registrado]mostrartelaprincipal()Chamado registradoLista de ChamadosChamado selecionadofecharchamado(int id_chamado)Irá abrir um formulário com asinformações do chamado e com aopção de fecha-lo,isso não indicaque o chamado irá ser fechado.Informações do chamadoInformações do chamadoopt[Fechar chamado]Fechar chamado selecionadoFechar chamado selecionadofecharchamado(int id_chamado)Ok: BooleanO Chamado foi fechadoO chamado irá mudar de aba (de aberto para fechado)
SEQUENCE DIAGRAM
4713836934332416
Funcionário:Interface:Controlador:ChamadoConsultar chamadoConsultar chamadoloop[Para cada chamado registrado]mostrartelaprincipal()Chamado registradoLista de ChamadosChamado selecionadofecharchamado(int id_chamado)Irá abrir um formulário com asinformações do chamado e com aopção de fecha-lo,isso não indicaque o chamado irá ser fechado.Informações do chamadoInformações do chamadoopt[Fechar chamado]Fechar chamado selecionadoFechar chamado selecionadofecharchamado(int id_chamado)Ok: BooleanO Chamado foi fechadoO chamado irá mudar de aba (de aberto para fechado)
@startuml
hide footbox
actor "Funcionário"
activate "Funcionário"
"Funcionário" -> ":Interface" : Consultar chamado
activate ":Interface"
activate ":Controlador"
":Interface" -> ":Controlador" : Consultar chamado
activate ":Chamado"
loop Para cada chamado registrado
":Controlador" -> ":Chamado" : mostrartelaprincipal()
":Chamado" --> ":Controlador" : Chamado registrado
end
deactivate ":Chamado"
":Controlador" --> ":Interface" : Lista de Chamados
deactivate ":Controlador"
"Funcionário" -> ":Interface" : Chamado selecionado
activate ":Controlador"
":Controlador" -> ":Chamado" : fecharchamado(int id_chamado)
note right: Irá abrir um formulário com as\ninformações do chamado e com a \nopção de fecha-lo,isso não indica \nque o chamado irá ser fechado.
":Chamado" --> ":Controlador": Informações do chamado
":Controlador" -> ":Interface" : Informações do chamado
opt Fechar chamado
"Funcionário" -> ":Interface" : Fechar chamado selecionado
":Interface" -> ":Controlador" : Fechar chamado selecionado
":Controlador" -> ":Chamado" : fecharchamado(int id_chamado)
":Chamado" --> ":Controlador" : Ok: Boolean
":Controlador" -> ":Interface" : O Chamado foi fechado
note right: O chamado irá mudar de aba (de aberto para fechado)
end
deactivate ":Controlador"
deactivate ":Interface"
deactivate "Funcionário"
@enduml
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):b10-memmgr:b10-memmgr:ConfigurableClientList:ConfigurableClientList:CacheConfig:CacheConfig:ZoneTableSegment(Mapped):ZoneTableSegment(Mapped)existing:MemorySegment(Mapped)existing:MemorySegment(Mapped)new:MemorySegment(Mapped):ZoneTable:ZoneTablezw:ZoneWriterla:LoadActionzd_existing:ZoneDatazd_existing:ZoneDatazd_new:ZoneDatareload(zonename)getCachedZoneWriter(zone_name)isWritable()truegetLoadAction()<<construct>>la:LoadActionla<<construct>> (la)zw:ZoneWriterzwload()(funcall)<<construct>> via helperszd_new:ZoneDatazd_newinstall()addZone(zd_new)zd_existing (old data)cleanup()<<destroy>>command tomodules(datasrc_name,segmentparam)ack from allmodulesresetMemorySegment(datasrc_name,READ_WRITE,segmentparam)reset(READ_WRITE,segmentparam)<<destroy>><<construct>>new:MemorySegment(Mapped)(repeat thesame sequencefor loading to theother segment)getCachedZoneWriter(zone_name)
SEQUENCE DIAGRAM
4741445520982016
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):b10-memmgr:b10-memmgr:ConfigurableClientList:ConfigurableClientList:CacheConfig:CacheConfig:ZoneTableSegment(Mapped):ZoneTableSegment(Mapped)existing:MemorySegment(Mapped)existing:MemorySegment(Mapped)new:MemorySegment(Mapped):ZoneTable:ZoneTablezw:ZoneWriterla:LoadActionzd_existing:ZoneDatazd_existing:ZoneDatazd_new:ZoneDatareload(zonename)getCachedZoneWriter(zone_name)isWritable()truegetLoadAction()<<construct>>la:LoadActionla<<construct>> (la)zw:ZoneWriterzwload()(funcall)<<construct>> via helperszd_new:ZoneDatazd_newinstall()addZone(zd_new)zd_existing (old data)cleanup()<<destroy>>command tomodules(datasrc_name,segmentparam)ack from allmodulesresetMemorySegment(datasrc_name,READ_WRITE,segmentparam)reset(READ_WRITE,segmentparam)<<destroy>><<construct>>new:MemorySegment(Mapped)(repeat thesame sequencefor loading to theother segment)getCachedZoneWriter(zone_name)
@startuml
Foo -> Bar : "xx"
opt color=red
Foo -> Bar : "calculate"
else
Foo -> Bar : "calculate"
end
Foo -> Bar : "yy"
@enduml
SEQUENCE DIAGRAM
4762448179494912
Transact24ResellerResellerCardDirectorAPICardDirectorAPISend message (JSON POST request via HTTPS)Processing transactionReturn response (JSON via HTTPS)
SEQUENCE DIAGRAM
4763933432872960
Transact24ResellerResellerCardDirectorAPICardDirectorAPISend message (JSON POST request via HTTPS)Processing transactionReturn response (JSON via HTTPS)
@startuml
actor Reseller
box "Transact24"
Reseller -> CardDirectorAPI: Send message (JSON POST request via HTTPS)
CardDirectorAPI -> CardDirectorAPI: Processing transaction
end box
CardDirectorAPI --> Reseller: Return response (JSON via HTTPS)
@enduml
SEQUENCE DIAGRAM
4763933432872960
Mobile AppMobile AppUserUserReseller UIReseller UIDatabaseDatabasealt[For new user]1Visit the link provided to resetpassword2Let user reset password3Complete the reset password4Check if TOTP secretkey exists5TOTP secret key doesnot exist6Force user to setup Mobile App[For existing user]7Request to enabletwo-factor authentication (TFA)8Request user to inputpassword for authentication9Provide the correct password10Generate secretkey for TOTP11Store the secret keyfor that userloop[Until user input correct TOTP or cancel enable TFA]12Display the secret key,as QR Code13Wait for user to inputthe TOTP from Mobile Appalt[For Mobile App supports QR Code]14Decode the QR Code displayed[For Mobile App does not support QR Code]15Request to display the secretkey directly16Display the secret key17Input the secretkey directly18Store the secret key19Read the TOTPdisplayed in the app20Input the TOTP in app21Get the secret keyof that user22Validate the TOTPalt[If validation success]23Mark the TFAsetup complete24Display successful message[If validation not success]25Display failure message
SEQUENCE DIAGRAM
4775581921050624
Mobile AppMobile AppUserUserReseller UIReseller UIDatabaseDatabasealt[For new user]1Visit the link provided to resetpassword2Let user reset password3Complete the reset password4Check if TOTP secretkey exists5TOTP secret key doesnot exist6Force user to setup Mobile App[For existing user]7Request to enabletwo-factor authentication (TFA)8Request user to inputpassword for authentication9Provide the correct password10Generate secretkey for TOTP11Store the secret keyfor that userloop[Until user input correct TOTP or cancel enable TFA]12Display the secret key,as QR Code13Wait for user to inputthe TOTP from Mobile Appalt[For Mobile App supports QR Code]14Decode the QR Code displayed[For Mobile App does not support QR Code]15Request to display the secretkey directly16Display the secret key17Input the secretkey directly18Store the secret key19Read the TOTPdisplayed in the app20Input the TOTP in app21Get the secret keyof that user22Validate the TOTPalt[If validation success]23Mark the TFAsetup complete24Display successful message[If validation not success]25Display failure message
@startuml
autonumber
participant "Mobile App" as token
actor User as user
participant "Reseller UI" as reseller_ui
participant "Database" as db
alt For new user
user -> reseller_ui : Visit the link provided to reset \npassword
user <- reseller_ui : Let user reset password
user -> reseller_ui : Complete the reset password
reseller_ui -> db : Check if TOTP secret \n key exists
reseller_ui <- db : TOTP secret key does \n not exist
user <- reseller_ui : Force user to setup Mobile App
else For existing user
user -> reseller_ui : Request to enable \ntwo-factor authentication (TFA)
user <- reseller_ui : Request user to input \npassword for authentication
user -> reseller_ui : Provide the correct password
end
reseller_ui -> reseller_ui : Generate secret \nkey for TOTP
reseller_ui -> db : Store the secret key \nfor that user
loop Until user input correct TOTP or cancel enable TFA
user <- reseller_ui : Display the secret key, \nas QR Code
user <- reseller_ui : Wait for user to input \nthe TOTP from Mobile App
alt For Mobile App supports QR Code
token -> reseller_ui : Decode the QR Code displayed
else For Mobile App does not support QR Code
user -> reseller_ui : Request to display the secret \nkey directly
user <- reseller_ui : Display the secret key
user -> token : Input the secret \nkey directly
end
token -> token : Store the secret key
user -> token : Read the TOTP \ndisplayed in the app
user -> reseller_ui : Input the TOTP in app
reseller_ui -> db : Get the secret key \nof that user
reseller_ui -> reseller_ui : Validate the TOTP
alt If validation success
reseller_ui -> db : Mark the TFA \nsetup complete
user <- reseller_ui : Display successful message
else If validation not success
user <- reseller_ui : Display failure message
end
end
@enduml
@startuml
skinparam backgroundColor #EEEBDC
skinparam sequenceArrowColor DeepSkyBlue
skinparam sequenceParticipantBorderColor DeepSkyBlue
skinparam sequenceActorBorderColor DeepSkyBlue
skinparam sequenceLifeLineBorderColor blue
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoMoreWork
activate A
@enduml
@startuml
skinparam backgroundColor #EEEBDC
skinparam sequenceArrowColor DeepSkyBlue
skinparam sequenceParticipantBorderColor DeepSkyBlue
skinparam sequenceActorBorderColor DeepSkyBlue
skinparam sequenceLifeLineBorderColor blue
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
@enduml
@startuml
skinparam backgroundColor #EEEBDC
skinparam sequenceArrowColor DeepSkyBlue
skinparam sequenceParticipantBorderColor DeepSkyBlue
skinparam sequenceActorBorderColor DeepSkyBlue
skinparam sequenceLifeLineBorderColor blue
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request <u>Created</u>
deactivate B
A --> User: Done
deactivate A
@enduml
@startuml
hide footbox
Foo -> Bar : destroy
destroy Bar
@enduml
SEQUENCE DIAGRAM
4838322803310592
ActionAMQP BusAMQP BusWatcher ApplierWatcher ApplierWatcher DatabaseWatcher DatabaseActionNova APINova APIlaunch_action_plan(action_plan.uuid)action_plan.state=ONGOINGnotify action plan state = ONGOINGget_action_list(action_plan.uuid)actionsloop[for each action of the action flow]instantiate Action object with target resource idand input parametersActionvalidate_parameters()OKnotify action state = ONGOINGpreconditions()OKexecute()alt[action is "migrate instance"]migrate(instance_id, dest_host_id)OK[action is "disable hypervisor"]host-update(host_id, maintenance=true)OKOKaction.state=SUCCEEDEDnotify action state = SUCCEEDEDaction_plan.state=SUCCEEDEDnotify action plan state = SUCCEEDED
SEQUENCE DIAGRAM
4843739293941760
ActionAMQP BusAMQP BusWatcher ApplierWatcher ApplierWatcher DatabaseWatcher DatabaseActionNova APINova APIlaunch_action_plan(action_plan.uuid)action_plan.state=ONGOINGnotify action plan state = ONGOINGget_action_list(action_plan.uuid)actionsloop[for each action of the action flow]instantiate Action object with target resource idand input parametersActionvalidate_parameters()OKnotify action state = ONGOINGpreconditions()OKexecute()alt[action is "migrate instance"]migrate(instance_id, dest_host_id)OK[action is "disable hypervisor"]host-update(host_id, maintenance=true)OKOKaction.state=SUCCEEDEDnotify action state = SUCCEEDEDaction_plan.state=SUCCEEDEDnotify action plan state = SUCCEEDED