martedì 21 febbraio 2012

Scamming i truffatori - cattura i truffatori call center virus in flagrante

Alcuni mesi fa ho ricevuto una telefonata, una sera che era chiaramente una chiamata truffa virus centro, sapete, quelli che voi chiamate di punto in bianco, vi dirà il vostro PC è stato infettato con ogni sorta di brutture e di offrire per risolvere il problema per voi ? O forse non sai, che naturalmente è il motivo per queste truffe sono in corso da parecchio tempo e sono ancora oggi molto attivi.
Per fortuna sapevo di queste cose in modo piuttosto sommariamente li respinge con un livello di disprezzo che normalmente si riservano solo per telemarketing, ho registrato l'audio della chiamata fino al punto in cui erano pronti a prendere il controllo del mio PC. Ho pubblicato l'intero episodio nel mio post intitolato Anatomia di una truffa centro di virus chiamata .
Ma sono stato lasciato chiedendo: che cosa stavano andando a fare per il mio PC, una volta preso il telecomando? Prova a spremere qualche soldo da me per "fissare" le cose? Installare la loro variante di "antivirus"? O semplicemente schiavizzare semplice il mio vecchio PC in essere parte di una botnet ? Così ho deciso di scoprirlo, consentendo loro di fare quello che volevano, mentre la registrazione audio e lo schermo in modo l'intera esperienza può essere condivisa.

Il setup

Per questo esercizio ho creato uno nuovo di zecca di prova Windows 7 installare su un disco rigido di riserva e fisicamente scollegato ogni altro disco dalla macchina. Poi ho staccato ogni altro dispositivo router wifi e disabili. Ora avevo una totalmente isolata, macchina usa e getta con niente di più di una connessione internet.
Ho installato abbastanza delle nozioni di base sulla macchina per farlo sembrare legittimo (Office, Acrobat Reader, Skype, ecc) e installato anche Microsoft Security Essentials . Ho quindi eseguito Windows Update più volte fino a quando ogni singolo service pack, patch e anche language pack è stato installato. La macchina era aggiornato e sicuro come potrebbe essere senza andare a prodotti di terze parti.
Poi ho aggiunto vari elementi per il desktop che potrebbe apparire un po 'allettante come "Passwords.txt" e "2011 Finances.xls". Non mi aspettavo di accedervi, ma ha aiutato la macchina sembra più legittimo.

La chiamata

Avevo chiesto in giro altre persone che hanno ricevuto chiamate truffa ed è stato dato un numero di telefono nel Regno Unito (01916451644) e uno in Australia (0872001644), sia avendo già stata lasciata dai truffatori. A Google veloce su uno di questi numeri dare risultati diversi con persone che si lamentano di essere freddo chiamato da truffatori. Entrambi questi numeri appaiono anche sul sito del Comantra .
Allora chi è Comantra? Sono una ditta indiana specializzata nel supporto del computer remoto che, sulla superficie di esso, è un business perfettamente legittimo. Problema è che ho una lunga storia di illudendo la gente e hanno avuto il loro status di Gold Partner revocato da Microsoft nel settembre dello scorso anno come risultato.
Il Comantra sito
Ho iniziato a Camtasia in esecuzione sulla macchina catturare sia lo schermo e il microfono poi ha dato loro una chiamata. Dopo un paio di false partenze, ho finito per l'acquisizione di una carta prepagata SIM per il mio telefono, come ogni volta che ho chiamato assolutamente che si ostinava a chiamare me back prima di fare qualcosa di brutto e non avevo intenzione di distribuire i miei dati personali. Infine, il Sabato pochi giorni fa, ho avuto fino a loro.
Ecco cosa è successo dopo:

Debriefing

Lasciate che darvi la versione ridotta qui nel caso in cui (giustamente) non ha voglia di sedersi attraverso l'intera cosa:
  1. L'operatore spiega che il PC è stato infettato da file dannosi.
  2. Lui mi ha indirizzato a Ammyy che poi utilizzato per ottenere il controllo remoto del mio PC.
  3. Ha iniziato il Visualizzatore eventi ha poi spiegato che gli errori e gli avvertimenti sono segni di gravi problemi con il PC.
  4. Poi mi ha fatto andare al sito Web di LogMeIn e tentò di avviare una connessione di supporto remoto , senza inserimento di un codice PIN. Naturalmente questo è fallito dopo il quale ha spiegato che è la "chiave fedeltà software" per il computer e la sua scadenza è la causa di tutti i "problemi".
  5. Successivamente, mi è stato assicurato più volte che non c'è assolutamente alcun costo coinvolti per lui per "fissare" la garanzia.
  6. Mi è stato poi detto che la garanzia del libero costerebbe un pagamento una tantum di $ 160. Annualmente.
  7. Dopo aver esplicitamente lo richiede, ha confermato il pagamento è per la chiave software per i miei Windows.
  8. Il PIN è stato dato a me che ho poi inserito nel sito Web di LogMeIn e ha dato loro telecomando per la mia macchina. Sempre (sopra la sessione Ammyy).
  9. L'operatore allora controllato il mio PC e scaricati Advanced SystemCare 3 , un legittimo (anche se due volte superata) del prodotto. Ha esplicitamente detto di non creare un punto di ripristino quando richiesto.
  10. SystemCare fatto numerosi reperti che l'operatore sfruttate per spiegare la cattiva salute del mio PC, compresa una spiegazione che i file frammentati indicato "Questi sono tutti i problemi hardware".
  11. Sono stato indirizzato a un modulo di registrazione in cui ho registrato con informazioni false.
  12. Mi è stato quindi trasmesso un gateway di pagamento in cui è stato richiesto informazioni relative alla carta di credito utilizzando un servizio fornito da indiana Bank of Baroda .
  13. A questo punto mi sono pulito e affrontò l'operatore. Numerosi scuse sono state fatte con il senso generale di esso che è che sono onesti, non mi hanno ingannato e stanno fornendo un servizio legittimo.
  14. Nel riesaminare il sistema il giorno successivo, mentre disconnesso da internet, i carichi software LogMeIn automaticamente e tenta di ristabilire una connessione. Sembra che vi è ora una capacità persistente per Comantra a prendere il controllo remoto della macchina.
L'intero processo è stato completamente disarticolato, confuso esperienza che coinvolge saltare tra una serie di servizi legittimi che sono stati utilizzati per creare paura, incertezza e dubbio. Anche i processi di registrazione Comantra poi di pagamento in realtà non sembrano essere correlati che ti fa chiedo se c'è qualsiasi servizio prestato a tutti dopo la consegna in contanti.
Una cosa che era un po 'interessante è stato l'utilizzo di due prodotti diversi telecomandi; Ammyy poi LogMeIn. La mia ipotesi migliore alla logica di questo è che Ammyy viene utilizzato in primo luogo perché si tratta di un servizio completamente gratuito che non richiede loro di divulgare qualsiasi tipo di chiave di abbonamento. Tuttavia, inoltre, non dare loro persistente telecomando oltre che la prima sessione quindi ho il sospetto che viene utilizzato per verificare che il "marchio" è disposto ad andare avanti con la truffa prima di divulgare qualcosa di valore per loro - il PIN LogMeIn.
Ora, voglio essere assolutamente cristallino che si tratta di una truffa fin dall'inizio. La fine della chiamata l'operatore scende nel difendere con veemenza la legittimità del servizio Comantra così ho intenzione di citare in particolare un certo numero di cose che ha detto durante la chiamata. Anche tenere a mente il pretesto con il quale vengono avviate queste telefonate, questo è un "cold-call" - quella fatta senza opting-in sulla premessa che sono stati allertati per l'attività dannose sul PC. Questa è chiaramente una menzogna.
Ecco alcune delle citazioni più significative provenienti da tutto l'incontro:
  1. "Il computer è accidentalmente caricato alcuni file indesiderati dannosi".
  2. "Il sistema operativo Windows e la parte software del computer si sta infetto".
  3. "Ogni volta che si va on-line o sfogliare internet, file spazzatura indesiderati vengono scaricati sul computer" e poi "L'applicazione vede tutta la parte della parte software del computer".
  4. Quando si visualizza il registro eventi: "Questo è gli errori e le avvertenze che sono nel computer, questi sono i file molto dannosi nel computer" seguito da "Questo è il motivo per il computer sta avendo un sacco di problemi".
  5. Quando è stato chiesto gli errori e gli avvisi nel registro eventi: "Questi sono i file danneggiati" e poi "Questo non funzionano correttamente nel computer" e "La parte software del computer sta diventando giorno dopo giorno corrotto".
  6. Alla domanda se Microsoft Security Essentials protegge il computer: "No, no, no, è un avviso di protezione che si apre".
  7. Quando ho suggerito potrei comprare un nuovo computer: "Se si acquista un nuovo computer, si dovrà affrontare tutti i problemi del nuovo computer, come pure".
  8. Quando si tenta di connettersi al servizio LogMeIn senza PIN: "Questo codice a sei cifre è la chiave lealtà software per il computer" e poi "Questo sei cifre del codice è scaduto dal computer, è per questo che il computer sta avendo un sacco di problemi", seguito da "Tutte le cartelle è stato danneggiato in quanto non c'è una chiave software ancora all'interno del computer, la tua parte software non funziona correttamente".
  9. Dopo aver detto che il PC è stato di 5 anni: "Hai due tipi di garanzia sul computer, uno è il software e un altro è l'hardware" e poi "Il software è per 4 anni e l'hardware è per 5 anni "e" Come la garanzia software è scaduto dal computer è per questo che si è verificato problemi ".
  10. Per spiegare i costi: "Da ora in poi non si deve pagare un solo centesimo per i servizi" quindi "Essi vi fornirà i servizi e il software assolutamente gratuito" e "Non hai niente da pagare un solo centesimo né per i servizi e non per il software "seguito da" Avrete tutti e tutto assolutamente gratuito ".
  11. Poco dopo il precedente punto: "Basta pagare 160 dollari all'anno".
  12. Quando è stato chiesto se posso pagare la garanzia direttamente a Microsoft: "No, perché siamo i fornitori di servizi del sistema operativo Windows".
  13. Per giustificare il loro servizio: "Ci prendiamo cura tutti gli utenti del sistema operativo Windows in tutto il mondo".
  14. Alla domanda su ciò che un file deframmentati era: "Questi sono tutti i problemi hardware".
  15. Quando gli chiesero perché Microsoft è sceso Comantra come partner: "La gente come te che sono sempre dietro, che pieni di sé incolpano la persona che risolvere il problema" e "Microsoft ci ha abbandonato a causa di voi, persone gentili".

Riassunto

Nonostante l'operatore protesta al contrario, si tratta di una truffa vera e propria nel vero senso della parola. Il governo australiano ha questo sul loro sito web Scam Guarda , è ampiamente riportato dalla stampa britannica ed è dilagante negli Stati Uniti pure. Dubito molto di questi tre paesi sono gli obiettivi fin troppo, ma sono semplicemente quelli che ho avuto rapporti da quando ho chiesto ad altre persone che vivono la stessa cosa.
Il modus operandi è familiare; caricare il Visualizzatore eventi per dimostrare tutti i "problemi", ottenere il controllo remoto e installare software di terze parti quindi addebitare al cliente per il servizio. Sapevo di meglio che farsi prendere per la prima volta, come sarebbe la maggior parte di voi leggendo questo su un blog di tecnologia.
Ma non è sempre così: le persone innocenti che sono tech-savvy non abbastanza per riconoscere la truffa vengono spesso catturati e spesso le persone che meno possono permettersi di parte con il denaro. La truffa ruota attorno trovare le vittime vulnerabili e facilmente utilizzabili per il beneficio o criminali dall'altra parte del mondo.
Ero un po 'la lingua-in-cheek nel video, ma questo è davvero una cosa seria. Ora che questo è stato postato sto contattando ogni parte innocente coinvolto nella truffa (Ammyy, LogMeIn, IObit e ovviamente Microsoft) e della sua presentazione al sito australiano Guarda Scam e AusCERT . Io aggiornare questo post con tutte le risposte di interesse che posso condividere.
Che cosa si può fare? Parlate con le persone intorno a voi che può cadere vittima di questa truffa, condividere questo post, renderli consapevoli dei rischi e, soprattutto, si impigliano in delinquenti che chiamano fuori dal nulla, nella speranza di separarsi dal vostro denaro duramente guadagnato.

lunedì 20 febbraio 2012

Aggiornamenti Microsoft SQL Azure e Office 365

Gli sviluppatori considerando un passaggio al cloud sarà allietato dalla notizia che Microsoft ha tagliato i prezzi di SQL Azure, e ha aggiunto ulteriori opzioni di archiviazione.
Inoltre, l'azienda continua ad armeggiare con Office 365, che offrono il deposito aggiornato e supporto.
La memorizzazione 100 MB piano offre una nuova opzione per i clienti Operazioni preliminari a SQL Azure, mentre il nuovo prezzo ridotto è finalizzato a fornire sconti ai clienti con i database di circa 5 GB o giù di lì che hanno bisogno di scala, secondo  un post sul blog  di Steve Martin , direttore generale per la pianificazione di business di Windows Azure.
Il nuovo listino prezzi a quanto pare è stata offerta all'inizio di questa settimana. Il post sul blog produce un grafico che mostra il calcolo di Microsoft di risparmi sui costi di storage come la dimensione di un database cresce quando ospitata su Windows Azure.
Nel mese di dicembre , Microsoft ha chiuso la dimensione del database al costo di 499,95 $ per il massimo di 150 GB di spazio possibile ai sensi del business Edition SQL Azure. Che il costo max è ora elencato da Martin a 225,99 dollari. Le riduzioni dei costi viene mostrato a Microsoft SQL Azure  pagina di riepilogo dei prezzi . Il costo è di 125,99 $ per 50 GB di storage, ma Microsoft carica $ 1 per ogni GB aggiuntivo di stoccaggio in seguito.
I prezzi più bassi seguono precedenti per SQL Azure riduzione dei costi realizzate  nel mese di giugno . Allora, Microsoft aveva tagliato alcuni costi associati trasferimenti di dati.
SQL Azure pricing è in realtà molto più complessa di un semplice calcolo dei costi di storage. In sostanza, le organizzazioni che utilizzano Windows Azure pagare per il tempo di calcolo, i dati di accesso allo storage e dei dati, nonché la larghezza di banda dei dati trasferiti all'interno e all'esterno della nube. Le varie fasi di cloud computing vengono al prezzo di  tariffe specifiche , di solito per GB. C'è anche un canone mensile rotolato nel costo complessivo se l'organizzazione utilizza SQL Azure. Microsoft offre un  calcolatore online pricing  in modo da formare una stima approssimativa dei costi di Windows Azure.
In altre parole Microsoft di servizi cloud news, Microsoft  ha annunciato miglioramenti  mese scorso ai cosiddetti lavoratori "chiosco" piani nella sua offerta Office 365. Le due offerte di cloud - Office 365 e SQL Azure, che attualmente sono considerati come piattaforme indipendenti. SQL Azure fa parte della piattaforma Windows Azure-as-a-service che offre il cloud computing, mentre Office 365 rappresenta multi-tenant servizi di hosting da Microsoft o dai suoi partners che forniscono software di Microsoft come servizi alle organizzazioni.
Lavoratori Kiosk sono la designazione di Microsoft per i dipendenti che non hanno una scrivania o che condividono un PC, come ad esempio i lavoratori di vendita al dettaglio. Microsoft offre una linea di piano Kiosk scambio e un piano di 365 Kiosk Office come parte di Office 365.
Entrambi i piani sono sempre aggiunto il supporto per Exchange ActiveSync, una tecnologia Microsoft che consente di sincronizzare i dispositivi mobili con Microsoft server di posta elettronica. Inoltre, entrambi i piani ottenere i loro e-mail capacità di archiviazione raddoppiata, passando da 500 MB a 1 GB. Il prezzo per entrambi i piani con questi miglioramenti rimarranno invariati rispettivamente al 2 dollari per utente al mese per il Piano Kiosk online di Exchange e 4 dollari per utente al mese per il piano 365 Kiosk Office.
In aggiunta, Microsoft offrirà una nuova "Exchange Online Archiving" add-on per i piani chiosco che consentiranno "hold legale e spazio di archiviazione illimitato" su detti conti. Il prezzo per questo add-on è un supplemento di $ 3,50 per utente al mese in cima al piano di carica chiosco.

venerdì 17 febbraio 2012

Effettuare test di unità in SQL Server un cittadino di prima classe con test SQL Red Gate

Che qui non scrivere unit test abbastanza? Voglio dire altro da me? In qualche modo, non importa quanto sia buona la mia copertura di test si sono caduto come sempre ci sono alcune parti mancanti. In parte questo è perché le pratiche di unit test tende ad essere uno di quei dibattiti religiosi e se si ascolta numero sufficiente di persone, è facile convincersi che si sta facendo è sbagliato.
Un settore che è sempre stato un po 'difficile sta sperimentando qualcosa con una dipendenza database. In parte, ciò è dovuto al fatto quei test spesso finiscono per essere dipendente stesso di dati che, naturalmente, può essere altamente volatile. Ma è anche filosoficamente contestata nel senso che se uno unit test è quello di valutare un'unità distinta di codice sul livello applicazione, allora probabilmente non dovrebbe avere dipendenze livello dati.
Il problema, naturalmente, è che stiamo ancora scrivendo un sacco di logica nel livello dati.ORM Fancy sono fantastici e io sostengo il loro utilizzo nella misura massima che è pratico, ma ci sono ancora un sacco di casi d'uso per la scrittura logica di business nel database e si vuole veramente che, per essere verificabile. Inoltre, naturalmente, c'è tutto questo altro universo alternativo di persone che lavorano completamente in database e non hanno accesso agli strumenti di test molti di noi utilizzano regolarmente all'interno di Visual Studio, chiamiamoli i "cittadini di seconda classe di unit test".
Questo è dove prova SQL Red Gate entra in gioco è interamente auto-contenute in SSMS e tutto ciò che fa è la logica di business test nel database, proprio come quei cugini di prima classe in Visual Studio. Ed è totalmente rocce.

Caso d'uso

Questo non è uno di quei arioso-fiabe situazioni ipotetiche, ho davvero bisogno di spostare una certa logica nel DB così ho potuto eseguire query su ASafaWeb indipendentemente dal livello applicazione. Quello che volevo fare era scrivere una piccola funzione di accertare se una voce nel registro qualcuno aveva suggerito di eseguire una scansione contro un sito Web ASP.NET o no. Ho già in questa logica nel mio app web e sembra che in questo modo:
public static bool ?


{
  / / Nessuna informazione a tutti dovrebbe (si spera) che il sito è configurato per 
  mantenere le intestazioni in silenzio. Potrebbe andare in entrambi i casi quindi dovremo tornare null.
   se (( string IsNullOrEmpty (server). | server.Contains ( "nginx" ))
    && (XPoweredBy == nullo | |! xPoweredBy.Any ())
    && string . IsNullOrEmpty (xAspNetVersion)
    && string . IsNullOrEmpty (xAspNetMvcVersion)
    && string . IsNullOrEmpty (aspNetVersion))
  {
    restituire null ;
  }

  return
     (! stringa . IsNullOrEmpty (server) && (server.Contains ( "Microsoft-IIS" )))
    | | (! XPoweredBy = null && xPoweredBy.Any (x => x == "ASP.NET" ))
    | |! string . IsNullOrEmpty (xAspNetVersion)
    | |! string . IsNullOrEmpty (xAspNetMvcVersion)
    | |! string IsNullOrEmpty (aspNetVersion).;
}
Questo è semplicemente guardando le intestazioni di risposta e fare un guesstimation se il sito è ASP.NET o meno. No info (nginx o un server che esegue quadri che supporta multipli) significa che non ho idea e restituisce null (la prima serie di condizioni), mentre qualsiasi cosa che suggerisce IIS o ASP.NET è presente restituisce true (la seconda serie di condizioni) . Ci sono poi una serie di prove scritte intorno a questo in un progetto di test Visual Studio.

Installazione e configurazione di test SQL

Il primo passo è quello di andare a mettere le mani su di test SQL Red Gate . E 'in anteprima 2, è attualmente libero, just do it! Una volta installato e al fuoco fino SSMS, nuove cose iniziano a comparire:
Configurazione di test SQL
Prenderemo il database di esempio semplicemente perché è un buon punto di riferimento di come fare le cose per bene:
Database di esempio installato con successo
E qui andiamo, il corridore di prova viene caricato con il database di esempio:
Il corridore di test SQL che mostra le prove del database di esempio
Io non entrerò nel merito di quello che sta succedendo qui, eseguirlo su voi stessi e dare un'occhiata dentro se siete interessati. Invece, voglio aggiungere il mio database ASafaWeb ed effettivamente iniziare a testare la mia TSQL. Quando aggiungo il database, ho un dialogo bello chiaro spiegando che cosa sta per accadere:
Aggiungendo il database ASafaWeb
Ora, questo probabilmente non sarà per tutti, posso immagine che alcune persone non essere felice con un mucchio di nuove procedure, funzioni e altri oggetti che compaiono nel loro database incontaminata. Ma naturalmente si può facilmente escludere quelli di distribuzione al momento della pubblicazione via SQL Compare come ho conosciuto da fare .
Un'ultima cosa - se prendiamo il valore predefinito e includono SQL Cop test di analisi statica, siamo in grado di validare alcuni buoni principi di progettazione DB. Suoni la pena:
Aggiunta Cop SQL per la suite di test
Run che, ecco quello che ora abbiamo:
Corretta installazione di test SQL in ASafaWeb
Quali sono quindi carica il DB Up in the runner test:
Le prove ASafaWeb caricati nella il corridore
Come potete vedere, abbiamo ottenuto solo prove di Cop SQL lì per ora, ma cerchiamo di dare loro un run in ogni caso:
Due prove di Cop SQL fallimento in ASafaWeb
Uh oh, questo significa che il mio SQL non va bene? Sto DB destinato alla dannazione eterna? Fortunatamente, se diamo uno sguardo ai messaggi dal canale di prova si scopre che niente di tutto questo è colpa mia:
I messaggi di prova dopo aver fallito SQL sul database ASafaWeb
Si scopre che Microsoft si sta portato a un'attività tramite EXEC sp_executesql anziché in un paio di procedure di appartenenza del loro provider memorizzati, che è apparentemente una brutta cosa . Poi abbiamo ELMAH essere scoperti usando ROWCOUNT SET che èapparentemente destinato ad essere obsoleto (quasi cinque anni e ancora funziona bene in SQL08 ...)
Comunque, niente di tutto questo è il mio codice e non ho intenzione di andare modificare il codice generato da altre parti. Andiamo sul bit interessante.

Scrivere i test

Il primo test di base che voglio veramente è effettivamente la prima condizione stavo testando da tale codice C # di precedenza, nessuna intestazione a tutti dovrebbe restituire nulla perché non abbiamo niente da confermare o negare la presenza di ASP.NET e IIS.Facciamo scrivono che nella "New Test" il dialogo:
Creazione di un nuovo dialogo di prova
Lavorare sulle precedenti nel database di esempio, ho intenzione di creare una classe dedicata test chiamato "AspNetSiteTests". In questo modo si crea uno schema con lo stesso nome e una volta che il test è stato creato, siamo tornati in buoni TSQL vecchio con un modello di Test pronti:
- Comments qui sono associati con il test.
- Per esempi di casi di test, vedere: http://tsqlt.org/user-guide/tsqlt-tutorial/~~V
ALTER PROCEDURE [AspNetSiteTests] . [test nessuna intestazione restituisce null]
 AS
BEGIN
  - Montare
  - Questa sezione è per il codice che imposta l'ambiente. Spesso
  - Contiene le chiamate a metodi come tSQLt.FakeTable e 
      tSQLt.SpyProcedure
  - Insieme con inserti di dati pertinenti.
  - Per ulteriori informazioni, vedere http://tsqlt.org/user-guide/isolating~~V - 
      dipendenze /
  
  - Atto
  - Eseguire il codice sotto test come una stored procedure, una funzione o una vista
  - E catturare i risultati in variabili o tabelle.
  
  - Assert
  - Confrontare i valori previsti ed effettivi, o tSQLt.Fail chiamata in un IF 
      dichiarazione.  
  - Disponibile afferma: tSQLt.AssertEquals, tSQLt.AssertEqualsString, 
      tSQLt.AssertEqualsTable
  - Per un elenco completo, vedere: http://tsqlt.org/user-guide/assertions/
  EXEC tSQLt . Fail 'TODO: Implementare questo test.'
  
END ;
Questo dovrebbe essere abbastanza familiare a coloro che hanno trascorso un po 'di tempo a scrivere i test prima, abbiamo il classico organizzare (o di "assemblare" in questo caso), atto, affermano modello e, naturalmente, è impostato a fallire perché non è ancora fare qualcosa.Naturalmente prima di poter fare qualsiasi cosa abbiamo bisogno di qualcosa per farlo funzionare in modo contro la facciamo solo creare una nuova funzione di valore scalare che non fa altro che dichiara i parametri corretti e resi nulli.
ALTER
)
RETURNS bit
AS
BEGIN
  EXEC tSQLt . Fail
   RETURN NULL
 END
Non sono convinto che chiamare tSQLt . Fail è davvero la cosa più intelligente da fare qui, ma ovviamente una sorta di eccezione deve essere gettato (in NotImplementedException pensiero. NET), e non è possibile RaiseError in una funzione. In ogni caso, è solo temporanea in modo che possiamo avere i nostri test scritto e francamente mi sono più interessato a far funzionare le cose più risucchiato in quel dibattito unit testing religiosa ho accennato in precedenza. Ecco il primo test semplice scriverò fare in modo che se tutto è null allora il risultato è nullo:
ALTER PROCEDURE [AspNetSiteTests] . [test nessuna intestazione restituisce null]
 AS
BEGIN

  - Montare
   DECLARE @ Server NVARCHAR ( 250 ) = NULL;
   DECLARE @ XAspNetVersion nvarchar ( 50 ) = NULL;
   DECLARE @ XAspNetMvcVersion nvarchar ( 50 ) = NULL;
   DECLARE @ XPoweredBy nvarchar ( 300 ) = NULL;
  
  --Act
  DECLARE @IsAspNetSite BIT;
  SET @IsAspNetSite = dbo.IsAspNetWebsite(@Server, @XAspNetVersion, 
      @XAspNetMvcVersion, @XPoweredBy);
  
  - Assert
   EXEC tSQLt . assertEquals NULL, @ IsAspNetSite ;
  
END ;
Ora possiamo andare avanti ed eseguire questo nel test runner:
Un test non avendo scritto e eseguito in test runner
Ottimo, questo è esattamente il tipo di flusso di lavoro ci si aspetterebbe quando si scrivono i test prima di nuovo in Visual Studio. Facciamo scrivere il resto di loro prima di poter realmente attuare la funzione di:
Otto le prove scritta e in mancanza di esecuzione in test runner
Ora possiamo andare avanti con l'effettiva implementazione del metodo e passare attraverso l'intero rosso, verde, ciclo di refactoring. Come ho iniziato ad attuare la funzione, mi salta al test runner, dare un vortice e guardare le prove a poco a poco iniziano a passare:
A poco a poco le prove che fanno passare il test runner
E naturalmente c'è qualche prolissità sul motivo per cui le cose vanno male, una volta drill-down dei messaggi di prova SQL:
La mancanza di test di uscita finestra di notifica
E questo è davvero - mantenere attuazione test e fare le cose verde, proprio come si farebbe indietro nel buon vecchio di Visual Studio.

Ma aspettate - c'è di più!

Mentre io non avevo bisogno di approfondire questa area solo per scrivere test contro una funzione semplice, Test SQL ha un supporto eccellente per affrontare la volatilità dei dati. Mi spiego: ci sono molti usi programmatici di TSQL che hanno una dipendenza dello stato dei dati. Ad esempio, una procedura stored viene eseguito su un tavolo e fa calcoli basati sui dati che è in là.
La sfida qui è in qualche modo simile a quello che abbiamo affrontato per molti anni durante la scrittura di unit test in Visual Studio in che quando le prove diventano dipendenti sullo stato dei dati si corre il rischio reale dei dati, non essere sempre in attesa che stato. Inoltre alla fine di dover pulire dopo voi stessi e cercando di ottenere tutti i dati in uno stato piacevole prevedibile prima di eseguire i test più. E 'un campo minato.
Il modo in cui SQL gestisce questo test è quello di consentire la creazione di tabelle falsi impalamento, che tutti gli attributi della cosa reale e consentono di pasticciare con essa il desiderio del vostro cuore senza modificare i dati persistenti. È quindi possibile affermare che la tabella corrisponde a un falso pre-stato definito previsto. Il modo migliore per ottenere la testa intorno a questo è quello di dare un'occhiata al video introduttivo Red Gate dove Grant Fritchey ti guida attraverso di essa (tabelle finte sono disponibili in tutto il marchio di 5 minuti):
Un'altra risorsa è il degno Simple-Talk articolo sulla base di test di prova di database di SQL Unità con TeamCity Continuous Integration . Sono stato un fan di integrazione degli strumenti di cancello rosso con TeamCity in passato, quindi questo si allinea molto al mio modo di pensare.

Riassunto

Come tutti gli altri bit cancello rosso, quello che mi piace di test SQL è che è estremamente pratico e si integra perfettamente nel vostro modo di lavorare durante la creazione di banche dati; è proprio lì in SSMS ed è molto facilmente accessibile. Non ci sono fumo e specchi o la magia in corso in background, è molto facile vedere esattamente come la cosa è mettere insieme e quello che sta facendo sotto le coperte.
Test di SQL ha un senso per tutti i motivi stessi che l'unità di prova i vostri progetti di Visual Studio fa, avere la certezza che il codice sta facendo ciò che si intende oggi e in futuro è assolutamente inestimabile. Inoltre è possibile eliminare il tutto in controllo del codice sorgente SQL e condividere i test con il team quindi escludere quando si genera script per il cambio e la pubblicazione via SQL Confronta. Nizza.
Io non sono molto sicuro della roadmap futura Red Gate per il prodotto, ma soprattutto mentre è gratis dico entrare e mettere le mani su di esso. Avevo tutto attivo e funzionante con i miei propri test al letteralmente circa 20 minuti - hanno a go!

mercoledì 15 febbraio 2012

Sicurezza, sicurezza, sicurezza! Aiutare la comunità LIDNUG costruire software più sicuro

Oggi ho avuto il piacere di trascorrere circa un'ora e mezza a parlare con Peter Shaw daLIDNUG sulla sicurezza, la sicurezza e, uh, sicurezza! Se l'. User Group LinkedIn NET è un po 'nuovo a voi, è il primo gruppo dedicato a LinkedIn. NET con un numero incredibile 47,387 membri al momento della scrittura.
Si tratta di una chiacchierata informale piuttosto che pieno di un'intervista aa e copre un po 'di la solita roba parlo come OWASP Top 10. Auguriamo che la conversazione: